I have a single repo that is segmented into a number of projects, each of which have a build that generates a Docker image. I've configured Azure devops to trigger on the proper paths for each project such that I get the right images build when their subdirectories change. One PR can trigger the build of one or multiple images.
Once all my images are built, I want to trigger an integration test job that starts all of the images that comprise my service. If the PR didn't change one it should run service:latest rather than the one(s) which were built. How can I create a test pipeline that doesn't start until each of the other pipelines finish and know which image version to use? For the image, I think I can just use something like the PR number or commit hash in the image tag and revert to service:latest if that image doesn't exist.
What's not clear is how to have the integration test job wait for all of the dependent (ideally parallelized) builds to finish. I considered the idea of a single pipeline with different build jobs, but this creates another problem of wanting to have independently triggered CDs for each build artifact output. I never want to re-deploy images that haven't changed and I want to be able to track the deployments of those which have changed so a single CD for all builds is a bad idea.