Production-ready Azure DevOps pipeline templates for microservices architecture. Reduce deployment time from hours to minutes with automated testing, security scanning, and multi-environment deployments.
- 50+ microservices automated with consistent CI/CD
- 90% reduction in deployment time (hours β minutes)
- Zero-downtime deployments with blue-green strategy
- 100% security scan coverage with Trivy & SonarQube
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CI Pipeline β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Build ββββΆβ Test ββββΆβ Scan ββββΆβ Push β β
β β Code β β Unit β β Securityβ β Image β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CD Pipeline β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Dev ββββΆβ Staging ββββΆβ UAT ββββΆβ Prod β β
β β Deploy β β Deploy β β Deploy β β Deploy β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β β β β β
β βΌ βΌ βΌ βΌ β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Smoke β β Integrationβ β E2E β β Canary β β
β β Tests β β Tests β β Tests β β Release β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββ templates/
β βββ ci/
β β βββ build-dotnet.yml
β β βββ build-nodejs.yml
β β βββ build-python.yml
β β βββ build-java.yml
β βββ cd/
β β βββ deploy-aks.yml
β β βββ deploy-appservice.yml
β β βββ deploy-functions.yml
β βββ security/
β β βββ trivy-scan.yml
β β βββ sonarqube-scan.yml
β β βββ dependency-check.yml
β βββ common/
β βββ variables.yml
β βββ stages.yml
βββ examples/
β βββ microservice-dotnet/
β βββ microservice-nodejs/
β βββ microservice-python/
βββ scripts/
β βββ build/
β βββ deploy/
β βββ test/
βββ docs/
# azure-pipelines.yml
resources:
repositories:
- repository: templates
type: github
name: SanjaySundarMurthy/azure-devops-pipelines
ref: main
trigger:
branches:
include:
- main
- develop
stages:
- template: templates/ci/build-dotnet.yml@templates
parameters:
projectName: 'MyMicroservice'
dotnetVersion: '8.0'
- template: templates/cd/deploy-aks.yml@templates
parameters:
environment: 'dev'
aksCluster: 'aks-dev-cluster'Required Azure DevOps service connections:
- Azure Resource Manager (for AKS deployments)
- Docker Registry (for container images)
- SonarQube (for code quality)
# templates/ci/build-dotnet.yml
parameters:
- name: projectName
type: string
- name: dotnetVersion
type: string
default: '8.0'
- name: enableSonarQube
type: boolean
default: true
stages:
- stage: Build
jobs:
- job: BuildAndTest
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseDotNet@2
inputs:
version: '${{ parameters.dotnetVersion }}'
- script: dotnet restore
displayName: 'Restore dependencies'
- script: dotnet build --no-restore
displayName: 'Build project'
- script: dotnet test --no-build --collect:"XPlat Code Coverage"
displayName: 'Run tests'
- ${{ if eq(parameters.enableSonarQube, true) }}:
- template: ../security/sonarqube-scan.yml
- task: Docker@2
displayName: 'Build and push image'
inputs:
containerRegistry: 'ACR-Connection'
repository: '${{ parameters.projectName }}'
command: 'buildAndPush'
Dockerfile: '**/Dockerfile'
tags: |
$(Build.BuildId)
latest# templates/cd/deploy-aks.yml
parameters:
- name: environment
type: string
- name: aksCluster
type: string
stages:
- stage: Deploy_${{ parameters.environment }}
jobs:
- deployment: DeployToAKS
environment: ${{ parameters.environment }}
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
inputs:
action: 'deploy'
kubernetesServiceConnection: '${{ parameters.aksCluster }}'
manifests: |
$(Pipeline.Workspace)/manifests/*.yaml
containers: |
$(containerRegistry)/$(projectName):$(Build.BuildId)# templates/security/trivy-scan.yml
steps:
- script: |
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
trivy image --exit-code 1 --severity HIGH,CRITICAL $(imageName):$(tag)
displayName: 'Trivy Security Scan'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/trivy-results.xml'| Feature | Description |
|---|---|
| π Security Scanning | Trivy, SonarQube, OWASP Dependency Check |
| π§ͺ Testing | Unit, Integration, E2E test stages |
| π¦ Versioning | Semantic versioning with GitVersion |
| π Blue-Green Deploy | Zero-downtime deployments |
| π Metrics | Pipeline analytics and insights |
| π Notifications | Teams/Slack integration |
- Secrets stored in Azure Key Vault
- Image signing with Notary
- SBOM generation for all images
- CVE scanning before deployment
- Compliance gates for production
Contributions are welcome! Please read our Contributing Guide.
MIT License - see LICENSE file.
Sanjay S - Senior DevOps Engineer