15
votes

When create Deployment Group in Azure DevOps, it automatically create a Deployment Pool for you.

However, from Organisation Setting -> Deployment Pool panel, you can create new deployment pool without create Deployment Group.

What is the relationship between Deployment Group and Deployment Pool ? Like can one deployment group being linked to multiple deployment pools for example?

1
However, the Deployment pools do not seem to be exposed by the API, like the documentation indicated... docs.microsoft.com/en-us/rest/api/azure/devops/distributedtask/…David V. Corbin
But now (Azure DevOps 2019) Deployment Group does not create a Deployment PoolAhmadYo

1 Answers

14
votes

This is a good blog to explain you the difference between deployment group and deployment pool.

The relationship between Deployment Pools and Deployment Groups is similar to the relationship between Agent Pools and Agent Queues. A Deployment Pool exists at the account level and is the actual container of the deployment agents (targets), whereas the Deployment Group is a layer over it which makes these targets available to release definitions in a project

Earlier, there was a one-one mapping between a Deployment Pool and a Deployment Group i.e. each Deployment Group had a dedicated Deployment Pool, and therefore there was no need to expose the Deployment Pool concept to the user. But now that the deployment targets can be shared across projects, we have exposed Deployment Pools in the product.

A Deployment Pool can be shared with another project if the following three conditions are true:

  1. The user sharing the Deployment Pool is a “User” for the pool.

  2. The user sharing the Deployment Pool has permissions to create a Deployment Group in the project where it is being shared.

  3. The project does not already have a Deployment Group backed by the same pool.

Note that the tags set on the deployment targets are project scoped e.g. a deployment target might be tagged as “Web” in Project1 but might be tagged as “MiddleTier” in Project2.