Hi,
We have a number of projects on different lifecycles, with dependencies with even more different lifecycles… In general, we have Legacy which is on a 3month cycle, and New which is on a 1 week cycle.
All these machines have dependencies on other things (often legacy things) and anything the legacy has a dependency on is on the legacy cycle.
The lifecycle is always int-test-prod, but New applications go from int to prod in 10 days, and legacy is 6 weeks.
The issue we have at the moment is that we can’t have a ‘deploy machine’ release that says this machine containing a New application also needs these Legacy dependencies, because then we have a lot of manual actions to make sure we don’t deploy a legacy component on a new machine out of sync with it’s legacy lifecycle, either making new releases or disabling steps in different environments.
We can’t deploy the legacy dependencies to new and legacy machines at the same time, because New machines tell the loadbalancers that there are about to update, and Legacy machines need to be manually removed from the LB. Also, new machines take about 5 minutes to install, legacy can take 2 days, due to the large amount of testing needed (new machines test automatically as part of the deployment)
On New releases, want to use the new Deploy Release step to trigger deployment of the legacy dependencies as part of the normal release. But we don’t want to specify a version, we just want the latest version deployed into the same environment (like the project triggers can). So if the Legacy machine is updated in TEST, the next New machine release will automatically update the legacy component too, but when the New goes to prod a week later, the dependency doesn’t update as it’s not in prod yet. We can in general deploy the legacy dependencies to new machines after they are deployed to legacy machines, but not before, as backward compatability is guaranteed, but not forward, due to eg. DB changes being applied on legacy schedule, Backend COM components needing to by synced etc.
We think we can do this through the API with some custom setup, but is it possible in the deploy release step? Otherwise we can write a custom step to use the API to work out if it needs to trigger the deployment or not.