WIKI
AZ-400 DevOps Engineer

01 · Processus et communication : flux de travail, traçabilité, métriques et collaboration

27 min de lecture Mis à jour le 21 octobre 2026
Sur cette page

Version : 1.1 · Date : 2026-10-22 · Domaine 1 de l'examen : Design and implement processes and communications (10 à 15 %)

En une phrase : avant les pipelines, AZ-400 vérifie que vous savez organiser le travail (GitHub Flow, Azure Boards, GitHub Issues et Projects), relier chaque changement à son besoin (AB#, section Development), mesurer le flux (lead time, cycle time, DORA) et faire circuler l'information (wikis, release notes, webhooks, Microsoft Teams).

Azure DevOps et GitHub : deux plateformes qui se combinent

Ce que l'examen demande#

Texte officiel du guide d'étude AZ-400 (compétences au 27 juillet 2026) :

# Compétence mesurée (guide officiel, en anglais) Section
1 Design and implement a structure for the flow of work, including GitHub Flow 2.1
2 Design and implement a strategy for feedback cycles, including notifications and GitHub Issues 2.2
3 Design and implement integration for tracking work, including GitHub projects, Azure Boards, and repositories 2.3
4 Design and implement source, bug, and quality traceability 2.4
5 Design and implement a dashboard, including flow of work, such as cycle times, time to recovery, and lead time 3.1
6 Design and implement appropriate metrics and queries for project planning 3.2
7 Design and implement appropriate metrics and queries for development 3.3
8 Design and implement appropriate metrics and queries for testing 3.4
9 Design and implement appropriate metrics and queries for security 3.5
10 Design and implement appropriate metrics and queries for delivery 3.6
11 Design and implement appropriate metrics and queries for operations 3.7
12 Document a project by configuring wikis and process diagrams, including Markdown and Mermaid syntax 4.1
13 Configure release documentation, including release notes and API documentation 4.2
14 Automate creation of documentation from Git history 4.3
15 Configure integration by using webhooks 4.4
16 Configure integration between Azure Boards and GitHub repositories 4.5
17 Configure integration between GitHub or Azure DevOps and Microsoft Teams 4.6

1. Azure DevOps et GitHub : qui fait quoi#

L'examen mélange en permanence les deux plateformes. Il faut savoir où vit chaque fonction et comment les relier.

Besoin Azure DevOps GitHub
Planifier, suivre le travail Azure Boards : work items, backlogs, boards, sprints, Delivery Plans GitHub Issues et GitHub Projects (tables, boards, roadmaps)
Héberger le code Azure Repos (Git), branch policies Repositories, branch protection rules, rulesets
CI/CD Azure Pipelines (YAML, classic), environments GitHub Actions, environments
Paquets Azure Artifacts (feeds, upstream sources) GitHub Packages
Tests manuels et exploratoires Azure Test Plans (pas d'équivalent natif)
Sécurité du code GitHub Advanced Security for Azure DevOps GitHub Advanced Security (CodeQL, Dependabot, secret scanning)
Documentation Wiki (provisioned ou code wiki), dashboards Wiki, README, GitHub Pages, Discussions
Reporting Analytics (widgets, Analytics views, OData, Power BI) Insights, security overview, API

Les deux se combinent souvent : planifier dans Azure Boards, coder et automatiser dans GitHub. Les ponts officiels :

  • l'Azure Boards app pour GitHub : liens AB#, transitions d'état, section Development (§ 4.5) ;
  • Azure Pipelines sait construire un repository GitHub (service connection GitHub, GitHub App Azure Pipelines) et lier les work items aux builds ;
  • les apps Microsoft Teams d'Azure Boards, Pipelines et Repos (§ 4.6).

Bon à savoir : depuis 2025, l'accès Basic à Azure DevOps est inclus pour les utilisateurs GitHub Enterprise Cloud (avec Microsoft Entra, puis aussi en data residency) : détection automatique à la connexion, niveau d'accès GitHub Enterprise, aucun coût en plus. Test Plans n'est pas inclus (il faut Basic + Test Plans) ; GitHub Enterprise Server n'est pas détecté. Astuce : assigner Stakeholder à ces utilisateurs pour ne pas payer Basic avant leur première connexion.


2. Traçabilité et flux de travail#

2.1 Structurer le flux de travail#

GitHub Flow : une seule branche longue, main, toujours déployable

GitHub Flow, explicitement cité par l'examen, est le flux le plus simple :

  1. une issue décrit le besoin ;
  2. on crée une branche courte depuis main ;
  3. on pousse des commits fréquents ;
  4. on ouvre une pull request : revue, status checks (CI), discussions ;
  5. on merge dans main, protégée par des branch protection rules ou des rulesets ;
  6. main est toujours déployable ; on déploie depuis main (ou, variante, depuis la branche de la PR avant merge).

Les autres stratégies (trunk-based, feature branch, release branch, GitFlow) sont comparées au chapitre 02. Retenez ici que GitHub Flow convient au déploiement continu avec une seule version en production.

Dans Azure Boards, la structure du flux se règle par :

Élément Rôle
Process (Basic, Agile, Scrum, CMMI, ou process hérité personnalisé) Types de work items et leurs états
Backlog levels Epics → Features → User Stories / PBI / Issues → Tasks
Workflow states et state categories Proposed, In Progress, Resolved, Completed, Removed : ce sont les catégories qui alimentent lead time, cycle time et transitions AB#
Board : colonnes, WIP limits, swimlanes, split columns, Definition of Done Visualiser et limiter le travail en cours (Kanban)
Iterations et area paths Sprints et découpage par équipe

2.2 Les cycles de feedback#

Cycles de feedback : capter les signaux, les router, agir

Un cycle de feedback efficace capte un signal, le route vers la bonne personne et finit en élément de backlog.

  • GitHub Issues : point d'entrée du feedback utilisateur. Structurer avec des issue templates / issue forms (.github/ISSUE_TEMPLATE/), des labels, des assignees et des milestones ; Discussions pour les questions ouvertes.
  • Notifications :
    • Azure DevOps : abonnements personnels, d'équipe, de projet (Project settings > Notifications), filtrés par événement (build échoué, PR assignée, work item modifié) ;
    • GitHub : watch d'un repository, participation, @mention, CODEOWNERS qui demande automatiquement la revue au propriétaire du code.
  • Canaux d'équipe : Microsoft Teams ou Slack (§ 4.6), plutôt que des e-mails individuels.
  • Production : alertes Azure Monitor et Application Insights, qui peuvent créer un work item (chapitre 08).
  • Feedback des parties prenantes : l'extension de navigateur Test & Feedback (Edge, Chrome ; Firefox retiré le 30/11/2026) sert aux tests exploratoires et crée bugs ou tasks, y compris pour un utilisateur Stakeholder. Attention : sur Azure DevOps Services, l'action formelle Request feedback et la page Feedback requests ne sont plus disponibles (elles restent sur Azure DevOps Server 2022) ; on suit les retours par une requête sur les bugs et tasks créés.

Piège : plus de notifications ne veut pas dire plus de feedback. La bonne réponse d'examen cible le destinataire (CODEOWNERS, abonnement d'équipe, canal dédié) et l'action (création d'un work item).

