Automatiser la création et la maintenance des images de conteneur avec ACR TasksAutomate container image builds and maintenance with ACR Tasks

Les conteneurs fournissent de nouveaux niveaux de virtualisation en isolant les dépendances d’application et de développement des spécifications opérationnelles et d’infrastructure.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Ce qui demeure, toutefois, est la nécessité de gérer les mises à jour correctives et la gestion de cette virtualisation d’application sur le cycle de vie du conteneur.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

Qu’est-ce qu’ACR Tasks ?What is ACR Tasks?

ACR Tasks est une suite de fonctionnalités d’Azure Container Registry.ACR Tasks is a suite of features within Azure Container Registry. Elle fournit la création d’image conteneur informatique pour les plateformes, notamment Linux, Windows et ARM, et peut automatiser la mise à jour corrective du framework et du système d’exploitation pour vos conteneurs Docker.It provides cloud-based container image building for platforms including Linux, Windows, and ARM, and can automate OS and framework patching for your Docker containers. Non seulement ACR Tasks étend votre cycle de développement « en boucle interne » au cloud avec des builds d’image de conteneur à la demande, mais il permet également de créer des builds automatisées déclenchés par les mises à jour du code source, les mises à jour de l’image de base d’un conteneur ou les minuteurs.ACR Tasks not only extends your "inner-loop" development cycle to the cloud with on-demand container image builds, but also enables automated builds triggered by source code updates, updates to a container's base image, or timers. Par exemple, avec les déclencheurs de mise à jour d’image de base, vous pouvez automatiser votre flux de travail de mise à jour corrective du système d’exploitation et du framework d’application tout en garantissant la sécurité de l’environnement et en respectant les critères fondamentaux des conteneurs immuables.For example, with base image update triggers, you can automate your OS and application framework patching workflow, maintaining secure environments while adhering to the principles of immutable containers.

Scénarios de tâchesTask scenarios

ACR Tasks prend en charge plusieurs scénarios pour créer et gérer des images de conteneur et d’autres artefacts.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Pour plus d’informations, consultez les sections suivantes de cet article.See the following sections in this article for details.

Chaque tâche ACR Tasks a un contexte de code source associé : l’emplacement d’un ensemble de fichiers sources utilisés pour générer une image conteneur ou un autre artefact.Each ACR Task has an associated source code context - the location of a set of source files used to build a container image or other artifact. Les exemples de contextes incluent un référentiel Git ou un système de fichiers local.Example contexts include a Git repository or a local filesystem.

Les tâches peuvent également tirer parti des variables d’exécution, de sorte que vous pouvez réutiliser les définitions de tâches et normaliser les balises pour les images et les artefacts.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

Tâche rapideQuick task

Le cycle de développement « en boucle interne », c’est-à-dire le processus itératif d’écriture de code, de génération de build et de test de votre application avant de valider le code source, correspond au début de la gestion du cycle de vie des conteneurs.The inner-loop development cycle, the iterative process of writing code, building, and testing your application before committing to source control, is really the beginning of container lifecycle management.

Avant de valider votre première ligne de code, les fonctionnalité tâche rapide d’ACR Tasks peut fournir un environnement de développement intégré en déchargeant vos builds d’image de conteneur dans Azure.Before you commit your first line of code, ACR Tasks's quick task feature can provide an integrated development experience by offloading your container image builds to Azure. Avec les tâches rapides, vous pouvez vérifier vos définitions de build automatisées et identifier les problèmes potentiels avant de valider votre code.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

En utilisant le format docker build bien connu, la commande az acr build dans Azure CLI prend un contexte (ensemble de fichiers à générer), l’envoie à ACR Tasks et, par défaut, envoie (push) l’image générée à son registre lors de son achèvement.Using the familiar docker build format, the az acr build command in the Azure CLI takes a context (the set of files to build), sends it ACR Tasks and, by default, pushes the built image to its registry upon completion.

Pour une introduction, consultez le démarrage rapide pour générer et exécuter une image conteneur dans Azure Container Registry.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

