Introduction
Continuous Integration and Continuous Deployment (CI/CD) are essential for modern software development. Azure DevOps provides powerful tools for building robust pipelines that can handle enterprise-scale requirements.
Pipeline Structure
Multi-Stage Pipeline
trigger:
branches:
include:
- main
- release/*
stages:
- stage: Build
jobs:
- job: BuildJob
pool:
vmImage: 'ubuntu-latest'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- stage: Test
dependsOn: Build
jobs:
- job: UnitTests
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'test'
- stage: DeployDev
dependsOn: Test
condition: succeeded()
jobs:
- deployment: DeployToDev
environment: 'development'
strategy:
runOnce:
deploy:
steps:
- script: echo Deploying to Dev
- stage: DeployProd
dependsOn: DeployDev
condition: succeeded()
jobs:
- deployment: DeployToProd
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- script: echo Deploying to Production
Security Scanning
Integrate Security Tools
- task: CredScan@3
inputs:
toolMajorVersion: 'V2'
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'SonarCloud'
organization: 'myorg'
scannerMode: 'MSBuild'
projectKey: 'myproject'
- task: WhiteSource@21
inputs:
cwd: '$(Build.SourcesDirectory)'
Environment Approvals
Configure manual approvals for production deployments through Azure DevOps environment settings.
Best Practices
- Use Templates: Create reusable YAML templates
- Secure Variables: Use Azure Key Vault for secrets
- Implement Gates: Add quality gates between stages
- Cache Dependencies: Speed up builds with caching
- Parallel Jobs: Run independent jobs in parallel
Conclusion
Well-designed CI/CD pipelines improve code quality, reduce deployment risks, and accelerate delivery. Follow these practices to build enterprise-grade pipelines.


