The goal for CD is to deliver change to the production environment with highest velocity. To do successfully, however, feature delivery should be separated from feature activation. A given environment needs to be able to support many incompatible inactive features. Feature compatibility can then be managed at activation time.
The goal for microservices is to allow for more flexibility around component dependencies and cross-component call compatibility. In a monolith, component dependencies have to be satisfied at the language level in very limited ways by something that looks like a compiler. With microservices, component dependencies and call compatibility exists only at the data level, so multiple languages can be used and multiple data model evolution strategies can be practiced.
With that in mind:
Of course no one is perfect, but generally speaking, having cross-repo dependencies that will show up in the pipeline is the kind of pain habit that you should work your way out of rather than continue to suffer with.
Make only additive changes to upstream components, so that downstream isn't broken, and introduce new components when that isn't possible. Put the use of changes behind feature flags, so they can be deployed separately from being activated. Track the feature dependency graph, so that feature activation can be safely done for users in the right order.