ACR Tasks est conçu comme un précurseur du cycle de vie de conteneurs.ACR Tasks is designed as a container lifecycle primitive. Par exemple, intégrez ACR Tasks dans votre solution CI/CD.For example, integrate ACR Tasks into your CI/CD solution. En exécutant az login avec un principal de service, votre solution CI/CD pourra alors émettre des commandes az acr build pour lancer des générations d’image.By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Découvrez comment utiliser les tâches rapides dans le premier didacticiel d’ACR Tasks, Générer des images de conteneur dans le cloud avec Azure Container Registry Tasks.Learn how to use quick tasks in the first ACR Tasks tutorial, Build container images in the cloud with Azure Container Registry Tasks.

Conseil

Si vous souhaitez créer et envoyer (push) une image directement à partir du code source, sans fichier Dockerfile, Azure Container Registry fournit la commande az acr pack build (préversion).If you want to build and push an image directly from source code, without a Dockerfile, Azure Container Registry provides the az acr pack build command (preview). Cet outil crée et envoie (push) une image à partir du code source de l’application à l’aide de Cloud Native Buildpacks.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Déclencher la tâche lors de la mise à jour du code sourceTrigger task on source code update

Déclenchez la création d’une image conteneur ou une tâche multi-étapes lors de la validation du code, ou lorsqu’une demande de tirage (pull request) est effectuée ou mise à jour, sur un référentiel Git public ou privé dans GitHub ou Azure DevOps.Trigger a container image build or multi-step task when code is committed, or a pull request is made or updated, to a public or private Git repository in GitHub or Azure DevOps. Par exemple, configurez une tâche de création avec la commande Azure CLI az acr task create en spécifiant un référentiel Git et éventuellement une branche et un Dockerfile.For example, configure a build task with the Azure CLI command az acr task create by specifying a Git repository and optionally a branch and Dockerfile. Lorsque votre équipe met à jour du code dans le référentiel, un webhook créé par ACR Tasks déclenche la génération de l’image de conteneur définie dans le référentiel.When your team updates code in the repository, an ACR Tasks-created webhook triggers a build of the container image defined in the repo.

ACR Tasks prend en charge les déclencheurs suivants lorsque vous définissez un référentiel Git comme contexte de la tâche :ACR Tasks supports the following triggers when you set a Git repo as the task's context:

DéclencheurTrigger Activée par défautEnabled by default
CommitCommit OuiYes
Demande de tirage (pull request)Pull request NonNo

Pour configurer un déclencheur de mise à jour du code source, vous devez fournir à la tâche un jeton d’accès personnel (PAT) pour définir le webhook dans le référentiel GitHub ou Azure DevOps, qu’il soit public ou privé.To configure a source code update trigger, you need to provide the task a personal access token (PAT) to set the webhook in the public or private GitHub or Azure DevOps repo.

Notes

Actuellement, ACR Tasks ne prend pas en charge les déclencheurs de validation et de demande de tirage (pull request) dans les référentiels GitHub Enterprise.Currently, ACR Tasks doesn't support commit or pull request triggers in GitHub Enterprise repos.

Découvrez comment déclencher la génération de builds lors de la validation du code source dans le deuxième didacticiel d’ACR Tasks, Automatiser les générations d’image de conteneur avec Azure Container Registry Tasks.Learn how to trigger builds on source code commit in the second ACR Tasks tutorial, Automate container image builds with Azure Container Registry Tasks.

Automatiser les mises à jour correctives du système d’exploitation et du frameworkAutomate OS and framework patching

L’aptitude d’ACR Tasks à améliorer réellement votre pipeline de génération de conteneur provient de sa capacité à détecter la mise à jour d’une image de base.The power of ACR Tasks to truly enhance your container build workflow comes from its ability to detect an update to a base image. Fonctionnalité de la plupart des images de conteneur, une image de base est une image parente sur laquelle une ou plusieurs images d’application sont basées.A feature of most container images, a base image is a parent image on which one or more application images are based. Les images de base contiennent généralement le système d’exploitation et parfois des infrastructures d’application.Base images typically contain the operating system, and sometimes application frameworks.

