Configurez une instance ACR Enterprise Edition pour générer et transférer automatiquement des images de conteneur à chaque validation de code dans un dépôt connecté. Après la configuration, toute modification de code déclenche une génération et un transfert vers votre dépôt d'images.
Prérequis
Avant de commencer, assurez-vous que :
Vous avez créé une instance Container Registry Enterprise Edition. Pour plus d'informations, consultez la section « Étape 1 : Créer une instance Container Registry Enterprise Edition » de la rubrique Transférer une image vers une instance Container Registry Enterprise Edition et extraire une image depuis l'instance.
Un fichier Dockerfile est présent dans votre dépôt source pour la génération d'images.
Informations générales
Le service de génération d'images ACR Enterprise Edition offre les fonctionnalités suivantes :
Sécurité : Chaque tâche de génération s'exécute dans un environnement exclusif à votre compte Alibaba Cloud, garantissant une isolation stricte entre les locataires.
Stabilité : Les tâches de génération s'exécutent dans votre environnement dédié, ce qui garantit des temps de génération constants pour plusieurs builds issus du même dépôt de code source.
-
Accélération intelligente :
ACR utilise BuildKit par défaut, qui offre des capacités robustes pour les scénarios de génération en plusieurs étapes et prend en charge de nombreuses fonctionnalités de build.
ACR héberge localement les images de base courantes, évitant ainsi leur téléchargement depuis des sources externes et réduisant le temps de génération.
ACR utilise des caches distants pour accélérer davantage la génération d'images.
Plateformes d'hébergement de code prises en charge
Le tableau suivant répertorie les plateformes d'hébergement de code prises en charge par Container Registry Enterprise Edition :
-
ACR prend en charge les plateformes d'hébergement de code suivantes :
Plateforme d'hébergement de code
Version
Méthode d'authentification pour la liaison
Limite de déclenchement des générations d'images
Gitee
Toutes les versions
Authentification OAuth Gitee
Aucune
GitHub
Version développeur GitHub
Authentification OAuth GitHub
Aucune
GitLab
Toutes les versions
Jeton d'accès personnel
Aucune
Bitbucket
Toutes les versions
Authentification OAuth Gitee
Aucune
RemarqueLes instances Personal Edition ne peuvent pas être liées à Gitee.
Génération d'images accélérées : Après avoir transféré une image de conteneur, ACR peut générer automatiquement une version accélérée de celle-ci. Pour plus d'informations, consultez la rubrique Charger les ressources d'une image de conteneur à la demande.
Étape 1 : Lier votre instance à une plateforme d'hébergement de code
Liez l'instance à une plateforme d'hébergement de code afin qu'ACR puisse accéder à votre code source et déclencher des générations lors des modifications de code. Pour obtenir des instructions détaillées, consultez la rubrique Lier une plateforme d'hébergement de code source.
Vous ne pouvez pas générer d'images à partir d'un dépôt de code local (on-premises).
Pour lier un dépôt de code GitLab privé dans un cloud privé virtuel (VPC), consultez la rubrique Générer une image de conteneur dans un VPC.
Étape 2 : Créer un namespace
Créez un namespace pour organiser vos dépôts d'images. L'activation de la création automatique de dépôts vous permet de configurer des paramètres par défaut appliqués à tous les dépôts sous ce namespace.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition pour laquelle vous souhaitez créer un namespace.
Dans le volet de navigation de gauche, choisissez Repository > Namespace.
Sur la page Namespace, cliquez sur Create Namespace.
-
Dans le panneau latéral Create Namespace, configurez Namespace et définissez Automatically Create Repository sur On ou Off. Puis cliquez sur Confirm.
Si vous définissez Automatically Create Repository sur On, configurez les paramètres suivants :
Paramètre
Description
Repository Type
Sélectionnez Public ou Private. Public : Par défaut, les images publiques nécessitent que les utilisateurs se connectent à l'instance avant de pouvoir les extraire. Pour autoriser les extractions anonymes, activez le paramètre d'extraction publique anonyme de l'instance. Étant donné que les dépôts publics peuvent être extraits par des utilisateurs non autorisés, définissez les dépôts sur Private pour protéger vos données. Private : Les utilisateurs doivent se connecter à l'instance et disposer d'une autorisation Pull avant de pouvoir extraire des images privées.
Immutable Image Tags
Sélectionnez Flexible ou Immutable. Lorsque ce paramètre est défini sur Immutable, tous les tags d'image sauf latest ne peuvent pas être écrasés.
Accelerated Images
Lorsque cette option est activée, une version accélérée de chaque image est automatiquement générée après le transfert de l'image. Le tag de l'image accélérée comporte le suffixe _accelerated.
Étape 3 : Créer un dépôt d'images
Les images accélérées ne peuvent être générées que sur des instances Container Registry Standard Edition ou Advanced Edition. Mettez à niveau les instances Basic Edition vers Standard Edition ou Advanced Edition avant de générer des images accélérées.
Créez un dépôt d'images et liez-le à un dépôt de code source. Toutes les images générées à partir de ce dépôt de code source sont transférées vers ce dépôt d'images.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.
Dans le volet de navigation de gauche, choisissez Repository > Repositories.
Sur la page Repositories, cliquez sur Create Repository.
À l'étape Repository Info, configurez Namespace, Repository Name, Repository Type, Tags, Accelerated Image, Summary et Description. Puis cliquez sur Next.
À l'étape Code Source, configurez Code Source, Build Settings et Build Rules, puis cliquez sur Create Repository.
-
Le tableau suivant décrit les paramètres de Build Settings :
Paramètre
Description
Automatically Build Images When Code Changes
Lorsque cette option est activée, la règle de génération est automatiquement déclenchée lorsque du code est validé dans une branche.
Build With Servers Deployed Outside Chinese Mainland
Activez cette option si votre source de code se trouve sur GitHub ou Bitbucket, ou si votre Dockerfile télécharge des dépendances depuis l'extérieur de la Chine et que la connexion réseau transfrontalière est instable. ACR utilise un lien accéléré pour extraire les sources de données externes pendant la génération. Cette option n'est disponible que dans certaines régions. Si l'option n'apparaît pas lors de la création d'un dépôt d'images, la région actuelle ne prend pas en charge cette fonctionnalité.
Build Without Cache
Lorsque cette option est activée, ACR extrait l'image de base depuis la source à chaque fois, en ignorant les couches mises en cache. Cela peut ralentir les générations. Désactivez cette option pour utiliser les couches mises en cache et accélérer les builds.
Sur la page Repositories, cliquez sur le dépôt d'images créé. Si Build s'affiche dans le volet de navigation de gauche de la page de gestion du dépôt, le dépôt d'images est lié au dépôt de code source.
Étape 4 : Générer une image
Configurez des règles de génération pour définir comment et quand ACR génère des images à partir de votre dépôt, puis déclenchez une génération et vérifiez le résultat.
Si vous ne trouvez pas Build dans la page de gestion du dépôt, l'instance n'est pas liée à la plateforme d'hébergement de code. Revenez à l'Étape 1 pour relier l'instance.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.
Dans le volet de navigation de gauche de la page des détails de l'instance, choisissez .
Sur la page Repositories, recherchez le dépôt d'images que vous avez créé et cliquez sur Manage dans la colonne Actions.
-
Dans le volet de navigation de gauche, cliquez sur Build. Dans la section Build Rules, cliquez sur Add Build Rule. À l'étape Build Information, configurez les paramètres suivants, puis cliquez sur Next.
Paramètre
Description
Type
Le type de dépôt de code source. Valeurs possibles : Branch et Tag.
Branch/Tag
Sélectionnez ou saisissez une branche ou un tag. Les expressions régulières sont prises en charge. Par exemple, si vous saisissez release-(?<imageTag>\w*) , ACR génère automatiquement une image lorsque le code source de la branche release-v1 est mis à jour. Pour plus d'informations sur les groupes de capture nommés, consultez Utiliser des expressions régulières dans les groupes de capture nommés .
RemarqueLorsque vous utilisez une expression régulière, seul ACR peut déclencher des générations. Les générations manuelles ne sont pas prises en charge.
Build Context Directory
Le répertoire contenant le Dockerfile, relatif à la racine de la branche ou du tag. Par exemple, si la branche est master et que le Dockerfile se trouve à la racine de la branche, définissez ce paramètre sur /.
Dockerfile Filename
Le nom du fichier Dockerfile. Le nom par défaut est Dockerfile.
-
À l'étape Tag, configurez les paramètres suivants, cliquez sur Save, puis sur Next.
RemarqueCliquez sur Add Configuration pour ajouter des tags d'image. Vous pouvez ajouter jusqu'à trois tags d'image.
Paramètre
Description
Image Tag
Le tag de l'image générée, par exemple latest. Les groupes de capture nommés sont pris en charge. Si vous avez défini un groupe de capture nommé dans Branch/Tag, référencez la valeur capturée ici.
Build Time
(Facultatif) L'heure (UTC+8) à laquelle le code source est transféré. Formats acceptés : 20201015 ou 202010151613 .
RemarqueSi vous définissez ce paramètre, seul ACR peut déclencher des générations. Les générations manuelles ne sont pas prises en charge.
Commit ID
(Facultatif) Le nombre de caractères à utiliser à partir de l'ID de validation (commit) du code transféré le plus récemment. Par défaut, les six premiers caractères sont utilisés. Ajustez le curseur pour modifier le nombre.
RemarqueSi vous définissez ce paramètre, seul ACR peut déclencher des générations. Les générations manuelles ne sont pas prises en charge.
-
À l'étape Build Configurations, configurez les paramètres suivants, puis cliquez sur Next.
Paramètre
Description
Build Architecture
Sélectionnez une ou plusieurs architectures cibles. Si vous sélectionnez plusieurs architectures, ACR génère une image distincte pour chaque architecture sous le même tag.
Build Parameters
Paires clé-valeur transmises au processus de génération. Les noms de paramètres sont sensibles à la casse. Configurez jusqu'à 20 paramètres de génération en cliquant sur Add Configuration.
-
Déclenchez une génération en utilisant l'une des méthodes suivantes :
Dans la section Build Rules de la page Build, recherchez la règle de génération et cliquez sur Build dans la colonne Actions.
Poussez une validation de code vers la branche configurée du dépôt de code source pour déclencher automatiquement la règle de génération.
Surveillez la génération : Dans la section Build Log, recherchez la tâche de génération d'image et cliquez sur Log dans la colonne Actions pour afficher le journal de génération. Pour arrêter une génération en cours, cliquez sur Cancel dans la colonne Actions.
-
Vérifiez le résultat : Dans le volet de navigation de gauche, cliquez sur Image Tag. Si l'image que vous avez générée est répertoriée, la génération a réussi.
Dans le volet de navigation de gauche, cliquez sur Image Tag. Si l'image que vous avez créée s'affiche, l'image est générée.
Exemples
Les deux exemples suivants illustrent des configurations courantes de règles de génération. L'exemple 1 est une configuration simple qui prend en charge les générations manuelles et automatiques. L'exemple 2 utilise une expression régulière pour créer des tags d'image versionnés à partir des noms de branches de release, et ne prend en charge que les générations automatiques.
Exemple 1 : Génération à partir de la branche principale (générations manuelles autorisées)
Objectif : Générer une image avec le tag latest à partir de la branche principale, déclenchable manuellement ou automatiquement lors du push de code.
|
Paramètre |
Valeur |
|
Type |
Branch |
|
Branch/Tag |
main |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
latest |
Résultat : Lorsque vous cliquez sur Build ou lorsque le code source de la branche main est mis à jour, ACR génère l'image en utilisant le Dockerfile situé dans le répertoire racine de la branche main. L'image générée reçoit le tag latest.
Étant donné que Build Time et Commit ID ne sont pas configurés, vous pouvez déclencher des générations manuellement.

