I seem to run around myself in circles with this problem. Either I'm doing something wrong, or Azure Devops simply does not support it.
For the simplest case (we've got many products and sub-products with various forms of complexity over this problem) we have a simple 2-part system, where one is a plugin to the other. They have a common, known, stable, versioned interface and have completely seperate builds, versioning, git repo and all that.
Where I get stuck, is where I'm trying to fit this together in a release pipeline.
The release triggers if any of the artifacts have changes in their respective master or release branches. The trick here is then, that I'd like to fit these pieces together based on the same release branch. However being based on triggers on the artifacts, only the latest avaiable artificat will be used.
A few words about our release cycle
When we develop, we develop to master, and everything that's on master when a set date occurs, is then included in the next release (stabilization if you will) branch, and after some extensive testing and perhaps a few corrections, this is what we ship.
If a serious flaw is then detected as it rolls out, it will be fixed on that branch, and a new version will be release from there.
Meanwhile, development on master continues un-interrupted, and is continously released internally for various testing, which triggers the same release build.
The release build - what it is supposed to be doing
The release build takes the two artifacts, and joins them together in an installer. So it simply takes the latest from both CI builds, produces an installer, and pushes that to a central storage where we can consume it for further automation.
The problem is the hotfixes - I would like for the release pipeline to stitch the artifacts correctly together based on the branch the artifacts are from - at the same time I would like for it to be a permanent solution, where my current workaround is to clone the release pipeline from release to release, and set it to target the newly created release/stabilization branch for both parts of the product.
How is it supposed to work?
Am I dreaming up a complex scenario here that is impossible, or should this be possible in Azure DevOps - if so, how? If not, how should this challenge be tackled instead. Other approaches to recommend when deploying software with decoupled plugins?