Mittelstand Radar : Signaux d'achat du Mittelstand allemand — réservez dès maintenant votre première édition du rapport.Rejoindre la liste d'attente
Paysage montagneux avec des pipelines traversant une vallée
Retour au blog
azureazure devopscicd

Déploiement continu avec Azure DevOps

Sven HennessenDevOps

Utiliser Azure DevOps pour définir et automatiser les processus de déploiement entre équipes

Introduction

Dans le monde dynamique du développement logiciel, la bonne mise en œuvre des pratiques DevOps peut faire la différence entre la réussite et l'échec d'un projet. Microsoft Azure DevOps propose un ensemble impressionnant d'outils pour structurer efficacement une pipeline CI/CD. Dans cet article, nous examinons quelques bases utiles.

Templates YAML et repository resources

Les templates YAML fournissent une structure réutilisable pour les pipelines Azure DevOps, ce qui permet de gérer la configuration des pipelines directement dans le code. Combinés aux Repository Resources, ces templates peuvent être définis une seule fois puis réutilisés dans plusieurs projets. Les templates résident dans un dépôt Git, tandis que les projets concrets se trouvent dans d'autres dépôts. Cela permet d'assurer que tous les projets utilisent des configurations de pipelines cohérentes et à jour.

resources:
  repositories:
    - repository: templates
      type: git
      endpoint: # Nom de la service connection dans Azure DevOps
      name: # Nom du dépôt contenant les templates
      ref: # Optionnel, git ref dans le dépôt cible

stages:
  - template: templates/deploy-template.yml@templates
Schéma de flux des repository resources

Automatiser les déploiements avec les pipeline resources

Azure DevOps permet d'automatiser les déploiements grâce aux Build Completion Triggers, qui garantissent qu'un déploiement n'est lancé que si le build précédent a réussi. Les pipeline resources et leur configuration de déclencheurs permettent de définir de manière fine quand la pipeline actuelle doit être démarrée automatiquement.

Par exemple, il est possible de lancer automatiquement un déploiement dès que le build d'un composant applicatif s'est terminé avec succès.

resources:
  pipelines:
    - pipeline: BuildPipeline
      source: BuildPipeline
      trigger:
        branches:
          include:
          - main

stages:
  # Deployment Stages
Schéma de séquence des pipeline resources

Pipelines multi-étapes

Les pipelines représentent des processus multi-étapes, où chaque stage peut par exemple correspondre au build d'un composant applicatif ou au déploiement sur un système donné. Grâce à l'attribut dependsOn, on peut modéliser des dépendances complexes entre différents stages d'une pipeline, ce qui permet un contrôle précis du flux de déploiement dans différents environnements.

stages:
  - stage: deploy_to_staging
    jobs:
      - job: ...
  - stage: deploy_to_environment_a
    # N'est exécuté que si "staging" a été déployé avec succès
    dependsOn: deploy_to_staging
    condition: succeeded()
    jobs:
      - job: ...
  - stage: deploy_to_environment_a
    dependsOn: deploy_to_staging
    condition: succeeded()
    jobs:
      - job: ...
Schéma de flux d'un déploiement multi-étapes

Résumé et perspectives

Azure DevOps offre de nombreuses fonctionnalités pour structurer efficacement et en toute sécurité des processus modernes de développement logiciel. Les éléments présentés ici constituent les bases d'une conception durable de pipelines CI/CD automatisées.

Mais ce n'est qu'une petite partie de ce qu'il est possible de faire avec Azure DevOps Pipelines. Dans les prochains articles, nous verrons comment sécuriser les déploiements par des validations, comment gérer idéalement les secrets et comment utiliser les pipelines pour automatiser des déploiements Kubernetes avec Helm.

Besoin d'aide ?

Vous souhaitez introduire ou améliorer des pipelines CI/CD avec Azure DevOps dans votre entreprise, mais vous hésitez sur la mise en œuvre ? Nous pouvons vous aider. Contactez-nous via notre page de contact et voyons ensemble comment automatiser vos processus de déploiement.