Configure una instancia de ACR Enterprise Edition para compilar y enviar automáticamente imágenes de contenedor cada vez que confirme código en un repositorio vinculado. Una vez configurada, cada cambio en el código activa una compilación y envía la imagen a su repositorio.
Requisitos previos
Antes de empezar, asegúrese de lo siguiente:
Creó una instancia de Container Registry Enterprise Edition. Para obtener más información, consulte la sección "Paso 1: Crear una instancia de Container Registry Enterprise Edition" del tema Push an image to a Container Registry Enterprise Edition instance and pull an image from the instance.
Cuenta con un Dockerfile en su repositorio de origen para compilar las imágenes.
Contexto
El servicio de compilación de imágenes de ACR Enterprise Edition ofrece las siguientes capacidades:
Seguridad: cada tarea de compilación se ejecuta en un entorno exclusivo para su cuenta de Alibaba Cloud. Esto garantiza un aislamiento sólido entre inquilinos.
Estabilidad: las tareas de compilación se ejecutan en su entorno dedicado. Por ello, los tiempos de compilación se mantienen constantes en múltiples compilaciones del mismo repositorio de código fuente.
-
Aceleración inteligente:
ACR usa BuildKit de forma predeterminada. Esta herramienta ofrece capacidades sólidas para escenarios de compilación por etapas y admite funciones avanzadas de compilación.
ACR almacena localmente las imágenes base comunes. Así, las compilaciones no necesitan extraerlas de fuentes externas y el tiempo de compilación se reduce.
ACR utiliza cachés remotas para acelerar aún más la compilación de imágenes.
Plataformas de hosting de código compatibles
La siguiente tabla muestra las plataformas de hosting de código que admite Container Registry Enterprise Edition:
-
ACR es compatible con las siguientes plataformas de hosting de código:
Plataforma de hosting de código
Versión
Método de autenticación para la vinculación
Límite para activar compilaciones de imágenes
Gitee
Todas las versiones
Autenticación OAuth de Gitee
Ninguna
GitHub
Versión para desarrolladores de GitHub
Autenticación OAuth de GitHub
Ninguna
GitLab
Todas las versiones
Token de acceso personal
Ninguna
Bitbucket
Todas las versiones
Autenticación OAuth de Gitee
Ninguna
NotaLas instancias de Personal Edition no se pueden vincular a Gitee.
Generación acelerada de imágenes: después de enviar una imagen de contenedor, ACR puede generar automáticamente una versión acelerada de esta. Para obtener más información, consulte Load resources of a container image on demand.
Paso 1: Vincular la instancia a una plataforma de hosting de código
Vincule la instancia a una plataforma de hosting de código para que ACR acceda a su código fuente y active compilaciones cuando haya cambios. Para consultar las instrucciones detalladas, vea Bind a source code hosting platform.
No es posible compilar imágenes desde un repositorio de código local.
Para vincular un repositorio de código privado de GitLab en una red virtual privada (VPC), consulte Build a container image in a VPC.
Paso 2: Crear un espacio de nombres
Cree un espacio de nombres para organizar sus repositorios de imágenes. Si habilita la creación automática de repositorios, podrá configurar ajustes predeterminados que se aplicarán a todos los repositorios dentro de este espacio de nombres.
Inicie sesión en la consola de Container Registry.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Instances.
En la página Instances, haga clic en la instancia de Enterprise Edition donde desea crear el espacio de nombres.
En el panel de navegación izquierdo, elija .
En la página Namespace, haga clic en Create Namespace.
-
En el cuadro de diálogo Create Namespace, configure Namespace y establezca Automatically Create Repository en On o Off. Luego, haga clic en Confirm.
Si establece Automatically Create Repository en On, configure los siguientes parámetros:
Parámetro
Descripción
Repository Type
Seleccione Public o Private. Public: de forma predeterminada, las imágenes públicas requieren que los usuarios inicien sesión en la instancia antes de extraerlas. Para permitir extracciones anónimas, habilite el ajuste de extracción anónima pública de la instancia. Dado que cualquier usuario no autorizado puede extraer imágenes de repositorios públicos, configure los repositorios como Private para proteger sus datos. Private: los usuarios deben iniciar sesión en la instancia y contar con autorización de permiso Pull antes de extraer imágenes privadas.
Immutable Image Tags
Seleccione Flexible o Immutable. Cuando se establece en Immutable, ninguna etiqueta de imagen se puede sobrescribir, excepto latest.
Accelerated Image
Al habilitarse, se genera automáticamente una versión acelerada de cada imagen después de enviarla. La imagen acelerada incluye el sufijo _accelerated en su etiqueta.
Paso 3: Crear un repositorio de imágenes
Las imágenes aceleradas solo se pueden compilar en instancias de Container Registry Standard Edition o Advanced Edition. Actualice las instancias de Basic Edition a Standard Edition o Advanced Edition antes de compilar imágenes aceleradas.
Cree un repositorio de imágenes y vincúlelo a un repositorio de código fuente. Todas las imágenes compiladas desde ese repositorio de código fuente se enviarán a este repositorio de imágenes.
Inicie sesión en la consola de Container Registry.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Instances.
En la página Instances, haga clic en la instancia de Enterprise Edition que desea gestionar.
En el panel de navegación izquierdo, elija .
En la página Repositories, haga clic en Create Repository.
En el asistente Repository Info, configure Namespace, Repository Name, Repository Type, Image Version, Accelerated Image, Summary y Description. Después, haga clic en Next.
En el paso Code Source, configure Code Source, Build Settings y Build Rules. Luego, haga clic en Create Repository.
-
A continuación se describen los parámetros de Build Settings:
Parámetro
Descripción
Automatically Build Images When Code Changes
Al habilitarse, la regla de compilación se activa automáticamente cuando se confirma código en una rama.
Build With Servers Deployed Outside Chinese Mainland
Habilítelo si su código fuente está en GitHub o Bitbucket. También actívelo si su Dockerfile descarga dependencias fuera de China y la conexión de red transfronteriza es inestable. ACR utiliza un enlace acelerado para extraer fuentes de datos externas durante la compilación. Esta opción solo está disponible en regiones específicas. Si no aparece al crear un repositorio de imágenes, significa que la región actual no es compatible con esta función.
Build Without Cache
Al habilitarse, ACR extrae la imagen base desde el origen cada vez e ignora las capas almacenadas en la caché. Esto puede ralentizar las compilaciones. Deshabilite esta opción para usar las capas en caché y acelerar el proceso.
En la página Repositories, haga clic en el repositorio de imágenes creado. Si Build aparece en el panel de navegación izquierdo de la página de gestión del repositorio, el repositorio de imágenes quedó vinculado al repositorio de código fuente.
Paso 4: Compilar una imagen
Configure reglas de compilación para definir cómo y cuándo ACR compila imágenes desde su repositorio. Después, active una compilación y compruebe el resultado.
Si no encuentra Build en la página de gestión del repositorio, la instancia no está vinculada a la plataforma de hosting de código. Vuelva a Step 1 para vincular la instancia de nuevo.
Inicie sesión en la consola de Container Registry.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Instances.
En la página Instances, haga clic en la instancia de Enterprise Edition que desea gestionar.
En el panel de navegación izquierdo de la página de detalles de la instancia, elija .
En la página Repositories, busque el repositorio de imágenes que creó y haga clic en Manage en la columna Actions.
-
En el panel de navegación izquierdo, haga clic en Build. En la sección Build Rules, haga clic en Add Build Rule. En el paso Build Information, configure los siguientes parámetros y luego haga clic en Next.
Parámetro
Descripción
Type
El tipo de repositorio de código fuente. Valores válidos: Branch y Tag.
Branch/Tag
Seleccione o introduzca una rama o etiqueta. Se admiten expresiones regulares. Por ejemplo, si introduce release-(?<imageTag>\w*), ACR compila automáticamente una imagen cuando se actualiza el código fuente de la rama release-v1. Para obtener más información sobre grupos de captura con nombre, consulte Uso de expresiones regulares en grupos de captura con nombre.
NotaCuando utiliza una expresión regular, solo ACR puede activar compilaciones. No se admiten compilaciones manuales.
Build Context Directory
El directorio que contiene el Dockerfile, relativo a la raíz de la rama o etiqueta. Por ejemplo, si la rama es master y el Dockerfile se encuentra en la raíz de la rama, establézcalo en /.
Dockerfile Filename
El nombre del Dockerfile. El nombre predeterminado es Dockerfile.
-
En el paso Tag, configure los siguientes parámetros, haga clic en Save y luego en Next.
NotaHaga clic en Add Configuration para agregar etiquetas de imagen. Puede agregar hasta tres etiquetas de imagen.
Parámetro
Descripción
Image Tag
La etiqueta de la imagen compilada, por ejemplo, latest. Se admiten grupos de captura con nombre. Si definió un grupo de captura con nombre en Branch/Tag, haga referencia aquí al valor capturado.
Build Time
(Opcional) La hora (UTC+8) en la que se envió el código fuente. Formatos aceptados: 20201015 o 202010151613.
NotaSi configura este parámetro, solo ACR puede activar compilaciones. No se admiten compilaciones manuales.
Commit ID
(Opcional) La cantidad de caracteres que se utilizarán del ID de confirmación del código enviado más recientemente. De forma predeterminada, se usan los primeros seis caracteres. Ajuste el control deslizante para cambiar esta cantidad.
NotaSi configura este parámetro, solo ACR puede activar compilaciones. No se admiten compilaciones manuales.
-
En el paso Build Configurations, configure los siguientes parámetros y luego haga clic en Next.
Parámetro
Descripción
Build Architecture
Seleccione una o más arquitecturas de destino. Si selecciona varias arquitecturas, ACR genera una imagen independiente para cada una bajo la misma etiqueta.
Build Parameters
Pares clave-valor que se pasan al proceso de compilación. Los nombres de los parámetros distinguen entre mayúsculas y minúsculas. Configure hasta 20 parámetros de compilación al hacer clic en Add Configuration.
-
Active una compilación mediante uno de los siguientes métodos:
En la sección Build Rules de la página Build, busque la regla de compilación y haga clic en Build en la columna Actions.
Envíe una confirmación de código a la rama configurada del repositorio de código fuente para activar la regla de compilación automáticamente.
Supervise la compilación: en la sección Build Log, busque la tarea de compilación de la imagen y haga clic en Log en la columna Actions para consultar el registro de compilación. Para detener una compilación en ejecución, haga clic en Cancel en la columna Actions.
-
Compruebe el resultado: en el panel de navegación izquierdo, haga clic en Image Tag. Si la imagen que compiló aparece en la lista, la compilación fue exitosa.
En el panel de navegación izquierdo, haga clic en Image Tag. Si se muestra la imagen que creó, la imagen se compiló correctamente.
Ejemplos
Los dos ejemplos siguientes ilustran configuraciones comunes de reglas de compilación. El ejemplo 1 es una configuración sencilla que admite compilaciones manuales y automáticas. El ejemplo 2 utiliza una expresión regular para crear etiquetas de imagen versionadas a partir de los nombres de ramas de lanzamiento, y solo admite compilaciones automáticas.
Ejemplo 1: Compilar desde la rama principal (se permiten compilaciones manuales)
Objetivo: compilar una imagen con la etiqueta latest desde la rama main, que se pueda activar manualmente o de forma automática al enviar código.
|
Parámetro |
Valor |
|
Type |
Branch |
|
Branch/Tag |
main |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
latest |
Resultado: cuando hace clic en Build o cuando se actualiza el código fuente de la rama main, ACR compila la imagen con el Dockerfile del directorio raíz de dicha rama. La imagen compilada recibe la etiqueta latest.
Como Build Time y Commit ID no están configurados, usted puede activar compilaciones manualmente.
Ejemplo 2: Compilar desde una rama coincidente con una expresión regular (no se permiten compilaciones manuales)
Objetivo: compilar automáticamente imágenes versionadas desde ramas de lanzamiento, donde el nombre de la rama determina la etiqueta de la imagen.
|
Parámetro |
Valor |
|
Type |
Branch |
|
Branch/Tag |
release-(?<imageTag>\w*) |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
${imageTag} |
|
Build Time |
yyyyMMddHHmm |
|
Commit ID |
30 |
Resultado: cuando se actualiza el código fuente de una rama cuyo nombre comienza con release-, ACR compila una imagen automáticamente. La expresión regular release-(?<imageTag>\w*) captura la parte de la versión del nombre de la rama y la asigna a la variable imageTag, que luego se utiliza en la etiqueta de la imagen.
Por ejemplo, un envío a la rama release-v1 captura v1 como imageTag. Combinado con la hora de compilación y el ID de confirmación, la etiqueta de imagen resultante es: v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45.
Dado que Build Time y Commit ID están configurados, solo ACR puede activar esta compilación. No se admiten compilaciones manuales.
Qué hacer a continuación
Una vez compilada la imagen, utilícela en clústeres de Container Service for Kubernetes (ACK) de cualquiera de las siguientes maneras:
Extraer imágenes sin secretos: use el complemento aliyun-acr-credential-helper para autenticarse automáticamente. Para obtener más información, consulte Use the aliyun-acr-credential-helper component to pull images without using a Secret.
Desplegar la imagen como aplicación: cree un Deployment para ejecutar su imagen en un clúster de ACK. Para obtener más información, consulte Create a stateless application by using a Deployment.
Acelerar la extracción de imágenes: use la función de aceleración P2P para agilizar la distribución de imágenes entre nodos. Para obtener más información, consulte Use the P2P acceleration feature in ACK Serverless and ACK clusters.