Azure DevOps Pipelines est la plateforme CI/CD intégrée à Azure. Pour les équipes déjà dans l’écosystème Microsoft, c’est la solution la plus naturelle — avec une intégration profonde avec AKS, Azure Container Registry et Azure Key Vault.
Structure d’un pipeline YAML Azure DevOps
# azure-pipelines.yml
trigger:
branches:
include: [main, release/*]
variables:
imageRepository: 'myapp'
containerRegistry: 'myregistry.azurecr.io'
tag: '$(Build.BuildId)'
stages:
- stage: Test
jobs:
- job: UnitTests
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.12'
- script: |
pip install -r requirements.txt
pytest tests/ --junitxml=junit.xml --cov=src --cov-report=xml
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit.xml'
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: 'coverage.xml'
- stage: Build
dependsOn: Test
jobs:
- job: BuildImage
steps:
- task: Docker@2
inputs:
command: buildAndPush
repository: $(imageRepository)
containerRegistry: myServiceConnection
tags: $(tag)
- stage: Deploy
dependsOn: Build
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: DeployProd
environment: production
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
inputs:
action: deploy
manifests: k8s/deployment.yaml
containers: $(containerRegistry)/$(imageRepository):$(tag)
Environments et approbations
Dans Azure DevOps, les Environments permettent de définir des règles d’approbation pour les déploiements :
- Approbateurs requis avant le déploiement
- Checks de sécurité (Azure Policy, intégration Sonar)
- Timeout si non approuvé
Intégration Azure Key Vault
- task: AzureKeyVault@2
inputs:
azureSubscription: 'MyAzureConnection'
KeyVaultName: 'myvault'
SecretsFilter: 'DB-PASSWORD,API-KEY'
RunAsPreJob: true
# Les secrets sont disponibles comme variables de pipeline
Notre formation Azure couvre Azure DevOps Pipelines avec des projets end-to-end sur AKS.