2.3 Suivre le travail : GitHub Projects, Azure Boards et repositories#

GitHub Projects : vues table, board et roadmap, custom fields (itération, priorité, estimation), workflows intégrés (ajout automatique des issues d'un repo, passage à Done à la fermeture) et automatisation par GitHub Actions ou l'API GraphQL. Un projet peut regrouper des issues et PR de plusieurs repositories.

Azure Boards reste plus riche pour la gouvernance : process personnalisés, requêtes WIQL partagées, Delivery Plans, traçabilité vers builds et déploiements. Une architecture de référence Microsoft (Power Platform ALM) le justifie ainsi : Azure Boards currently provides stronger enterprise work item process modeling, shared query and WIQL based release scoping, and richer built-in development and deployment traceability.

Choix Quand
GitHub Issues + Projects Équipe entièrement sur GitHub, besoin simple, open source
Azure Boards + Azure Repos Tout dans Azure DevOps, process et reporting poussés
Azure Boards + GitHub repositories Gouvernance de projet dans Boards, code et CI dans GitHub : intégration Azure Boards app

Limites de l'intégration Boards ↔ GitHub :

  • un repository GitHub se connecte à une seule organisation et un seul projet Azure DevOps (sinon liens AB# imprévisibles) ;
  • 2 000 repositories par connexion (web et API) ;
  • seuls GitHub et Azure Repos sont intégrables (pas d'autre hébergeur Git) ;
  • on ne peut pas requêter les liens GitHub : utiliser External Link Count > 0.

2.4 La traçabilité du code, des bugs et de la qualité#

Traçabilité de bout en bout : du work item à la production, et retour

Depuis GitHub vers Azure Boards : la syntaxe AB#

AB#{ID} crée un lien quand il apparaît dans un message de commit, une description de pull request ou une description d'issue. Il ne crée pas de lien dans un commentaire ni dans le titre d'une PR.

Texte Effet
AB#123 Lien vers le work item 123, pas de changement d'état
Fixed AB#123 / fixes AB#123 Lien + transition vers la catégorie Resolved, sinon Completed
Closed AB#123 Lien + transition vers l'état Closed s'il existe
Fixes AB#123, AB#124 Lien vers les deux, seul le premier change d'état
Fixes AB#123, Fixes AB#124 Les deux changent d'état

Les transitions ne s'appliquent que lorsque la PR est mergée dans la branche par défaut. Plus généralement, {state} AB#{ID} (ex. Validate AB#1234) applique cet état s'il existe, sinon la catégorie du même nom ; un mot inconnu est ignoré. Une note de version de 2025 dit que Fixes mène à « Closed » : la page de référence (Resolved, sinon Completed) fait foi pour l'examen.

Depuis GitHub vers GitHub Issues : les mots-clés de fermeture (close, closes, fix, fixes, resolve, resolves…) suivis de #12 dans la description d'une PR ferment l'issue au merge dans la branche par défaut.

Les autres maillons :

  • section Development du work item : branches, commits, PR, builds liés ; on peut créer une branche GitHub depuis le work item, et le merge commit d'une PR est lié automatiquement ;
  • section Development de la PR GitHub : affiche les work items cités par AB# dans la description ;
  • pipeline YAML : option Automatically link work items included in this run, et lien Integrated in build sur les work items, y compris pour un repo GitHub ;
  • qualité : les résultats de tests des pipelines sont liés au run ; un test en échec peut donner un bug lié au work item ; Azure Test Plans relie requirements ↔ test cases ↔ test results (traçabilité des exigences).
sequenceDiagram
    participant Dev as Développeur
    participant GH as GitHub
    participant AB as Azure Boards
    participant AP as Azure Pipelines
    Dev->>GH: PR « Fixes AB#123 » (description)
    GH->>AB: lien PR ↔ work item 123 (Azure Boards app)
    AP->>GH: build de la PR, status check
    Dev->>GH: merge dans main
    GH->>AB: work item 123 → catégorie Resolved
    AP->>AB: lien Integrated in build sur le work item

3. Métriques et requêtes#

3.1 Le tableau de bord du flux : lead time, cycle time, time to recovery#

Lead time, cycle time et métriques DORA

Métrique Définition (Microsoft Learn) Où
Lead time Temps entre la création d'un work item et sa fermeture Widget Lead Time (Analytics)
Cycle time Temps entre le début du travail et la fermeture Widget Cycle Time (Analytics)
Time to recovery (MTTR) Temps pour rétablir le service après un incident Outil d'incident, Azure Monitor
Cumulative flow diagram Nombre d'éléments par colonne dans le temps : goulots, WIP Widget CFD

Le widget Lead Time / Cycle Time est un nuage de points (un point = un ou plusieurs work items terminés), avec la moyenne mobile et une bande d'écart type. La fenêtre de la moyenne mobile vaut 20 % du nombre de jours affichés, arrondi à l'impair inférieur (30 jours → 5 jours). Prérequis : accès Basic, Azure Boards activé, Analytics ; seuls les types de work items présents dans un backlog sont sélectionnables.

Les 4 métriques DORA (DevOps Research and Assessment), reprises par le Cloud Adoption Framework :

Débit Stabilité
Deployment frequency : déploiements en production par période Change fail rate : pourcentage de changements qui provoquent un échec
Lead time for changes : du changement à la production Time to restore service (MTTR) : rétablissement après incident

Lecture classique : lead time qui augmente avec un cycle time stable → le travail attend avant de commencer (backlog trop long, priorisation). Cycle time qui augmente → goulot pendant le travail (revues, tests, environnements).

3.2 Métriques et requêtes pour la planification#

Des métriques par domaine, et où les trouver

  • Velocity (travail livré par sprint), Sprint burndown, Burndown / Burnup (Analytics), Cumulative Flow.
  • Delivery Plans : vue calendrier de plusieurs équipes et de leurs dépendances.
  • Requêtes WIQL (Work Item Query Language), partageables, affichables par les widgets Query Tile et Query Results :
SELECT [System.Id], [System.Title], [System.State], [Microsoft.VSTS.Common.Priority]
FROM workitems
WHERE [System.TeamProject] = @project
  AND [System.WorkItemType] = 'Bug'
  AND [System.State] <> 'Closed'
  AND [System.CreatedDate] >= @Today - 30
ORDER BY [Microsoft.VSTS.Common.Priority]
# La même requête en Azure DevOps CLI
az boards query --wiql "SELECT [System.Id], [System.Title] FROM workitems WHERE [System.WorkItemType] = 'Bug' AND [System.State] <> 'Closed'"
  • Analytics pour aller plus loin :
Outil Pour
Analytics views Données de work items préfiltrées pour Power BI (pas les pipelines, pas de hiérarchie)
OData (https://analytics.dev.azure.com/{org}/{project}/_odata/v4.0-preview/…) Requêtes directes, y compris pipelines et tests
Power BI Rapports et tableaux de bord d'entreprise
Extension WIQL to OData Transformer une requête WIQL en OData

Exemple OData : lead time et cycle time des user stories terminées depuis le 1er juillet 2026 (propriétés LeadTimeDays et CycleTimeDays de l'entité WorkItems) :

https://analytics.dev.azure.com/{org}/{project}/_odata/v4.0-preview/WorkItems?
  $filter=WorkItemType eq 'User Story' and StateCategory eq 'Completed' and CompletedDate ge 2026-07-01Z
  &$select=WorkItemId,Title,LeadTimeDays,CycleTimeDays,CompletedDateSK

StateCategory eq 'Completed' est indispensable : Analytics ne calcule LeadTimeDays et CycleTimeDays que pour les work items terminés (requête tirée de l'exemple officiel Lead time and cycle time sample report).

3.3 Métriques pour le développement#

Métrique Source
PR ouvertes, durée avant revue et avant merge, taille des PR Widget Pull Request, GitHub Insights, API
Fréquence des commits, contributeurs GitHub Insights > Pulse / Contributors, widget Code Tile
Échecs de build sur les PR Status checks, pipeline analytics

Bonnes métriques : petites PR revues vite. Mauvaises métriques : lignes de code, nombre de commits par personne (elles encouragent les mauvais comportements).

3.4 Métriques pour les tests#

  • Test Analytics des pipelines : pass rate, test failures, tendance des durées, filtres par branche ou fichier de test.
  • Flaky tests : Project settings > Pipelines > Test management active la flaky test management (Azure DevOps Services seulement) : détection système (rerun dans la tâche VSTest ou rerun failed jobs) ou custom (API), puis option pour exclure les tests flaky du résumé afin qu'ils ne fassent pas échouer le pipeline (détail au chapitre 06).
  • Widget Test Results Trend (Advanced), rapports Power BI de l'entité TestResultsDaily.
  • Azure Test Plans : progression des plans de test, couverture des exigences.
  • Couverture de code : publiée par le pipeline (chapitre 03).

3.5 Métriques pour la sécurité#

  • GitHub Advanced Security (GitHub ou Azure DevOps) : alertes ouvertes par sévérité, délai de correction, secrets détectés, dépendances vulnérables (Dependabot) ; security overview au niveau organisation.
  • Microsoft Defender for Cloud, DevOps security : vue unifiée des résultats des repos GitHub, Azure DevOps et GitLab, et annotations de PR (voir SC-500 chapitre 10 et chapitre 07).
  • Indicateur utile : nombre de vulnérabilités critiques en production et âge moyen des alertes.

3.6 Métriques pour la livraison#

  • Deployment frequency et lead time for changes (DORA).
  • Pipeline analytics : rapports Pipeline pass rate (taux de réussite, tâches qui échouent le plus) et Pipeline duration.
  • Environments : historique des déploiements par environnement et par ressource, traçabilité commit → déploiement.

3.7 Métriques pour l'exploitation#

  • MTTR, change fail rate, disponibilité (SLA / SLO), nombre d'incidents, MTBF.
  • Sources : Azure Monitor, Application Insights, outil de gestion d'incidents. Le détail de l'instrumentation est au chapitre 08.
  • Le Cloud Adoption Framework recommande de mesurer peu de choses, avec une base de départ, et de privilégier les résultats (outcomes) aux activités (outputs).

4. Collaboration et communication#

4.1 Les wikis et les diagrammes Mermaid#

Documenter depuis Git : wikis, release notes et documentation d'API

Azure DevOps propose deux types de wiki, tous deux stockés dans Git :

Provisioned wiki (team project wiki) Published code as wiki (code wiki)
Création Un seul par projet, créé depuis l'interface Wiki > Publish code as wiki (ou az devops wiki create --type codewiki)
Repository Repo caché {ProjectName}.wiki, branche wikiMain Un dossier d'un de vos repos, sur la branche choisie
Édition Dans Wiki > Pages Dans Repos (ou Edit in Repos), par PR
Ordre des pages Géré automatiquement Fichier .order à maintenir
Versions Non Oui : jusqu'à 10 branches publiées par code wiki
Revenir en arrière Menu Revert Nouvelle PR
# Publier le dossier /docs du repo MyCodeRepo (branche main) comme wiki
az devops wiki create --name "Docs produit" --type codewiki --repository MyCodeRepo --mapped-path /docs --version main

Mermaid dans un wiki Azure DevOps (et dans les PR, les work items) :

  • deux syntaxes : le conteneur ::: mermaid … ::: et, depuis 2026, le bloc de code standard (trois backticks suivis de mermaid), comme sur GitHub ;
  • types pris en charge : sequence, gantt, flowchart, class, state, user journey, pie, requirement, gitGraph, ER, timeline ;
  • limites : le mot-clé flowchart n'est pas accepté, il faut écrire graph ; pas de flèche longue ---->, pas de liens vers ou depuis un subgraph, la plupart des balises HTML et Font Awesome non pris en charge.
::: mermaid
graph LR;
    A[Commit] --> B(Build) --> C{Tests OK ?}
    C -->|Oui| D[Déploiement]
    C -->|Non| E[Bug]
:::

Côté GitHub : le wiki du repo, les README, GitHub Pages, et Mermaid rendu nativement dans le Markdown.

4.2 Release notes et documentation d'API#

  • GitHub Releases : une release s'appuie sur un tag ; GitHub peut générer automatiquement les release notes (liste des PR mergées, contributeurs, lien vers le changelog complet). Le fichier .github/release.yml les classe par labels :
# .github/release.yml : catégories des release notes générées
changelog:
  exclude:
    labels: [skip-changelog]
  categories:
    - title: Nouveautés
      labels: [feature]
    - title: Corrections
      labels: [bug]
    - title: Autres changements
      labels: ["*"]
# Créer une release avec des notes générées
gh release create v1.4.0 --generate-notes
  • Azure DevOps : pas de release notes générées nativement ; on les produit dans le pipeline (§ 4.3) à partir de l'historique Git et des work items liés au run, puis on les publie dans le wiki, comme artefact ou en pièce jointe d'une release.
  • Documentation d'API : la spécification OpenAPI (anciennement Swagger) est générée depuis le code, puis publiée par le pipeline (Swagger UI, portail d'API, Azure API Management). Microsoft recommande de n'exposer l'UI interactive (Swagger UI, ReDoc) qu'en développement.

4.3 Générer la documentation depuis l'historique Git#

Principe : des messages de commit lisibles et structurés (par exemple Conventional Commits : feat:, fix:, docs:) donnent des release notes triées automatiquement.

# Azure Pipelines : release notes depuis le dernier tag
steps:
  - checkout: self
    fetchDepth: 0          # historique complet (désactive le shallow fetch)
    fetchTags: true        # les tags ne sont pas synchronisés par défaut sur les nouveaux pipelines
  - script: |
      PREV=$(git describe --tags --abbrev=0)
      echo "## Changements depuis $PREV" > release-notes.md
      git log --pretty=format:"- %s (%h)" "$PREV"..HEAD >> release-notes.md
    displayName: Générer les release notes depuis l'historique Git
  - publish: release-notes.md
    artifact: release-notes

Piège : dans beaucoup d'organisations, un pipeline créé depuis septembre 2022 (sprint 209) fait un clone superficiel (Shallow fetch, profondeur 1) et ne synchronise pas les tags (Sync tags désactivé). Sans fetchDepth: 0 et fetchTags: true, git describe ne trouve pas le tag précédent et les release notes restent vides. Une valeur dans le YAML l'emporte sur le réglage de l'interface.

Autres sources de documentation automatique : git log entre deux tags, liste des work items liés au run (API Azure DevOps), génération de la doc d'API à la compilation, README de modules générés par outil (par exemple Azure Verified Modules l'impose).

4.4 Les webhooks et service hooks#

Intégrations : webhooks, service hooks et Microsoft Teams

Azure DevOps service hooks (Project settings > Service hooks > Create subscription) : un événement (build terminé, code poussé, PR créée, work item modifié, déploiement terminé…) déclenche une action chez un consumer :

Consumer Action
Web Hooks POST JSON vers un endpoint HTTPS public
Microsoft Teams, Slack Message dans un canal
Azure Service Bus, Azure Storage queue Message dans une file ou un topic
Jenkins, Bamboo, MyGet Lancer un build
Datadog, Grafana, Trello, Zendesk… Événement, annotation, carte, commentaire
  • Droits : Project Collection Administrators ou Project Administrators.
  • HTTPS uniquement (HTTP enverrait en clair les en-têtes d'authentification) ; pas de cible localhost ni d'adresse spéciale ; derrière un VPN, autoriser les adresses IP d'Azure DevOps en entrée.
  • Bouton Test avant de finir ; le contenu envoyé se règle (Resource details to send, Messages to send).

GitHub webhooks (au niveau repository, organisation ou GitHub App) : choix des événements (push, pull_request, issues…), URL de payload, secret : GitHub signe chaque livraison avec l'en-tête X-Hub-Signature-256 (HMAC SHA-256), que le récepteur doit vérifier. Les livraisons récentes et leur réponse sont consultables et rejouables.

4.5 Connecter Azure Boards à des repositories GitHub#

  1. Dans Azure DevOps : Project settings > Boards > GitHub connections > Connect your GitHub account.
  2. Choisir l'authentification :
    • GitHub App (Azure Boards app) : recommandée, l'app agit à la place d'une personne ; nécessaire pour les status checks de PR et l'intégration GitHub Copilot ;
    • Personal access token : scopes classic repo, read:user, user:email, admin:repo_hook ; fonctionnalités limitées ;
    • OAuth (historique).
  3. Sélectionner les repositories (jusqu'à 2 000 par connexion), installer l'Azure Boards app côté GitHub si demandé.
  4. Si la liste des repos reste vide : la third-party application access policy de l'organisation GitHub bloque l'app ; un owner doit l'approuver (Settings > OAuth app policy).
  5. Utiliser AB# (§ 2.4), ajouter le badge de statut au README, visualiser les objets GitHub sur le board.

Automatisation : API REST GitHub Connections pour ajouter ou retirer des repos en masse.

4.6 Microsoft Teams#

Intégration Ce qu'elle fait
Azure Boards app for Teams Créer des work items par commande ou depuis un message, abonnements aux créations et mises à jour
Azure Pipelines app for Teams Abonnements aux builds, releases et approbations ; approuver un déploiement depuis le canal
Azure Repos app for Teams Abonnements aux commits et PR
Onglet Azure DevOps dans un canal Afficher un dashboard ou un board
GitHub app for Teams (@GitHub) Notifications d'un repository dans un canal, commandes qui agissent sur GitHub, aperçu des liens partagés

Contraintes : l'organisation Azure DevOps doit être dans le même tenant Microsoft Entra que Teams (même adresse e-mail ne suffit pas) ; créer un abonnement Azure DevOps dans Teams demande d'être Project Administrator ; les Office 365 Connectors de Teams sont retirés, remplacés par les apps ci-dessus ou Workflows (Power Automate). Azure DevOps Server passe par un service hook Teams.

flowchart TD
    A["Qui doit être informé ?"] --> B{"Équipe entière ?"}
    B -- Oui --> C["Canal Teams : app Azure Boards / Pipelines / Repos"]
    B -- Non --> D{"Propriétaire du code ?"}
    D -- Oui --> E["CODEOWNERS : revue demandée automatiquement"]
    D -- Non --> F{"Système externe ?"}
    F -- Oui --> G["Service hook / webhook HTTPS"]
    F -- Non --> H["Abonnement de notification personnel"]

5. Labs conseillés#

Organisation Azure DevOps gratuite (5 utilisateurs Basic inclus) et compte GitHub Free suffisent. Aucun coût Azure sauf le lab 5.

  1. Boards ↔ GitHub : connecter un projet Azure DevOps à un repo GitHub par l'Azure Boards app ; créer une user story, ouvrir une PR dont la description contient Fixes AB#{id}, merger. Attendu : lien dans la section Development et passage à Resolved / Completed. Refaire avec AB# dans le titre : aucun lien.
  2. Dashboard de flux : sur un board Kanban avec quelques éléments déplacés, ajouter les widgets Lead Time, Cycle Time, Cumulative Flow et un Query Tile sur la requête WIQL du § 3.2. Attendu : nuage de points avec moyenne mobile.
  3. Code wiki + Mermaid : publier un dossier docs/ comme code wiki, ajouter un .order et un diagramme graph LR, puis tester le mot-clé flowchart. Attendu : graph s'affiche, flowchart non.
  4. Release notes automatiques : dans GitHub, ajouter .github/release.yml, étiqueter deux PR, créer une release avec gh release create v0.1.0 --generate-notes. Attendu : notes classées par catégorie. Puis le pipeline du § 4.3 avec et sans fetchDepth: 0.
  5. Service hook : créer un service hook Web Hooks sur « Build completed » vers une Azure Function HTTP (plan Consumption, quelques centimes), tester, lire le JSON reçu ; abonner un canal Teams avec l'app Azure Pipelines. Nettoyage : supprimer le resource group de la Function et le service hook.

6. Pièges d'examen#

Situation Réponse attendue Pourquoi
AB# mis dans le titre d'une PR ou un commentaire Pas de lien : le mettre dans la description, un commit ou une issue Règle documentée
Fixes AB#1, AB#2 : quels états changent ? Seulement le 1 Chaque item à transitionner doit avoir son mot-clé
Transition AB# qui ne se fait pas La PR n'est pas mergée dans la branche par défaut Transitions seulement au merge dans la branche par défaut
Même repo GitHub relié à deux organisations À éviter : liens AB# imprévisibles Un repo = une organisation
Status checks Boards sur les PR GitHub avec une connexion PAT Impossible : utiliser la GitHub App Limite documentée des connexions PAT
Liste de repos vide lors de la connexion OAuth app policy de l'organisation GitHub Accès tiers restreint
Mesurer le temps vu par le client Lead time (création → fermeture) Cycle time = depuis le début du travail
Analytics view pour un rapport sur les pipelines Impossible : OData ou rapports intégrés Analytics views = work items seulement
Version de wiki par branche Code wiki (jusqu'à 10 branches) Le provisioned wiki n'est pas versionné
Page de code wiki absente du sommaire Mettre à jour le .order Ordre manuel pour un code wiki
Diagramme flowchart qui ne s'affiche pas dans le wiki Écrire graph Limite Azure DevOps
Release notes vides générées dans le pipeline fetchDepth: 0 et fetchTags: true Shallow fetch et tags non synchronisés par défaut
Webhook vers une URL HTTP Refusé : HTTPS Données sensibles en clair
Vérifier qu'un webhook GitHub vient bien de GitHub Secret + vérification de X-Hub-Signature-256 Signature HMAC
Créer un service hook Project Administrators (ou Project Collection Administrators) Prérequis
Teams ne voit pas l'organisation Azure DevOps Organisation dans un autre tenant Entra Même tenant obligatoire
Office 365 Connector pour notifier Teams Retiré : apps Azure DevOps pour Teams ou Workflows Retrait annoncé
Approuver un déploiement depuis Teams Azure Pipelines app for Teams Fonction de l'app
Demander automatiquement la revue au bon expert CODEOWNERS (+ branch protection « require review from code owners ») Routage du feedback
Requêter les work items liés à GitHub External Link Count > 0 Pas de requête directe sur les liens GitHub

7. Scénarios corrigés#

1. L'équipe planifie dans Azure Boards et code dans GitHub. Elle veut que la story passe en Resolved quand la PR est mergée, sans action manuelle.

Connecter le repo par l'Azure Boards app, et écrire Fixes AB#{id} dans la description de la PR ; la transition se fait au merge dans la branche par défaut.

2. Un manager veut savoir combien de temps un client attend entre sa demande et la livraison.

Widget Lead Time (création → fermeture). Pour l'attente jusqu'à la production, compléter par le lead time for changes DORA, mesuré par les déploiements.

3. Le cycle time est stable mais le lead time double en trois mois. Que regarder ?

La file d'attente avant le début du travail : taille du backlog, priorisation, WIP en amont ; le Cumulative Flow Diagram le montre (bande New qui s'élargit).

4. La documentation technique doit être revue en PR, versionnée par release (v1, v2) et publiée dans le wiki.

Publish code as wiki depuis le dossier docs/ du repo, une branche par version (jusqu'à 10), .order pour le sommaire.

5. Les release notes doivent être produites à chaque release GitHub, classées en « Nouveautés » et « Corrections ».

Release notes générées par GitHub + .github/release.yml avec des catégories basées sur les labels des PR.

6. Une plateforme interne doit recevoir un événement à chaque build terminé dans Azure DevOps.

Service hook de type Web Hooks sur l'événement Build completed, endpoint HTTPS ; si l'endpoint est derrière un VPN, autoriser les IP entrantes d'Azure DevOps.

7. Les approbateurs de production veulent valider les déploiements sans quitter Teams.

Azure Pipelines app for Teams : abonnement aux approbations et approbation depuis le canal. Vérifier que l'organisation est dans le même tenant Entra.

8. Le RSSI demande un indicateur de sécurité suivi chaque mois pour tous les repos GitHub et Azure DevOps.

Defender for Cloud DevOps security (vue unifiée) ou security overview de GitHub Advanced Security : alertes critiques ouvertes et délai moyen de correction.

9. Un rapport Power BI doit montrer le taux de réussite des tests par branche sur 90 jours.

OData sur l'entité TestResultsDaily (les Analytics views ne couvrent pas les tests ni les pipelines).

10. Les diagrammes Mermaid copiés depuis GitHub ne s'affichent pas dans le wiki Azure DevOps.

Remplacer flowchart par graph et retirer les syntaxes non prises en charge (flèche longue, liens vers un subgraph, HTML).


8. Pour aller plus loin#

  • Azure Boards et GitHub Copilot : depuis un work item, créer une PR générée par l'agent Copilot (y compris avec des custom agents) ; nécessite une connexion GitHub App.
  • Azure DevOps MCP Server : interroger work items, wikis et Analytics en langage naturel depuis un agent IA (VS Code, Claude Code).
  • SPACE et DevEx : compléter DORA par la satisfaction et le ressenti des développeurs ; éviter les métriques individuelles.
  • Platform engineering : mesurer l'adoption de la plateforme interne (Microsoft Learn, Platform engineering).
  • GitHub Projects en tant que code : API GraphQL et Actions pour synchroniser projets, labels et milestones.

9. Fiche à retenir#

  • GitHub Flow : branche courte + PR + main protégée et toujours déployable.
  • AB# : commit, description de PR ou d'issue ; pas le titre ni un commentaire ; fix/fixes/fixed → Resolved sinon Completed, au merge dans la branche par défaut ; chaque item à transitionner a son mot-clé.
  • Boards ↔ GitHub : GitHub App recommandée (status checks, Copilot), 1 repo = 1 organisation, 2 000 repos par connexion, OAuth app policy à vérifier.
  • Lead time = création → fermeture ; cycle time = début du travail → fermeture ; DORA : deployment frequency, lead time for changes, change fail rate, MTTR.
  • Analytics views = work items pour Power BI ; OData pour pipelines et tests ; WIQL pour les requêtes et widgets.
  • Provisioned wiki ({projet}.wiki, wikiMain) ou code wiki (dossier d'un repo, .order, 10 branches, versionné).
  • Mermaid : ::: mermaid ou bloc de code mermaid standard ; graph et pas flowchart.
  • Release notes : GitHub generated notes + .github/release.yml ; Azure Pipelines : script git log avec fetchDepth: 0 et fetchTags: true.
  • Service hooks : Project Administrators, HTTPS, test ; webhooks GitHub signés (X-Hub-Signature-256).
  • Teams : apps Boards / Pipelines / Repos, même tenant Entra, Office 365 Connectors retirés.

Références#

Lues le 21/10/2026 :

Sur cette page
Échap

Tape au moins 2 lettres. Plusieurs mots : tous doivent apparaître.