Azure DevOps Engineers design and implement CI/CD pipelines, infrastructure as code, and DevOps practices on Azure. They automate everything — builds, tests, deployments, infrastructure provisioning — and ensure reliable, repeatable, secure delivery of software to production.
Alternative Titles: DevOps Engineer, Cloud DevOps Engineer, Platform Engineer, CI/CD Engineer, Release Engineer
Typical Salary Range: $100,000 – $165,000 (US)
Azure DevOps Pipeline (YAML):
trigger:
branches:
include: [main]
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Build
jobs:
- job: Build
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
- task: DotNetCoreCLI@2
inputs:
command: 'test'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
- publish: $(Build.ArtifactStagingDirectory)
artifact: webapp
- stage: Deploy_Dev
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeployDev
environment: 'dev'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: webapp
- task: AzureWebApp@1
inputs:
azureSubscription: 'myServiceConnection'
appName: 'myapp-dev'
package: '$(Pipeline.Workspace)/webapp/**/*.zip'
- stage: Deploy_Prod
dependsOn: Deploy_Dev
condition: succeeded()
jobs:
- deployment: DeployProd
environment: 'prod'
strategy:
canary:
increments: [10, 50, 100]
preDeploy:
steps:
- script: echo "Canary deployment starting"
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: 'myServiceConnection'
appName: 'myapp-prod'
package: '$(Pipeline.Workspace)/webapp/**/*.zip'
GitHub Actions:
name: CI/CD
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.x'
- run: dotnet build
- run: dotnet test
- run: dotnet publish -c Release -o ./publish
- uses: actions/upload-artifact@v4
with:
name: webapp
path: ./publish
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: webapp
- uses: azure/webapps-deploy@v3
with:
app-name: myapp-prod
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
Branch Policies:
Deployment Strategies:
Bicep Template:
param location string = resourceGroup().location
param appName string
param environment string
var tags = {
Environment: environment
Application: appName
ManagedBy: 'bicep'
}
Terraform:
| Category | Services |
|---|---|
| CI/CD | Azure DevOps, GitHub Actions |
| IaC | Bicep, Terraform |
| Containers | ACR, AKS |
| Compute | App Service, Functions |
| Config | App Configuration, Key Vault |
| Security | Defender for DevOps, Managed Identity |
| Monitoring | Application Insights, Azure Monitor |
| Networking | VNet, Private Endpoints |
| Metric | Measure | Elite | High | Medium | Low |
|---|---|---|---|---|---|
| Deployment Frequency | How often code deploys | On demand | Weekly | Monthly | Yearly |
| Lead Time | Commit to production | <1 hour | <1 day | <1 week | >1 month |
| Failure Rate | % failed deployments | 0-15% | 16-30% | 31-45% | >45% |
| MTTR | Recovery time | <1 hour | <1 day | <1 week | >1 week |