Azure Pipelines CI/CD
Automate build and deployment with Azure Pipelines.
By EMEPublished: February 20, 2025
azure pipelinesci/cdautomationyaml
A Simple Analogy
Azure Pipelines is like an automated factory assembly line. Code goes in one end and is automatically tested, built, and deployed.
Why Azure Pipelines?
- Integration: Works with Azure DevOps
- Multi-platform: Build on Windows, Linux, Mac
- Free: 1800 minutes/month free for public repos
- YAML-based: Infrastructure as code
- Extensible: Marketplace tasks
Basic Pipeline
trigger:
- main
- develop
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseDotNet@2
inputs:
version: '8.0.x'
- task: DotNetCoreCLI@2
displayName: 'Restore packages'
inputs:
command: 'restore'
- task: DotNetCoreCLI@2
displayName: 'Build'
inputs:
command: 'build'
arguments: '--configuration Release'
- task: DotNetCoreCLI@2
displayName: 'Run tests'
inputs:
command: 'test'
arguments: '--configuration Release'
- task: DotNetCoreCLI@2
displayName: 'Publish'
inputs:
command: 'publish'
arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish artifacts'
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'app'
Multi-Stage Pipeline
stages:
- stage: Build
displayName: 'Build and Test'
jobs:
- job: BuildJob
steps:
- script: npm ci
- script: npm run lint
- script: npm run test
- stage: Deploy_Staging
displayName: 'Deploy to Staging'
dependsOn: Build
condition: succeeded()
jobs:
- deployment: Deploy
environment: 'staging'
strategy:
runOnce:
deploy:
- task: AzureAppServiceDeploy@0
inputs:
azureSubscription: 'MySubscription'
appName: 'myapp-staging'
- stage: Deploy_Production
displayName: 'Deploy to Production'
dependsOn: Deploy_Staging
condition: succeeded()
jobs:
- deployment: Deploy
environment: 'production'
strategy:
runOnce:
deploy:
- task: AzureAppServiceDeploy@0
inputs:
azureSubscription: 'MySubscription'
appName: 'myapp-prod'
Variables
variables:
buildConfiguration: 'Release'
artifactName: 'dist'
jobs:
- job: Build
steps:
- script: echo Building $(buildConfiguration)
- script: npm run build --configuration $(buildConfiguration)
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(System.DefaultWorkingDirectory)/$(artifactName)'
Best Practices
- Fail fast: Run quick checks first
- Cache dependencies: Speed up builds
- Parallel jobs: Run independent tasks together
- Manual gates: Require approval for production
- Notifications: Alert on failures
Related Concepts
- GitHub Actions
- GitLab CI
- Jenkins
- CloudBuild
Summary
Azure Pipelines automates build, test, and deployment. Use YAML to define multi-stage pipelines with different environments.