☁️ Azure DevOps — Suite ALM & CI/CD (Microsoft)
Azure DevOps = Boards (agile), Repos (Git), Pipelines (CI/CD), Artifacts (packages), Test Plans (tests), Wiki + Extensions marketplace. Disponible en Azure DevOps Services (cloud) et Azure DevOps Server (on-prem).
Vue d’ensemble
Définition, “ALM suite”, cloud vs on-prem, où ça brille (enterprise, Azure, compliance).
DevOpsALMMicrosoftArchitecture
Orga (Org/Project), permissions, service connections, storage artifacts, agents.
Org/ProjectRBACService Conn.Boards (Agile)
Backlog, epics/features/stories, sprints, kanban, queries, dashboards, work items.
AgileScrumKanbanRepos (Git)
Repos Git privés, branch policies, PR checks, code reviews, hooks, monorepo.
GitPRPoliciesPipelines (CI/CD)
YAML pipelines, stages/jobs/steps, templates, variables, approvals, environments.
YAMLCI/CDApprovalsAgents & Pools
Microsoft-hosted vs self-hosted agents, pools, capabilities, scaling, caches.
AgentsPoolsScaleArtifacts (Packages)
Feeds NuGet/npm/Maven/PyPI, versionning, promotion, provenance, supply chain.
PackagesFeedsSupply chainTest Plans & QA
Test cases, suites, runs, traçabilité du besoin au test, reporting qualité.
QATraceabilityReportingSécurité & Gouvernance
RBAC, service connections, secrets, approvals, audit, policies PR, conformité.
RBACSecretsAuditPerformance & FinOps
Parallélisme, minutes CI, cache, rationalisation pipelines, coûts agents.
ParallelCacheFinOpsBonnes pratiques
Templates YAML, environnements, gates, artefacts immuables, blue/green, rollback.
TemplatesGatesImmutableMigration
Mapping Jenkins/Bamboo → Azure DevOps, stratégie de bascule, checklist, pièges.
MigrationCI/CDChecklistExtensions & Marketplace
Extensions Azure DevOps/VS marketplace : tasks, connecteurs, scanners, dashboards.
MarketplaceTasksIntegrationsLiens & ressources
Pages officielles : produit, docs pipelines, schéma YAML, agents, pricing, server.
DocsPricingLearnAzure DevOps en 30 secondes
Azure DevOps est une suite “end-to-end” pour gérer le cycle de vie du logiciel : planification agile, code (Git), CI/CD, packages, tests, documentation. Très présent en contexte entreprise (RBAC, conformité, audit), et s’intègre naturellement à l’écosystème Azure/Microsoft.
Catégorisation IDEO-Lab
Diagramme “dev → plan → code → build → release”
Users / Stakeholders
└─ Boards: epics / features / stories / tasks
│
▼
Repos (Git) + PR policies + reviews
│ (trigger)
▼
Pipelines (YAML)
├─ stages / jobs / steps
├─ templates + variables
└─ approvals + environments
│
▼
Artifacts (packages) + test reports + releases
Ce qui fait la différence
- Suite intégrée : boards + repos + pipelines + artifacts + tests.
- Gouvernance : permissions, policies, audit, service connections.
- YAML pipelines + templates : industrialisation “as code”.
Les composants (Azure DevOps Services)
| Produit | Rôle | Exemples |
|---|---|---|
| Boards | Agile / work items | Backlog, sprints, kanban, queries, dashboards |
| Repos | Git + PR | Branch policies, reviewers, status checks, CODEOWNERS-like |
| Pipelines | CI/CD | YAML pipelines, environments, approvals, deployments |
| Artifacts | Package management | Feeds (npm, NuGet, Maven, PyPI), versionning |
| Test Plans | QA & traçabilité | Test cases, suites, runs, evidence |
| Wiki | Doc | Runbooks, conventions, onboarding |
Services (cloud) vs Server (on-prem)
Azure DevOps Services (cloud)
- Opérations simplifiées : SaaS géré.
- Scalabilité + updates automatiques.
- Bon pour démarrer vite, équipes distribuées.
Azure DevOps Server (on-prem)
- Hébergement interne (compliance, réseau fermé, exigences SI).
- Intégration enterprise (SSO, politiques internes, auditing).
- Pratique en environnements régulés.
Quand Azure DevOps est le meilleur choix ?
✅ Très pertinent si…
- Tu veux une suite complète (agile + git + CI/CD + packages + tests).
- Tu as un besoin de gouvernance (RBAC, audit, approvals, policies).
- Ton SI est orienté Microsoft/Azure (intégrations naturelles).
- Tu veux industrialiser avec YAML + templates (CI “as code”).
⚠️ Moins pertinent si…
- Tu veux un modèle “repo-centric minimal” et rien d’autre.
- Tu as déjà un stack complet (Jira + GitHub + Actions) et tu ne veux pas répliquer l’ALM.
Modèle mental
Organization
├─ Project A
│ ├─ Boards (work items)
│ ├─ Repos (git)
│ ├─ Pipelines (YAML)
│ ├─ Artifacts (feeds)
│ └─ Test Plans / Wiki
└─ Project B
Composants d’exécution CI/CD
- Pipelines exécutent des jobs sur des agents.
- Agent pool = ensemble de runners (MS-hosted ou self-hosted).
- Service connection = identité + permissions vers Azure/K8s/registry.
- Environment = cible de déploiement + approvals + checks.
trigger -> pipeline -> agent -> build/test -> publish artifacts
|
+-> deploy to Environment (approval gate)
RBAC (permissions) — l’armature enterprise
- Permissions au niveau org/projet/repos/pipelines/environments.
- Branch policies (PR) : build obligatoire, reviewers, checks.
- Approvals (environments) : séparation Dev vs Ops vs Security.
Service Connections — le point le plus sensible
Exemples:
- Azure Resource Manager (ARM) / Entra ID Service Principal
- Kubernetes service connection
- Docker registry / ACR
- GitHub connection (si repos externes)
- Scopes minimaux (least privilege).
- Rotation des secrets / certificats.
- Audit et ownership clair.
Environments — gates & contrôles
- Associer chaque environnement (DEV/STAGE/PROD) à des checks : approvals, validations, health checks.
- Conserver un historique “qui a approuvé quoi, quand”.
- Aligner avec ton modèle release : canary / blue-green / rolling.
Work items (exemple structuré)
Epic: "Platform Reliability"
├─ Feature: "CI/CD hardening"
│ ├─ User Story: "PR checks + quality gates"
│ │ ├─ Task: "Add ruff + pytest"
│ │ └─ Task: "Publish junit & coverage"
│ └─ User Story: "Deploy approvals in PROD"
└─ Feature: "Artifact immutability"
Pratiques qui marchent vraiment
- Backlog propre : épics (macro), features (livrables), stories (valeur), tasks (exécution).
- Definition of Done explicite + checklists (tests, docs, sécurité).
- Capacity/velocity réalistes + limites WIP sur le kanban.
- Templates d’items (ex : “New API endpoint” = checklist auto).
Dashboards & queries
| Widget | But | Lecture |
|---|---|---|
| Burndown | Suivi sprint | risque de dérive |
| Cumulative flow | WIP & goulots | blocages, surcharges |
| Lead time | Time-to-deliver | amélioration process |
Branch policies (quality by default)
Policy (main):
- build validation required (pipeline "fast-ci")
- minimum reviewers: 2
- no direct pushes
- linked work item required
- comment resolution required
Branching patterns
| Pattern | Quand | Avantage |
|---|---|---|
| Trunk-based | produit web | feedback rapide, CD plus simple |
| GitFlow | release cycle strict | séparation release/hotfix |
| Release branches | multi-versions | support LTS/patches |
Monorepo : ne pas déclencher “tout” tout le temps
- Pipelines “path filters” / triggers ciblés.
- CI rapide sur PR, CI exhaustive nightly.
- Cache dépendances + jobs parallèles.
Concepts clés
Pipeline YAML
- trigger (branches, PR)
- stages (Build, Test, Deploy)
- jobs (parallélisables)
- steps (tasks/scripts)
- variables & variable groups
- templates (réutilisables)
- environments (gates/approvals/checks)
Exemple YAML (Django + tests + artefacts)
trigger:
branches:
include:
- main
- feature/*
pool:
vmImage: 'ubuntu-latest' # ou pool self-hosted
variables:
PYTHON_VERSION: '3.12'
stages:
- stage: CI
jobs:
- job: tests
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(PYTHON_VERSION)'
- script: |
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
ruff check .
pytest -q --maxfail=1
displayName: "Lint + Unit tests"
- publish: $(System.DefaultWorkingDirectory)
artifact: "workspace"
- stage: Build
dependsOn: CI
jobs:
- job: package
steps:
- script: |
echo "Build docker image / wheel / zip here"
displayName: "Package"
Templates YAML (standardisation)
# templates/python-ci.yml (concept)
parameters:
pythonVersion: '3.12'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: $
- script: |
pip install -r requirements.txt
ruff check .
pytest -q
# azure-pipelines.yml
steps:
- template: templates/python-ci.yml
parameters:
pythonVersion: '3.12'
CD patterns (environments + approvals)
Pattern recommandé:
- build un artefact immuable (image Docker / package)
- déployer DEV auto
- smoke tests
- approval STAGE
- approval PROD
- rollback plan (image précédente)
- Blue/Green / Canary / Rolling selon ton infra.
- Les gates doivent être “automatisables” (health checks, tests, metrics).
Microsoft-hosted vs self-hosted
| Type | Avantages | Inconvénients |
|---|---|---|
| Microsoft-hosted | zéro ops, démarrage rapide | moins de contrôle, env éphémère, contraintes minutes/parallel |
| Self-hosted | contrôle total, caches persistants, outils/licences | ops à gérer (patching, scaling, sécurité) |
Self-hosted agents : cas d’usage “enterprise”
- Builds avec dépendances lourdes (SDKs, toolchains, licences).
- Accès réseau interne (registry privé, SI fermé).
- Besoin de caches persistants (npm/pip/maven, docker layers).
Stratégie:
- golden image (VM template)
- pool "fast-ci" + pool "heavy"
- autoscaling (si cloud) ou capacity planning (si on-prem)
Pools : isoler et router
| Pool | Usage | Specs |
|---|---|---|
| fast-ci | lint/tests | 4–8GB RAM, CPU standard |
| docker-build | images | 16–64GB RAM, SSD, Docker |
| windows | .NET/MSBuild | Windows toolchain |
Cache : le multiplicateur de performance
Caches typiques:
- pip/wheels
- npm/yarn
- maven/gradle
- docker layers (selon stratégie)
Risque:
- cache "sale" => builds non reproductibles
Feeds & formats
| Format | Usage | Exemple |
|---|---|---|
| npm | libs front | @org/ui-kit |
| NuGet | .NET | Company.Core |
| Maven | Java/Kotlin | com.company:platform |
| PyPI | Python | company-utils |
Artefacts immuables & promotion
CI -> produit un artefact versionné:
- package (wheel/jar/zip) ou image docker
Puis:
- déploiements DEV/STAGE/PROD consomment le même artefact
Supply chain (bonus “enterprise”)
- Scan dépendances avant publication.
- SBOM (CycloneDX/SPDX) pour audit.
- Principe : “build once, deploy many”.
Pourquoi c’est utile
- Traçabilité : work item ↔ test case ↔ run ↔ release.
- Vision QA centralisée (manuel + automatisé).
- Evidence/audit sur les releases sensibles.
Modèle
Test Plan
├─ Test Suite A (feature)
│ ├─ Test Case 1
│ └─ Test Case 2
└─ Test Suite B (regression)
Couplage CI
- Publier rapports JUnit + coverage depuis pipelines.
- Associer build number / release à un run de tests.
- Quality gates : bloquer promotion si seuil non atteint.
Règles d’or “enterprise-ready”
✅ PR required on main
✅ pipeline validation required
✅ approvals for prod environments
✅ service connections least-privilege
✅ separation of duties (Dev/Ops/Sec)
❌ pas de secrets dans repo
Secrets : modèle simple et robuste
- Préférer identities (service principal / managed identity) plutôt que tokens “humains”.
- Rotation et expiration systématiques.
- Masquage dans logs + scanning.
Audit
- Historique modifications pipelines/templates.
- Traçabilité approvals.
- Traçabilité releases (build number + git SHA).
KPIs utiles
| KPI | Lecture | Action |
|---|---|---|
| Queue time | Saturation agents | Augmenter pool / split pipeline |
| Duration | Feedback loop | Cache + parallélisme |
| Fail rate | Instabilité | Reproductibilité, isolation |
Optimisations (fort ROI)
- Pipeline “fast” sur PR : lint + unit tests uniquement.
- Nightly “full” : intégration, e2e, scans security.
- Cache deps et éviter redownload à chaque run.
- Paralléliser par jobs (tests shards).
FinOps
Le coût explose souvent à cause de:
- builds redondants
- pipelines trop lourds sur PR
- manque de cache
- agents sous-dimensionnés (lent = cher)
Top 10 (pratiques “solides”)
- PR policies sur main (no direct push).
- Build validation obligatoire sur PR.
- Templates YAML pour standardiser.
- Pipeline fast vs pipeline full.
- Artefacts immuables (build once deploy many).
- Environments + approvals en prod.
- Secrets externalisés / rotation.
- Cache dépendances.
- Observabilité : reports tests/coverage.
- Rollback testé (pas un paragraphe doc).
Gates (quality gates) — exemples
| Gate | Mesure | Seuil | But |
|---|---|---|---|
| Lint | ruff/eslint | 0 erreur | Qualité |
| Tests | junit | 100% pass | Stabilité |
| Coverage | coverage.xml | ≥ 80% | Régression |
| Security | scan deps/images | 0 critical | Risque |
Une ligne CV-ready
Mise en place d’une plateforme Azure DevOps (Boards/Repos/Pipelines/Artifacts) avec YAML templates,
branch policies PR, quality gates, agents/pools, et promotion d’artefacts immuables jusqu’à PROD via approvals.
Mapping conceptuel
| Jenkins | Bamboo | Azure DevOps | Notes |
|---|---|---|---|
| Jenkinsfile pipeline | Plan | YAML pipeline | stages/jobs/steps |
| Node/Label | Agents/Capabilities | Agent pools | MS-hosted ou self-hosted |
| Credentials plugin | Global vars | Service connections / variable groups | least privilege |
| Artifacts | Artifacts | Pipeline artifacts + Artifacts feeds | promotion immuable |
Stratégie safe
- Pilote sur 1–2 repos (non critique).
- Reproduire CI à l’identique (mêmes tests, mêmes outputs).
- Mettre templates YAML (standardisation).
- Branch policies PR (quality gates).
- Basculer progressivement les triggers / équipes.
Pièges fréquents
- Service connections trop permissives (risque majeur).
- Pipelines “monolithiques” → préférer stages/jobs + templates.
- Builds non déterministes (versions non figées).
- Absence de séparation DEV/STAGE/PROD via environments.
Checklist
| Item | OK ? | Notes |
|---|---|---|
| Branch policies (PR + build validation) | ⬜ | |
| Templates YAML + conventions | ⬜ | |
| Service connections least-privilege | ⬜ | |
| Environments + approvals prod | ⬜ | |
| Cache deps + pipeline “fast/full” | ⬜ |
Pourquoi c’est important
- Tu enrichis les pipelines via tasks (scans, SAST, SBOM, deploy k8s, cloud providers…)
- Tu connectes Azure DevOps à ton SI (observabilité, sécurité, CMDB, ITSM).
- Tu standardises des contrôles (gates) via extensions organisationnelles.
Exemples de catégories d’extensions
| Catégorie | But | Exemples |
|---|---|---|
| Security | scanner | SAST, dependency scan, container scan |
| Deploy | CD | Helm/Kubectl, cloud deploy, SSH/Ansible |
| Quality | reports | coverage, test reporting, code analysis |
| Ops | observability | alerting, dashboards, incidents |
Azure DevOps (Microsoft)
- Azure DevOps (produit)
- Azure DevOps Server (on-prem)
- Docs : Azure Pipelines
- YAML schema reference
- Agents (self-hosted & hosted)
- Pricing : Azure DevOps Services
- Pricing : Azure DevOps Server
- Marketplace extensions Azure DevOps
TL;DR
Azure DevOps = ALM suite Microsoft
Core:
- Boards (agile)
- Repos (git + PR policies)
- Pipelines (CI/CD YAML + templates + environments)
- Artifacts (package feeds)
- Test Plans (QA)
- Wiki + Extensions marketplace
Ops:
- Agents: Microsoft-hosted ou self-hosted
- Service connections (least privilege)
- Approvals & checks pour PROD
- Artefacts immuables + promotion
