Utiliser Azure Pipelines pour générer et envoyer (push) des images conteneur aux registres
Article
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Cet article vous guide tout au long de la configuration et de l’installation d’Azure Pipelines pour générer et envoyer (push) une image Docker à un registre Azure Container Registry, Docker Hub et Google Artifact Registry. En outre, il détaille l’utilisation de l’authentification System.AccessToken sécurisée au sein de votre pipeline.
Cet article vous guide tout au long de la configuration et de l’installation d’Azure Pipelines pour générer et envoyer (push) une image Docker vers un Docker Hub et Google Artifact Registry. En outre, il détaille l’utilisation de l’authentification System.AccessToken sécurisée au sein de votre pipeline.
Vous allez apprendre à créer un pipeline YAML pour générer et envoyer (push) une image Docker à un registre de conteneurs. La tâche Docker@2 est utilisée pour générer et envoyer (push) l’image au registre de conteneurs.
Prérequis
Un projet Azure DevOps.
Registre de conteneurs (Docker Hub, Google Artifact Registry ou Azure Container Registry).
Un référentiel GitHub avec un fichier Dockerfile. Si vous n’en avez pas, vous pouvez utiliser l’exemple de dépôt Dans votre navigateur, accédez à l’exemple de référentiel, puis le fork sur votre compte GitHub.
Docker. Si vous utilisez un agent auto-hébergé, vérifiez que Docker est installé et que le moteur Docker s’exécute avec des privilèges élevés. Les agents hébergés par Microsoft ont Préinstallé Docker.
Un projet Azure DevOps.
Registre de conteneurs (Docker Hub ou Google Artifact Registry).
Un référentiel GitHub avec un fichier Dockerfile. Si vous n’en avez pas, vous pouvez utiliser l’exemple de dépôt Dans votre navigateur, accédez à l’exemple de référentiel, puis le fork sur votre compte GitHub.
Docker. Si vous utilisez un agent auto-hébergé, vérifiez que Docker est installé et que le moteur Docker s’exécute avec des privilèges élevés. Les agents hébergés par Microsoft ont Préinstallé Docker.
Choisissez l’option Docker Hub sous Connexion au service de registre Docker et fournissez votre nom d’utilisateur et votre mot de passe pour créer une connexion au service Docker.
Choisissez l’option Azure Container Registry sous connexion de service De Registre Docker et fournissez les informations requises par la méthode d’authentification que vous choisissez.
L’envoi d’une image Docker vers Azure Container Registry n’est pas pris en charge dans Azure DevOps Server.
Pour créer une connexion de service Docker associée à Google Artifact Registry :
Ouvrez votre projet dans la console Google Cloud Platform (GCP), puis ouvrez Cloud Shell
Pour gagner du temps lors de la saisie de votre ID de projet et des options de zone du moteur de calcul, définissez les valeurs de configuration par défaut en exécutant les commandes suivantes :
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
Remplacez [PROJECT_NAME] par le nom de votre projet GCP et remplacez [ZONE] par le nom de la zone que vous allez utiliser pour créer des ressources. Si vous ne savez pas quelle zone choisir, utilisez us-central1-a. Par exemple :
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
Activez l’API De Registre d’artefacts pour votre projet :
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.
Les étapes suivantes décrivent comment créer un pipeline YAML qui utilise la tâche Docker@2 pour générer et envoyer (push) l’image.
Accédez à votre projet Azure DevOps et sélectionnez Pipelines dans le menu de gauche.
Sélectionnez Nouveau pipeline pour créer un pipeline.
Sélectionnez GitHub ou GitHub Enterprise Server comme emplacement de votre code source.
Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
Sélectionnez Se connecter à GitHub Enterprise Server.
Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
Sélectionnez votre dépôt.
Si vous êtes redirigé vers GitHub
Sélectionnez le modèle de pipeline Starter pour créer une configuration de pipeline de base.
Remplacez le contenu du fichier azure-pipelines.yml par le code suivant.
Selon que vous déployez une application Linux ou Windows, veillez à définir vmImage respectivement sur ubuntu-latest ou windows-latest. Si vous utilisez un agent auto-hébergé, définissez vmImage le nom du pool qui contient l’agent auto-hébergé avec la fonctionnalité Docker. Vous pouvez ajouter la demands: docker propriété pour vous assurer qu’un agent avec Docker est sélectionné.
Remplacez <docker connection> par le nom de la connexion de service Docker que vous avez créée précédemment.
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image. Par exemple : <your-docker-hub-username>/<repository-name>.
Lorsque vous avez terminé, sélectionnez Enregistrer et exécuter.
Lorsque vous enregistrez le fichier azure-pipelines.yml dans votre référentiel, vous êtes invité à ajouter un message de validation. Entrez un message, puis sélectionnez Enregistrer et exécuter.
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.
Pour générer l’image, Docker doit être installé sur l’hôte de l’agent et le moteur/démon Docker doit s’exécuter avec des privilèges élevés. Procédez comme suit pour créer votre pipeline à l’aide de l’éditeur de pipeline YAML.
Accédez à votre collection et créez un projet.
Dans votre projet, sélectionnez Pipelines.
Sélectionnez Créer un pipeline.
Sélectionnez GitHub Enterprise Server comme emplacement de votre code source.
Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
Sélectionnez Se connecter à GitHub Enterprise Server.
Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
Sélectionnez votre dépôt.
Si vous êtes redirigé vers GitHub pour installer l’application Azure Pipelines, sélectionnez Approuver et installer.
Pour configurer votre pipeline, sélectionnez le modèle Générer une image Docker.
Dans l’éditeur de pipelines YAML, remplacez le contenu du fichier YAML par le code suivant. Remplacez le nom du pool par le nom du pool qui contient votre agent auto-hébergé avec la fonctionnalité Docker.
Selon que vous déployez une application Linux ou Windows, veillez à définir vmImage respectivement sur ubuntu-latest ou windows-latest.
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image. Par exemple : <your-docker-hub-username>/<repository-name>.
Remplacez <docker connection> par le nom de la connexion de service Docker que vous avez créée précédemment.
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.
Les étapes suivantes décrivent comment créer un pipeline YAML qui utilise la tâche Docker@2 pour générer et envoyer (push) l’image.
Accédez à votre projet Azure DevOps et sélectionnez Pipelines dans le menu de gauche.
Sélectionnez Nouveau pipeline pour créer un pipeline.
Sélectionnez GitHub ou GitHub Enterprise Server comme emplacement de votre code source.
Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
Sélectionnez Se connecter à GitHub Enterprise Server.
Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
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 du fichier azure-pipelines.yml par le code suivant.
Selon que vous déployez une application Linux ou Windows, veillez à définir vmImage respectivement sur ubuntu-latest ou windows-latest. Si vous utilisez un agent auto-hébergé, définissez vmImage le nom du pool qui contient l’agent auto-hébergé avec la fonctionnalité Docker. Vous pouvez ajouter la demands: docker propriété pour vous assurer qu’un agent avec Docker est sélectionné.
Remplacez <docker connection> par le nom de la connexion de service Docker que vous avez créée précédemment.
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image. Par exemple : myregistry.azurecr.io/myimage.
Lorsque vous avez terminé, sélectionnez Enregistrer et exécuter.
Lorsque vous enregistrez le fichier azure-pipelines.yml dans votre référentiel, vous êtes invité à ajouter un message de validation. Entrez un message, puis sélectionnez Enregistrer et exécuter.
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.
L’envoi (push) d’images Docker vers Azure Container Registry n’est pas pris en charge dans Azure DevOps Server.
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.
Les étapes suivantes décrivent comment créer un pipeline YAML qui utilise la tâche Docker@2 pour générer et envoyer (push) l’image.
Accédez à votre projet Azure DevOps et sélectionnez Pipelines dans le menu de gauche.
Sélectionnez Nouveau pipeline pour créer un pipeline.
Sélectionnez GitHub ou GitHub Enterprise Server comme emplacement de votre code source.
Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
Sélectionnez Se connecter à GitHub Enterprise Server.
Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
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 du fichier azure-pipelines.yml par le code suivant.
Selon que vous déployez une application Linux ou Windows, veillez à définir vmImage respectivement sur ubuntu-latest ou windows-latest. Si vous utilisez un agent auto-hébergé, définissez vmImage le nom du pool qui contient l’agent auto-hébergé avec la fonctionnalité Docker. Vous pouvez ajouter la demands: docker propriété pour vous assurer qu’un agent avec Docker est sélectionné.
Remplacez <docker connection> par le nom de la connexion de service Docker que vous avez créée précédemment.
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image. Par exemple : <your-project-id>/<your-image-name>.
Lorsque vous avez terminé, sélectionnez Enregistrer et exécuter.
Lorsque vous enregistrez le fichier azure-pipelines.yml dans votre référentiel, vous êtes invité à ajouter un message de validation. Entrez un message, puis sélectionnez Enregistrer et exécuter.
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.
Pour générer l’image, Docker doit être installé sur l’hôte de l’agent et le moteur/démon Docker doit s’exécuter avec des privilèges élevés. Procédez comme suit pour créer votre pipeline à l’aide de l’éditeur de pipeline YAML.
Accédez à votre collection et créez un projet.
Dans votre projet, sélectionnez Pipelines.
Sélectionnez Créer un pipeline.
Sélectionnez GitHub Enterprise Server comme emplacement de votre code source.
Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
Sélectionnez Se connecter à GitHub Enterprise Server.
Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
Sélectionnez votre dépôt.
Pour configurer votre pipeline, sélectionnez le modèle Générer une image Docker.
Dans l’éditeur de pipelines YAML, remplacez le contenu du fichier YAML par le code suivant. Remplacez le nom du pool par le nom du pool qui contient votre agent auto-hébergé avec la fonctionnalité Docker.
Selon que vous déployez une application Linux ou Windows, veillez à définir vmImage respectivement sur ubuntu-latest ou windows-latest.
Remplacez <target repository name> par le nom du référentiel dans le registre de conteneurs dans lequel vous souhaitez envoyer (push) l’image. Par exemple : <your-project-id>/<your-image-name>.
Remplacez <docker connection> par le nom de la connexion de service Docker que vous avez créée précédemment.
Sur la page Enregistrer et exécuter, sélectionnez une nouvelle fois Enregistrer et exécuter.
Vous pouvez regarder l’exécution du pipeline et afficher les journaux pour voir l’image Docker générée et envoyée (push) au registre de conteneurs.
Utilisation de System.AccessToken pour l’authentification dans Docker@2 tâche
Vous pouvez vous authentifier auprès d’un registre de conteneurs à l’aide d’Azure System.AccessToken DevOps. Ce jeton permet un accès sécurisé aux ressources au sein de votre pipeline sans exposer d’informations d’identification sensibles.
L’exemple de pipeline YAML suivant, la tâche Docker@2 est utilisée pour se connecter au registre de conteneurs et envoyer (push) l’image Docker. Il System.AccessToken est défini en tant que variable d’environnement pour authentifier les commandes Docker.
Remplacez par <docker connection> le nom de votre connexion de service de Registre Docker.
Remplacez <your repository> par le nom de votre référentiel Docker.