Vous pouvez configurer une tâche ACR pour effectuer le suivi d’une dépendance sur une image de base au moment de la génération d’une image d’application.You can set up an ACR task to track a dependency on a base image when it builds an application image. Quand l’image de base mise à jour est envoyée à votre registre, ou qu’une image de base est mise à dans un référentiel public comme dans Docker Hub, ACR Tasks peut générer automatiquement des images d’application basées sur elle.When the updated base image is pushed to your registry, or a base image is updated in a public repo such as in Docker Hub, ACR Tasks can automatically build any application images based on it. Grâce à ces détection et regénération automatiques, ACR Tasks vous permet d’économiser le temps et les efforts normalement nécessaires au suivi et à la mise à jour manuels de chaque image d’application faisant référence à votre image de base mise à jour.With this automatic detection and rebuilding, ACR Tasks saves you the time and effort normally required to manually track and update each and every application image referencing your updated base image.

Découvrez-en plus sur les déclencheurs de mise à jour des images de base pour les tâches ACR.Learn more about base image update triggers for ACR Tasks. Découvrez aussi comment déclencher la génération d’images quand une image de base est envoyée à un registre de conteneurs dans le tutoriel Automatiser la génération des images conteneur quand une image de base est mise à jour dans un registre de conteneurs Azure.And learn how to trigger an image build when a base image is pushed to a container registry in the tutorial Automate container image builds when a base image is updated in a Azure container registry

Planifier une tâcheSchedule a task

Planifiez éventuellement une tâche en définissant un ou plusieurs déclencheurs de minuteur lorsque vous créez ou mettez à jour la tâche.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. La planification d’une tâche est utile pour exécuter des charges de travail de conteneur selon une planification définie, ou pour exécuter des opérations de maintenance ou des tests sur des images transmises régulièrement à votre registre.Scheduling a task is useful for running container workloads on a defined schedule, or running maintenance operations or tests on images pushed regularly to your registry. Pour plus d’informations, consultez Exécuter une tâche ACR selon une planification définie.For details, see Run an ACR task on a defined schedule.

Tâches multiétapesMulti-step tasks

Les tâches multiétapes permettent la définition et l’exécution basées sur une tâche pour la génération, le test et la mise à jour corrective d’images conteneur dans le cloud.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. Les étapes de tâche définies dans un fichier YAML spécifient les opérations de création et Push individuelles pour les images conteneur ou d’autres artefacts.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. Elles permettent également de définir l’exécution d’un ou plusieurs conteneurs, en utilisant à chaque étape le conteneur comme son environnement d’exécution.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Par exemple, vous pouvez créer une tâche à plusieurs étapes qui automatise les opérations suivantes :For example, you can create a multi-step task that automates the following:

  1. Compiler une image d’application webBuild a web application image
  2. Exécuter le conteneur d’application webRun the web application container
  3. Compiler une image test d’application webBuild a web application test image
  4. Exécuter le conteneur de test de l’application web qui effectue des tests sur le conteneur d’application en cours d’exécutionRun the web application test container, which performs tests against the running application container
  5. Si les tests réussissent, compilez un package d’archivage du graphique HelmIf the tests pass, build a Helm chart archive package
  6. Effectuer un helm upgrade à l’aide du nouveau package d’archivage du graphique HelmPerform a helm upgrade using the new Helm chart archive package

Les tâches à plusieurs étapes vous permettent de fractionner la génération, l’exécution et le test d’une image en étapes plus composables, avec prise en charge des dépendances entre chacune d’elles.Multi-step tasks enable you to split the building, running, and testing of an image into more composable steps, with inter-step dependency support. Grâce aux tâches à plusieurs étapes d’ACR Tasks, vous contrôlez plus finement la génération d’images, le test la mise à jour corrective du système d’exploitation et du framework.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Pour en savoir plus sur les tâches à plusieurs étapes, consultez Run multi-step build, test, and patch tasks in ACR Tasks (Exécuter des tâches à plusieurs étapes de génération, de test et de correction dans ACR Tasks).Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

Emplacements de contexteContext locations