Exemple 2 : Génération à partir d'une branche correspondant à une regex (générations manuelles non autorisées)
Objectif : Générer automatiquement des images versionnées à partir des branches de release, où le nom de la branche détermine le tag de l'image.
|
Paramètre |
Valeur |
|
Type |
Branch |
|
Branch/Tag |
release-(?<imageTag>\w*) |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
${imageTag} |
|
Build Time |
yyyyMMddHHmm |
|
Commit ID |
30 |
Résultat : Lorsque le code source d'une branche dont le nom commence par release- est mis à jour, ACR génère automatiquement une image. L'expression régulière release-(?<imageTag>\w*) capture la partie version du nom de la branche et l'assigne à la variable imageTag, qui est ensuite utilisée dans le tag de l'image.
Par exemple, un push vers la branche release-v1 capture v1 comme imageTag. Combiné avec l'heure de génération et l'ID de commit, le tag d'image résultant est : v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45.
Étant donné que Build Time et Commit ID sont configurés, seul ACR peut déclencher cette génération. Les générations manuelles ne sont pas prises en charge.

Étapes suivantes
Une fois l'image générée, utilisez-la dans les clusters Container Service for Kubernetes (ACK) de l'une des manières suivantes :
Extraire des images sans secrets : Utilisez le module complémentaire aliyun-acr-credential-helper pour vous authentifier automatiquement. Pour plus d'informations, consultez la rubrique Utiliser le composant aliyun-acr-credential-helper pour extraire des images sans utiliser de Secret.
Déployer l'image en tant qu'application : Créez un Deployment pour exécuter votre image dans un cluster ACK. Pour plus d'informations, consultez la rubrique Créer une application sans état à l'aide d'un Deployment.
Accélérer l'extraction d'images : Utilisez la fonctionnalité d'accélération P2P pour accélérer la distribution des images entre les nœuds. Pour plus d'informations, consultez la rubrique Utiliser la fonctionnalité d'accélération P2P dans les clusters ACK Serverless et ACK.