azure-pipelinesazure-devops-deploymentgroups

Azure DevOps 2019 deployment groups with multiple agents: how to limit running deployment just to one agent?


I'm running Azure DevOps Server 2019 on-premises and have created a deployment group for each server. I have multiple (30+) release definitions with similar stages (every release definition has, for example, a test stage with deployment group job targeting a test server). I'd like to run multiple agents per server and thus per deployment group, but it seems to me that each agent in the same deployment group pick up the same job - so the same job gets run once by every agent.

Setting up parallel deployment is not helping, as the agents try to run the same deployment at the same time, which leads to interesting errors with copy tasks. So I've set the "Targets to deploy to in parallel" in deployment group job to "One target at time". This works fine, but if I have two agents in the same deployment group, I'm deploying an app (deployed in one release definition) twice.

I'd like to have multiple agents in a deployment group in order to avoid long waits with deployments which are bound to happen with 30+ applications sharing an environment. Do the deployment groups work different from build agent pools for some reason? Or am I missing something really obvious here?

There are workarounds for this, like having multiple deployment groups with one agent each, deploying to the same server/environment.


Solution

  • i think this is by design. what you can do is assign tags to deployment agents and use tags to assign releases to specific agents.

    https://learn.microsoft.com/en-us/azure/devops/pipelines/release/deployment-groups/?view=azure-devops#create-a-deployment-group