Le tableau suivant présente quelques exemples d’emplacements de contexte pris en charge pour ACR Tasks :The following table shows a few examples of supported context locations for ACR Tasks:

Emplacement du contexteContext location DescriptionDescription ExempleExample
Système de fichiers localLocal filesystem Fichiers dans un répertoire sur le système de fichiers local.Files within a directory on the local filesystem. /home/user/projects/myapp
Branche principale GitHubGitHub master branch Fichiers dans la branche maître (ou autre branche par défaut) d’un référentiel GitHub public ou privé.Files within the master (or other default) branch of a public or private GitHub repository. https://github.com/gituser/myapp-repo.git
Branche GitHubGitHub branch Branche spécifique d’un référentiel GitHub public ou privé.Specific branch of a public or private GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
Sous-dossier de GitHubGitHub subfolder Fichiers dans un sous-dossier d’un référentiel GitHub public ou privé.Files within a subfolder in a public or private GitHub repo. L’exemple affiche la combinaison de spécifications de branche et de sous-dossier.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Validation GitHubGitHub commit Validation spécifique d’un référentiel GitHub public ou privé.Specific commit in a public or private GitHub repo. L’exemple affiche la combinaison de spécifications de hachage de validation (SHA) et de sous-dossier.Example shows combination of a commit hash (SHA) and subfolder specification. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Sous-dossier Azure DevOpsAzure DevOps subfolder Fichiers dans le sous-dossier d’un référentiel Azure public ou privé.Files within a subfolder in a public or private Azure repo. L’exemple montre la combinaison de spécifications de branche et de sous-dossier.Example shows combination of branch and subfolder specification. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Tarball distantRemote tarball Fichiers dans une archive compressée sur un serveur Web à distance.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz

Notes

Lorsque vous utilisez un référentiel Git privé comme contexte pour une tâche, vous devez fournir un jeton d’accès personnel (PAT).When using a private Git repo as a context for a task, you need to provide a personal access token (PAT).

Plateformes d’imagesImage platforms

Par défaut, ACR Tasks génère des images pour le système d’exploitation Linux et l’architecture amd64.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. Spécifiez l’étiquette --platform pour créer des images Windows ou des images Linux pour d’autres architectures.Specify the --platform tag to build Windows images or Linux images for other architectures. Spécifiez le système d’exploitation et éventuellement une architecture prise en charge au format système d’exploitation/architecture (par exemple, --platform Linux/arm).Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). Pour les architectures ARM, spécifiez éventuellement une variante au format système d’exploitation/architecture/variante (par exemple, --platform Linux/arm64/v8) :For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

Système d''exploitationOS ArchitectureArchitecture
LinuxLinux amd64amd64
armarm
arm64arm64
386386
WindowsWindows amd64amd64

Afficher la sortie des tâchesView task output

Chaque exécution de tâche génère une sortie de journal que vous pouvez inspecter pour déterminer si les étapes de la tâche ont été exécutées avec succès.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Quand vous déclenchez manuellement une tâche, la sortie de journal pour l’exécution de la tâche est envoyée en streaming à la console et stockée pour une récupération ultérieure.When you trigger a task manually, log output for the task run is streamed to the console and also stored for later retrieval. Lorsqu’une tâche est déclenchée automatiquement, par exemple par une validation de code source ou une mise à jour d’image de base, les journaux des tâches sont uniquement stockés.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Affichez les journaux d’exécution dans le portail Azure ou utilisez la commande az acr task logs.View the run logs in the Azure portal, or use the az acr task logs command.

Apprenez-en davantage sur l’affichage et la gestion des journaux des tâches.See more about viewing and managing task logs.

Étapes suivantesNext steps

Lorsque vous êtes prêt à automatiser les builds et la maintenance des images conteneur dans le cloud, consultez la série de tutoriels sur ACR Tasks.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

Si vous le souhaitez, vous pouvez installer l’extension Docker pour Visual Studio Code et l’extension Compte Azure pour utiliser vos registres de conteneurs Azure.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. Dans Visual Studio Code, vous pouvez tirer (pull) et envoyer (push) des images vers un registre de conteneurs Azure, et exécuter ACR Tasks.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.