Cloud can be tricky sometimes. Find out what scenarios we've ran into that are worth being mentioned and explained.
Managing Azure DevOps agents has always been a challenge, but with Managed DevOps Pools, the process has become significantly easier. This blog covers:
Image Type | Description | OS Support |
---|---|---|
Microsoft Azure Pipeline Images | Mirrors Microsoft-hosted agents with pre-installed software. | Windows Server, Ubuntu |
Azure Marketplace Images | Allows selecting VM images from the Azure Marketplace | Windows, Linux (Ubuntu, RHEL, SUSE, Debian) |
Azure Compute Gallery Images | Uses organization-managed images stored in an Azure Compute Gallery. | Windows, Linux |
For teams transitioning from Microsoft-hosted agents, the Azure Pipeline Images offer a similar experience.
az ad sp list --filter "displayname eq 'DevOpsInfrastructure'" --query "[0].id"
Managed DevOps Pools in Action
bicep
resource resDevCenter 'Microsoft.DevCenter/devcenters@2024-02-01' = {
name: 'my-dev-center'
location: 'westeurope'
}
resource resDevCenterProject 'Microsoft.DevCenter/projects@2024-02-01' = {
name: 'my-dev-center-project'
location: 'westeurope'
properties: {
devCenterId: resDevCenter.id
}
}
resource resManagedDevOpsPool 'Microsoft.DevOpsInfrastructure/pools@2024-04-04-preview' = {
name: 'my-managed-devops-pool'
location: 'westeurope'
properties: {
agentProfile: {
kind: 'Stateless'
}
devCenterProjectResourceId: resDevCenterProject.id
fabricProfile: {
sku: {
name: 'Standard_DS2_v2'
}
kind: 'Vmss'
images: [
{
wellKnownImageName: 'windows-2022/latest'
}
]
}
maximumConcurrency: 1
organizationProfile: {
kind: 'AzureDevOps'
organizations: [
{
url: 'https://dev.azure.com/my-org'
projects: [
'My-Project'
]
}
]
}
}
}
YAML
trigger:
- main
pool:
name: my-managed-devops-pool
steps:
- powershell: Write-Host "Hello from Managed DevOps Pools!"
displayName: 'Run Hello World'
During execution, the pipeline dynamically provisions an agent from the Managed DevOps Pool and starts the job.