Utiliser Azure Pipelines pour générer et envoyer (push) des images conteneur aux registres
Article
Azure DevOps Services
Cet article vous guide tout au long de la création d’un pipeline pour générer et envoyer (push) une image Docker vers azure Container Registry ou Docker Hub.
Prérequis
Produit
Exigences
Azure DevOps
- Un projet Azure DevOps. - Autorisations : - Pour accorder l’accès à tous les pipelines du projet : vous devez être membre du Project Administrators group. - Pour créer des connexions de service : vous devez disposer du rôle Administrator ou Creator pour service connections. - Si vous utilisez un agent auto-hébergé, assurez-vous que Docker est installé et que le moteur Docker fonctionne avec des privilèges élevés. Les agents hébergés par Microsoft ont Préinstallé Docker.
- Un projet Azure DevOps. - Autorisations : - Pour accorder l’accès à tous les pipelines du projet : vous devez être membre du Project Administrators group. - Pour créer des connexions de service : vous devez disposer du rôle Administrator ou Creator pour service connections. - Si vous utilisez un agent auto-hébergé, assurez-vous que Docker est installé et que le moteur Docker fonctionne avec des privilèges élevés. Les agents hébergés par Microsoft ont Préinstallé Docker.
- Un compte Docker Hub. - Un référentiel d'image Docker Hub .
Créer une connexion de service de Registre Docker
Avant d’envoyer (push) des images conteneur à un registre, vous devez créer une connexion de service dans Azure DevOps. Cette connexion de service stocke les informations d’identification requises pour s’authentifier en toute sécurité auprès du registre de conteneurs. Pour plus d’informations, veuillez consulter la section connexions de service Docker Registry.
Dans votre projet Azure DevOps, sélectionnez paramètres de projet>connexions de service.
Sélectionnez nouvelle connexion de service et Registre Docker.
Sélectionnez Docker Hub et entrez les informations suivantes :
Champ
Description
Docker ID
Entrez votre ID Docker.
Mot de passe Docker
Entrez votre mot de passe Docker.
nom de connexion de service
Entrez un nom pour la connexion de service.
Accorder l’autorisation d’accès à tous les pipelines
Sélectionnez cette option pour accorder l’accès à tous les pipelines.
Sélectionnez Vérifier et enregistrer.
Créer un pipeline pour générer et envoyer (push) une image Docker
La tâche Docker@2 est utilisée pour générer et envoyer (push) l’image au registre de conteneurs.
La tâche Docker@2 est conçue pour simplifier le processus de génération, d’envoi (push) et de gestion des images Docker au sein de vos pipelines Azure. Cette tâche prend en charge un large éventail de commandes Docker, notamment la génération, l’envoi (push), la connexion, la déconnexion, le démarrage, l’arrêt et l’exécution.
Procédez comme ceci pour créer un pipeline YAML qui utilise la tâche Docker@2 afin de générer l’image et de la transférer.
Dans votre projet Azure DevOps, sélectionnez Pipelines puis New pipeline.
Sélectionnez GitHub comme emplacement pour votre code source et sélectionnez votre référentiel.
Si vous êtes redirigé vers GitHub pour vous connecter, entrez vos informations d’identification GitHub.
Si vous êtes redirigé vers GitHub pour installer l’application Azure Pipelines, sélectionnez Approuver et installer.
Sélectionnez votre dépôt.
Sélectionnez le modèle de pipeline Starter pour créer une configuration de pipeline de base.
Remplacez le contenu de azure-pipelines.yml par le code suivant :
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image.
Remplacez <docker registry service connection> par le nom de la connexion de service du registre Docker que vous avez créée précédemment.
Lorsque vous avez terminé, sélectionnez Enregistrer et exécuter>Enregistrer et exécuter.
Sélectionnez Job pour afficher les journaux et vérifier que le pipeline s’est exécuté avec succès.
Créer un pipeline à l’aide de l’éditeur classique
Dans votre projet Azure DevOps, sélectionnez Pipelines et Nouveau pipeline
Sélectionnez Use the classic editor depuis la page Where is your code?.
Sur la page Select a source, sélectionnez GitHub.
Choisissez votre référentiel et sélectionnez Continuer.
Sur la page Select a template, sélectionnez Empty pipeline puis Apply.
Sélectionnez ubuntu latest pour la Agent Specification.
Ajouter la tâche Docker@2 au pipeline
Pour générer et envoyer (push) l’image au registre de conteneurs, ajoutez la tâche Docker@2 au pipeline.
Ajoutez une tâche à Agent job 1.
Sélectionnez la tâche Docker, puis Add.
Sélectionnez la tâche buildAndPush.
Pour container Registry, sélectionnez la connexion de service que vous avez créée précédemment. Si vous n’en avez pas, sélectionnez +Nouveau pour créer une connexion de service Docker Hub.
Exécuter le pipeline
Sélectionnez Save and queue>Save and Queue.
Sur la page Run pipeline, sélectionnez Save and run.
Sélectionnez Job pour afficher les journaux et vérifier que le pipeline s’est exécuté avec succès.
Rendez-vous dans votre projet Azure DevOps et sélectionnez Pipelines dans le menu de gauche.
Sélectionnez Nouveau pipeline.
Sélectionnez GitHub comme emplacement pour votre code source et sélectionnez votre référentiel.
Si vous êtes redirigé vers GitHub pour vous connecter, entrez vos informations d’identification GitHub.
Si vous êtes redirigé vers GitHub pour installer l’application Azure Pipelines, sélectionnez Approuver et installer.
Sélectionnez le modèle Docker - Construire et envoyer une image à Azure Container Registry.
Sélectionnez votre abonnement Azure et Continue.
Sélectionnez votre Container Registry, puis sélectionnez Validate and configure.
Exemple de pipeline YAML :
# Docker
# Build and push an image to Azure Container Registry
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
imageRepository: 'usernamepipelinesjavascriptdocker'
containerRegistry: 'repoistoryname.azurecr.io'
dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
Sélectionnez Enregistrer et exécuter et Enregistrer et réexécuter.
Sélectionnez la tâche pour afficher les logs et vérifier que le pipeline s’est exécuté correctement.
Le modèle Docker crée la connexion de service à votre Registre de conteneurs Azure et utilise la tâche de Docker@2 pour générer et envoyer (push) l’image Docker au registre.
La tâche Docker@2 est conçue pour simplifier le processus de génération, d’envoi (push) et de gestion des images Docker au sein de vos pipelines Azure. Cette tâche prend en charge un large éventail de commandes Docker, notamment la génération, l’envoi (push), la connexion, la déconnexion, le démarrage, l’arrêt et l’exécution.
Créer un pipeline à l’aide de l’éditeur classique
Dans votre projet Azure DevOps, sélectionnez Pipelines et Nouveau pipeline.
Sélectionnez Utiliser l’éditeur classique dans la page Où Se Trouve Votre Code ?.
Sur la page Select a source, sélectionnez GitHub.
Choisissez votre référentiel et sélectionnez Continuer.
Sur la page Select a template, sélectionnez Empty pipeline puis Apply.
Sélectionnez ubuntu latest pour la Agent Specification.
Ajouter la tâche Docker@2 au pipeline
Ajoutez une tâche Docker@2 au pipeline pour générer et envoyer (push) l’image au registre de conteneurs.
Ajoutez une tâche à Agent job 1.
Sélectionnez la tâche Docker, puis Add.
Sélectionnez la tâche buildAndPush.
Créez une connexion de service, sélectionnez +Nouveau.
Renseignez les champs suivants :
Champ
Description
Abonnement
Sélectionnez votre abonnement Azure.
registre de conteneurs Azure
Sélectionnez votre registre de conteneurs Azure.
nom de connexion de service
Entrez un nom pour la connexion de service.
Accorder l’autorisation d’accès à tous les pipelines
Sélectionnez cette option pour accorder l’accès à tous les pipelines.
Sélectionnez Enregistrer.
Exécuter le pipeline
Sélectionnez Save and queue>Save and Queue.
Sur la page Run pipeline, sélectionnez Save and run.
Sélectionnez Job pour afficher les journaux et vérifier que le pipeline s’est exécuté avec succès.
Lorsque vous utilisez des agents auto-hébergés, assurez-vous que Docker est installé sur l’hôte de l’agent et que le moteur/démon Docker s’exécute avec des privilèges élevés.
Cette certification mesure votre capacité à réaliser les tâches techniques suivantes : Concevoir et implémenter des processus et des communications, concevoir et implémenter une stratégie de contrôle de code source, concevoir et implémenter des pipelines de build et de mise en production, développer un plan de sécurité et de conformité et implémenter une stratégie d’instrumentation.