Referencia de ACR Tasks: YAML
La definición de tareas de varios pasos en ACR Tasks proporciona un primitivo de proceso centrado en el contenedor enfocado a compilar y probar contenedores, y aplicarles revisiones. En este artículo se tratan los comandos, parámetros, propiedades y sintaxis de los archivos YAML que definen las tareas de varios pasos.
Este artículo contiene la referencia para crear archivos YAML de tarea de varios pasos para ACR Tasks. Para una introducción a ACR Tasks, consulte la introducción a ACR Tasks.
formato de archivo acr-task.yaml
ACR Tasks admite la declaración de tareas de varios pasos en la sintaxis estándar de YAML. Puede definir los pasos de una tarea en un archivo YAML. Luego, puede ejecutar manualmente la tarea si pasa el archivo al comando az acr run. O bien, use el archivo para crear una tarea con az acr task create que se desencadena automáticamente en una confirmación de GIT, en una actualización de imagen base o en una programación. Aunque en este artículo se hace referencia a acr-task.yaml
como el archivo que contiene los pasos, ACR Tasks admite cualquier nombre de archivo válido con una extensión admitida.
Los primitivos acr-task.yaml
de nivel superior son propiedades de tareas, tipos de pasos y propiedades de pasos:
- Las propiedades de tareas se aplican a todos los pasos a lo largo de la ejecución de tareas. Hay varias propiedades de tarea globales, entre las que se incluyen:
version
stepTimeout
workingDirectory
- Los tipos de pasos de tareas representan los tipos de acciones que se pueden realizar en una tarea. Hay tres tipos de pasos:
build
push
cmd
- Las propiedades de pasos de tareas son parámetros que se aplican a un paso individual. Hay varias propiedades de paso, entre las que se incluyen:
startDelay
timeout
when
- y muchas más.
Le sigue el formato base de un archivo acr-task.yaml
, incluidas algunas propiedades de pasos comunes. Aunque no es una representación exhaustiva de todo el uso de propiedades de pasos o tipos de pasos, proporciona una información general rápida del formato de archivo básico.
version: # acr-task.yaml format version.
stepTimeout: # Seconds each step may take.
steps: # A collection of image or container actions.
- build: # Equivalent to "docker build," but in a multi-tenant environment
- push: # Push a newly built or retagged image to a registry.
when: # Step property that defines either parallel or dependent step execution.
- cmd: # Executes a container, supports specifying an [ENTRYPOINT] and parameters.
startDelay: # Step property that specifies the number of seconds to wait before starting execution.
Extensiones de nombre de archivo de tareas admitidas
ACR Tasks ha reservado varias extensiones de nombre de archivo, como .yaml
, que se procesarán como un archivo de tarea. Cualquier extensión que no se encuentre en la siguiente lista se considera un archivo Dockerfile en ACR Tasks: .yaml, .yml, .toml, .json, .sh, .bash, .zsh,. ps1, .ps, .cmd, .bat, TS, .js, .php, .py,. RB, .lua.
YAML es el único formato de archivo compatible actualmente con ACR Tasks. Las demás extensiones de nombre de archivo están reservadas para posible compatibilidad futura.
Ejecución de las tareas de ejemplo
Son varios los archivos de tareas de ejemplo a los que se hace referencia en las siguientes secciones de este artículo. Las tareas de ejemplo están en un repositorio público de GitHub, Azure-Samples/acr-tasks. Puede ejecutarlas con el comando az acr run de la CLI de Azure. Los comandos de ejemplo son parecidos a:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
En el formato de los comandos de ejemplo se da por hecho que ha configurado un registro de forma predeterminada en la CLI de Azure, por lo que se omite el parámetro --registry
. Para configurar un registro predeterminado, use el comando az config con el comando set
, que acepta el par de clave y valor defaults.acr=REGISTRY_NAME
.
Por ejemplo, para configurar la CLI de Azure con un registro predeterminado llamado "myregistry":
az config set defaults.acr=myregistry
Propiedades de tareas
Las propiedades de tareas suelen aparecer en la parte superior de un archivo acr-task.yaml
y son propiedades globales que se aplican a lo largo de la ejecución completa de los pasos de una tarea. Algunas de estas propiedades globales se pueden reemplazar dentro de un paso individual.
Propiedad | Tipo | Opcional | Descripción | Invalidación admitida | Valor predeterminado |
---|---|---|---|---|---|
version |
string | Sí | La versión del archivo acr-task.yaml analizada por el servicio ACR Tasks. Si bien ACR Tasks se esfuerza por mantener la compatibilidad con versiones anteriores, este valor permite que ACR Tasks mantenga la compatibilidad dentro de una versión definida. Si no se especifica, el valor predeterminado es v1.0.0 . |
N/D | v1.0.0 |
stepTimeout |
int (segundos) | Sí | El número máximo de segundos que se puede ejecutar un paso. Si se especifica la propiedad stepTimeout en una tarea, se establece la propiedad timeout predeterminada de todos los pasos. Si se especifica la propiedad timeout en un paso, invalida la propiedad stepTimeout proporcionada por la tarea.La suma de los valores de tiempo de espera del paso para una tarea debe ser igual al valor de la propiedad timeout de la ejecución de la tarea (por ejemplo, establecida al pasar --timeout al comando az acr task create ). Si el valor de timeout de la ejecución de las tareas es menor, tiene prioridad. |
Sí | 600 (10 minutos) |
workingDirectory |
string | Sí | El directorio de trabajo del contenedor durante el tiempo de ejecución. Si la propiedad se especifica en una tarea, establece la propiedad workingDirectory predeterminada de todos los pasos. Si se especifica en un paso, invalida la propiedad que la tarea proporciona. |
Sí | c:\workspace en Windows o /workspace en Linux |
env |
[string, string, ...] | Sí | Matriz de cadenas en formato key=value que define las variables de entorno de la tarea. Si la propiedad se especifica en una tarea, establece la propiedad env predeterminada de todos los pasos. Si se especifica en un paso, invalida las variables de entorno heredadas de la tarea. |
Sí | None |
secrets |
[secret, secret, ...] | Sí | Matriz de objetos de secreto. | No | None |
networks |
[network, network, ...] | Sí | Matriz de objetos de red. | No | None |
volumes |
[volume, volume, ...] | Sí | Matriz de objetos volume. Especifica volúmenes con contenido de origen que se van a montar en un paso. | No | None |
secret
El objeto de secreto tiene estas propiedades.
Propiedad | Tipo | Opcional | Descripción | Valor predeterminado |
---|---|---|---|---|
id |
string | No | El identificador del secreto. | None |
keyvault |
string | Sí | La dirección URL del secreto de Azure Key Vault. | None |
clientID |
string | Sí | El identificador de cliente de la identidad administrada asignada por el usuario para los recursos de Azure. | None |
red
El objeto de red tiene estas propiedades.
Propiedad | Tipo | Opcional | Descripción | Valor predeterminado |
---|---|---|---|---|
name |
string | No | El nombre de la red. | None |
driver |
string | Sí | El controlador para administrar la red. | None |
ipv6 |
bool | Sí | Si la red IPv6 está habilitada. | false |
skipCreation |
bool | Sí | Si se omite la creación de la red. | false |
isDefault |
bool | Sí | Si la red es una red predeterminada proporcionada con Azure Container Registry. | false |
volumen
El objeto volume tiene las siguientes propiedades.
Propiedad | Tipo | Opcional | Descripción | Valor predeterminado |
---|---|---|---|---|
name |
string | No | Nombre del volumen que se va a montar. Solo puede contener caracteres alfanuméricos, "-" y "_". | None |
secret |
map[string]string | No | Cada clave del mapa es el nombre de un archivo creado y rellenado en el volumen. Cada valor es la versión de cadena del secreto. Los valores del secreto deben estar codificados con Base64. | None |
Tipos de pasos de tareas
ACR Tasks admite tres tipos de pasos. Cada tipo de paso admite varias propiedades, que se detallan en la sección para cada tipo de paso.
Tipo de paso | Descripción |
---|---|
build |
Compila una imagen de contenedor mediante la conocida sintaxis docker build . |
push |
Ejecuta una acción docker push de imágenes recién compiladas o etiquetadas de nuevo en un registro de contenedor. Se admite Azure Container Registry, otros registros privados y Docker Hub público. |
cmd |
Ejecuta un contenedor como un comando, con parámetros que se pasan al elemento [ENTRYPOINT] del contenedor. El tipo de paso cmd admite parámetros como env , detach y otras opciones de comando docker run conocidas, que permiten pruebas unitarias y funcionales con la ejecución simultánea del contenedor. |
build
Compila una imagen de contenedor. El tipo de paso build
representa un medio multiinquilino seguro de ejecutar docker build
en la nube como un primitivo de primera clase.
Sintaxis: build
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Ejecute el comando az acr runpara obtener la versión de Docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Agregue una variable de entorno DOCKER_BUILDKIT=1
en el archivo yaml para habilitar buildkit
y usar secret
con buildkit
.
El tipo de paso build
admite los parámetros de la tabla siguiente. El tipo de paso build
también es compatible con todas las opciones del comando compilación de docker, como --build-arg
para establecer las variables en tiempo de compilación.
Parámetro | Descripción | Opcional |
---|---|---|
-t | --image |
Define el elemento completo image:tag de la imagen compilada.Como se pueden usar imágenes para las validaciones de tareas internas, no todas las imágenes requieren la acción push en un registro. Sin embargo, para crear una instancia de una imagen dentro de una ejecución de tareas, la imagen necesita un nombre al que hacer referencia.A diferencia de az acr build , la ejecución de ACR Tasks no proporciona un comportamiento de inserción predeterminado. Con ACR Tasks, en el escenario predeterminado se da por hecho la posibilidad de compilar, validar y luego insertar una imagen. Consulte push para ver como insertar opcionalmente imágenes compiladas. |
Sí |
-f | --file |
Especifica el archivo Dockerfile que se pasa a docker build . Si no se especifica, se da por hecho el archivo Dockerfile predeterminado en la raíz del contexto. Para especificar un archivo Dockerfile, pase el nombre de archivo relativo a la raíz del contexto. |
Sí |
context |
El directorio raíz pasado a docker build . El directorio raíz de cada tarea se establece en un directorio workingDirectory compartido, e incluye la raíz del directorio clonado de Git asociado. |
No |
Propiedades: build
El tipo de paso build
admite las siguientes propiedades. Encuentre detalles de estas propiedades en la sección Propiedades de pasos de tareas de este artículo.
Propiedades | Tipo | Obligatorio |
---|---|---|
detach |
bool | Opcional |
disableWorkingDirectoryOverride |
bool | Opcional |
entryPoint |
string | Opcional |
env |
[string, string, ...] | Opcional |
expose |
[string, string, ...] | Opcional |
id |
string | Opcional |
ignoreErrors |
bool | Opcional |
isolation |
string | Opcional |
keep |
bool | Opcional |
network |
object | Opcional |
ports |
[string, string, ...] | Opcional |
pull |
bool | Opcional |
repeat |
int | Opcional |
retries |
int | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
object | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
object | Opcional |
when |
[string, string, ...] | Opcional |
workingDirectory |
string | Opcional |
Ejemplos: build
Imagen de compilación: contexto en raíz
az acr run -f build-hello-world.yaml https://github.com/AzureCR/acr-tasks-sample.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile .
Imagen de compilación: contexto en el subdirectorio
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
Variable dinámica que pasa tareas de ACR
Al trabajar con tareas de Azure Container Registry (ACR), es posible que necesite pasar valores diferentes al proceso de compilación sin cambiar la definición de tarea mediante la marca con el --set
az acr task run
comando .
Ejemplo: Establecimiento de la etiqueta de imagen en tiempo de ejecución
Supongamos que tiene una tarea de ACR definida en un acr-task.yml
archivo con un marcador de posición para la etiqueta de imagen:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
Puede desencadenar la tarea y establecer la tag
variable v2
en en tiempo de ejecución mediante el siguiente comando de la CLI de Azure:
az acr task run --registry myregistry --name mytask --set tag=v2
Este comando iniciará la tarea de ACR denominada mytask
y compilará la imagen con la v2
etiqueta , reemplazando el marcador de posición en el acr-task.yml
archivo.
Este enfoque permite la personalización en las canalizaciones de CI/CD, lo que le permite ajustar dinámicamente los parámetros en función de sus necesidades actuales sin modificar las definiciones de tareas.
push
Inserta una o varias imágenes compiladas o etiquetadas de nuevo en un registro de contenedor. Admite la inserción en registros privados como Azure Container Registry o Docker Hub público.
Sintaxis: push
El tipo de paso push
admite una colección de imágenes. La sintaxis de la colección YAML admite formatos alineados y anidados. La inserción de una sola imagen se representa normalmente mediante sintaxis alineada:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Para una mejor legibilidad, use sintaxis anidada al insertar varias imágenes:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Propiedades: push
El tipo de paso push
admite las siguientes propiedades. Encuentre detalles de estas propiedades en la sección Propiedades de pasos de tareas de este artículo.
Propiedad | Type | Obligatorio |
---|---|---|
env |
[string, string, ...] | Opcional |
id |
string | Opcional |
ignoreErrors |
bool | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
when |
[string, string, ...] | Opcional |
Ejemplos: push
Insertar varias imágenes
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
Compilar, insertar y ejecutar
az acr run -f build-run-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
- cmd: $Registry/hello-world:$ID
cmd
El tipo de paso cmd
ejecuta un contenedor.
Sintaxis: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Propiedades: cmd
El tipo de paso cmd
admite las siguientes propiedades:
Propiedad | Type | Obligatorio |
---|---|---|
detach |
bool | Opcional |
disableWorkingDirectoryOverride |
bool | Opcional |
entryPoint |
string | Opcional |
env |
[string, string, ...] | Opcional |
expose |
[string, string, ...] | Opcional |
id |
string | Opcional |
ignoreErrors |
bool | Opcional |
isolation |
string | Opcional |
keep |
bool | Opcional |
network |
object | Opcional |
ports |
[string, string, ...] | Opcional |
pull |
bool | Opcional |
repeat |
int | Opcional |
retries |
int | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
object | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
object | Opcional |
when |
[string, string, ...] | Opcional |
workingDirectory |
string | Opcional |
Puede encontrar detalles de estas propiedades en la sección Propiedades de pasos de tareas de este artículo.
Ejemplos: cmd
Ejecutar la imagen hello world
Este comando ejecuta el archivo de tarea hello-world.yaml
, que hace referencia a la imagen hello world de Docker Hub.
az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: mcr.microsoft.com/hello-world
Ejecutar imagen de Bash y repetir "hello world"
Este comando ejecuta el archivo de tarea bash-echo.yaml
, que hace referencia a la imagen bash de Docker Hub.
az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo hello world
Ejecutar etiqueta de imagen de Bash específica
Para ejecutar una versión de imagen concreta, especifique la etiqueta en cmd
.
Este comando ejecuta el archivo de tarea bash-echo-3.yaml
, que hace referencia a la imagen bash:3.0 de Docker Hub.
az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash:3.0 echo hello world
Ejecutar imágenes personalizadas
El tipo de paso cmd
hace referencia a las imágenes mediante el formato estándar docker run
. Se da por hecho que las imágenes que no comienzan con un registro se originan en docker.io. El ejemplo anterior se podría representar igualmente como:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Mediante la convención de referencia de imágenes docker run
estándar, cmd
puede ejecutar imágenes de cualquier registro privado o en Docker Hub público. Si va a hacer referencia a imágenes que se encuentran en el mismo registro donde se ejecutan las tareas de ACR, no es necesario especificar credenciales de registro.
Ejecute una imagen proveniente de Azure Container Registry. En el ejemplo siguiente se da por supuesto que tiene un registro llamado
myregistry
y una imagen personalizada llamadamyimage:mytag
.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Generalice la referencia del registro con una variable de ejecución o un alias.
En lugar de codificar de forma rígida el nombre del registro en un archivo
acr-task.yaml
, puede hacer que sea más fácil de trasladar mediante una variable de ejecución o alias. La variableRun.Registry
o el alias$Registry
se expanden en tiempo de ejecución al nombre del registro en el que se ejecuta la tarea.Por ejemplo, para generalizar la tarea anterior de modo que funcione en cualquier registro de contenedor de Azure, haga referencia a la variable $Registry en el nombre de imagen:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Obtener acceso a volúmenes secretos
La propiedad volumes
permite que los volúmenes y el contenido de sus secretos se especifiquen para los pasos build
y cmd
de una tarea. En cada paso, una propiedad volumeMounts
opcional muestra los volúmenes y las rutas de acceso al contenedor que se van a montar en el contenedor en ese paso. Los secretos se proporcionan como archivos en la ruta de acceso de montaje de cada volumen.
Ejecute una tarea y monte dos secretos en un paso: uno almacenado en un almacén de claves y el otro especificado en la línea de comandos:
az acr run -f mounts-secrets.yaml --set-secret mysecret=abcdefg123456 https://github.com/Azure-Samples/acr-tasks.git
# This template demonstrates mounting a custom volume into a container at a CMD step
secrets:
- id: sampleSecret
keyvault: https://myacbvault2.vault.azure.net/secrets/SampleSecret # Replace with valid keyvault with access
volumes:
- name: mysecrets
secret:
mysecret1: {{.Secrets.sampleSecret | b64enc}}
mysecret2: {{.Values.mysecret | b64enc}}
steps:
- cmd: bash cat /run/test/mysecret1 /run/test/mysecret2
volumeMounts:
- name: mysecrets
mountPath: /run/test
Propiedades de pasos de tareas
Cada tipo de paso admite varias propiedades adecuadas para su tipo. En la tabla siguiente se definen todas las propiedades de pasos disponibles. No todos los tipos de pasos admiten todas las propiedades. Para ver cuál de estas propiedades está disponible para cada tipo de paso, consulte las acciones de referencia de tipos de pasos cmd, build y push.
Propiedad | Tipo | Opcional | Descripción | Valor predeterminado |
---|---|---|---|---|
detach |
bool | Sí | Si el contenedor se debe desasociar cuando se ejecuta. | false |
disableWorkingDirectoryOverride |
bool | Sí | Si se deshabilita la funcionalidad de invalidación de workingDirectory . Use en combinación con workingDirectory para tener el control total sobre el directorio de trabajo del contenedor. |
false |
entryPoint |
string | Sí | Invalida el elemento [ENTRYPOINT] del contenedor de un paso. |
None |
env |
[string, string, ...] | Sí | Matriz de cadenas en formato key=value que define las variables de entorno del paso. |
None |
expose |
[string, string, ...] | Sí | La matriz de los puertos que están expuestos desde el contenedor. | None |
id |
string | Sí | Identifica el paso de forma única dentro de la tarea. Otros pasos de la tarea pueden hacer referencia al elemento id del paso, por ejemplo, para la comprobación de dependencias con when .id también es el nombre del contenedor en ejecución. Los procesos que se ejecutan en otros contenedores de la tarea pueden hacer referencia a id como su nombre de host DNS, o para acceder a él con registros de docker [id], por ejemplo. |
acb_step_%d , donde %d es el índice basado en 0 del orden descendente de los pasos en el archivo YAML. |
ignoreErrors |
bool | Sí | Si el paso se debe marcar como correcto, independientemente de que hubo un error en la ejecución de un contenedor. | false |
isolation |
string | Sí | El nivel de aislamiento del contenedor. | default |
keep |
bool | Sí | Si se debe mantener el contenedor del paso después de la ejecución. | false |
network |
object | Sí | Identifica una red en el que se ejecuta el contenedor. | None |
ports |
[string, string, ...] | Sí | Matriz de los puertos que se publican desde el contenedor al host. | None |
pull |
bool | Sí | Si se debe forzar una extracción del contenedor antes de ejecutarlo para evitar cualquier comportamiento de almacenamiento en caché. | false |
privileged |
bool | Sí | Si se debe ejecutar el contenedor en modo con privilegios. | false |
repeat |
int | Sí | El número de reintentos para repetir la ejecución de un contenedor. | 0 |
retries |
int | Sí | El número de reintentos si se produce un error en la ejecución de un contenedor. Solo se realiza un reintento si el código de salida de un contenedor es distinto de cero. | 0 |
retryDelay |
int (segundos) | Sí | El retraso en segundos entre los reintentos de la ejecución de un contenedor. | 0 |
secret |
object | Sí | Identifica un secreto de Azure Key Vault o una identidad administrada para los recursos de Azure. | None |
startDelay |
int (segundos) | Sí | Número de segundos para retrasar la ejecución de un contenedor. | 0 |
timeout |
int (segundos) | Sí | Número máximo de segundos que se puede ejecutar un paso antes de terminar. | 600 |
when |
[string, string, ...] | Sí | Configura la dependencia de un paso de uno o varios pasos dentro de la tarea. | None |
user |
string | Sí | El nombre de usuario o UID de un contenedor. | None |
workingDirectory |
string | Sí | Establece el directorio de trabajo de un paso. De forma predeterminada, ACR Tasks crea un directorio raíz como directorio de trabajo. Sin embargo, si la compilación tiene varios pasos, los pasos anteriores pueden compartir artefactos con los pasos posteriores mediante la especificación del mismo directorio de trabajo. | c:\workspace en Windows o /workspace en Linux |
volumeMount
El objeto volumeMount tiene estas propiedades.
Propiedad | Tipo | Opcional | Descripción | Valor predeterminado |
---|---|---|---|---|
name |
string | No | Nombre del volumen que se va a montar. Debe coincidir exactamente con el nombre de una propiedad volumes . |
None |
mountPath |
string | no | Ruta de acceso absoluta para montar archivos en el contenedor. | None |
Ejemplos: Propiedades de pasos de tareas
Ejemplo: id
Compila dos imágenes mediante la creación de una instancia de una imagen de prueba funcional. Cada paso se identifica mediante un valor de id
único al que otros pasos de la tarea hacen referencia en su propiedad when
.
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
Ejemplo: when
La propiedad when
especifica la dependencia de un paso de otros pasos dentro de la tarea. Admite dos valores de parámetro:
when: ["-"]
: no indica ninguna dependencia de otros pasos. Un paso que especificawhen: ["-"]
comenzará inmediatamente la ejecución y permitirá la ejecución de pasos simultáneos.when: ["id1", "id2"]
: indica que el paso depende de los pasos conid
"id1" eid
"id2". Este paso no se ejecuta hasta que los pasos "id1" e "id2" se han completado.
Si when
no se especifica en un paso, este paso depende de la finalización del paso anterior en el archivo acr-task.yaml
.
Ejecución secuencial de pasos sin when
:
az acr run -f when-sequential-default.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo one
- cmd: bash echo two
- cmd: bash echo three
Ejecución secuencial de pasos con when
:
az acr run -f when-sequential-id.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- id: step1
cmd: bash echo one
- id: step2
cmd: bash echo two
when: ["step1"]
- id: step3
cmd: bash echo three
when: ["step2"]
Compilación de imágenes paralelas:
az acr run -f when-parallel.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
Compilación de imágenes paralelas y pruebas de dependencia:
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
Variables de ejecución
ACR Tasks incluye un conjunto predeterminado de variables que están disponibles para los pasos de la tarea cuando se ejecutan. Se puede acceder a estas variables con el formato {{.Run.VariableName}}
, donde VariableName
es uno de los siguientes:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
Normalmente, los nombres de variable se explican por sí solos. A continuación se indican los detalles de las variables de uso frecuente. A partir de la versión de YAML v1.1.0
, puede usar un alias de tarea abreviado predefinido en el lugar de la mayoría de las variables de ejecución. Por ejemplo, en lugar de {{.Run.Registry}}
, utilice el alias $Registry
.
Run.ID
Cada ejecución, mediante az acr run
, o la ejecución basada en desencadenador de las tareas creadas por medio de az acr task create
, tiene un identificador único. El identificador representa la ejecución actualmente en marcha.
Se usa normalmente para etiquetar de forma única una imagen:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
Identificador único de un volumen compartido al que pueden acceder todos los pasos de la tarea. El volumen se monta en c:\workspace
en Windows o en /workspace
en Linux.
Run.Registry
El nombre completo de servidor del registro. Se usa normalmente para hacer referencia genérica al registro donde se ejecuta la tarea.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
Nombre del registro de contenedor. Se suele usar en pasos de tarea que no requieren un nombre de servidor completo. Por ejemplo, pasos de cmd
que ejecutan comandos de la CLI de Azure en los registros.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
La hora UTC actual a la que comenzó la ejecución.
Run.Commit
Para una tarea desencadenada por una confirmación en un repositorio de GitHub, el identificador de la confirmación.
Run.Branch
Para una tarea desencadenada por una confirmación en un repositorio de GitHub, el nombre de la rama.
Alias
A partir de la versión v1.1.0
, ACR Tasks admite alias que están disponibles para los pasos de la tarea cuando se ejecutan. Los alias son similares en concepto a los alias (métodos abreviados de comandos) que se admiten en Bash y otros shell de comandos.
Con un alias, puede iniciar cualquier comando o grupo de comandos (incluidas las opciones y los nombres de archivo) al escribir una sola palabra.
ACR Tasks admite varios alias predefinidos y también los alias personalizados que cree.
Alias predefinidos
Los siguientes alias de tarea están disponibles para usarse en lugar de variables de ejecución:
Alias | Variable de ejecución |
---|---|
ID |
Run.ID |
SharedVolume |
Run.SharedVolume |
Registry |
Run.Registry |
RegistryName |
Run.RegistryName |
Date |
Run.Date |
OS |
Run.OS |
Architecture |
Run.Architecture |
Commit |
Run.Commit |
Branch |
Run.Branch |
En los pasos de la tarea, anteponga la directiva $
a un alias, como en este ejemplo:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Alias de imagen
Cada uno de los siguientes alias apunta a una imagen estable en Microsoft Container Registry (MCR). Puede hacer referencia a cada uno de ellas en la sección cmd
de un archivo de tarea sin usar una directiva.
Alias | Imagen |
---|---|
acr |
mcr.microsoft.com/acr/acr-cli:0.5 |
az |
mcr.microsoft.com/acr/azure-cli:7ee1d7f |
bash |
mcr.microsoft.com/acr/bash:7ee1d7f |
curl |
mcr.microsoft.com/acr/curl:7ee1d7f |
En la tarea de ejemplo siguiente se usan varios alias para purgar las etiquetas de imagen con una antigüedad mayor a siete días en el repositorio samples/hello-world
del registro de ejecución:
version: v1.1.0
steps:
- cmd: acr tag list --registry $RegistryName --repository samples/hello-world
- cmd: acr purge --registry $RegistryName --filter samples/hello-world:.* --ago 7d
Alias personalizados
Defina un alias personalizado en el archivo YAML y úselo tal y como se muestra en el ejemplo siguiente. Un alias solo puede contener caracteres alfanuméricos. La directiva predeterminada para expandir un alias es el carácter $
.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
Puede vincularse a un archivo YAML local o remoto para las definiciones de alias personalizadas. En el ejemplo siguiente se vincula a un archivo YAML en Azure Blob Storage:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Pasos siguientes
Para información general sobre las tareas de varios pasos, consulte Ejecución de tareas de varios pasos de compilación, prueba y aplicación de revisiones en ACR Tasks.
Para compilaciones paso a paso, consulte la Introducción a ACR Tasks.