Referência das Tarefas do ACR: YAML
A definição de tarefas com várias etapas em Tarefas do ACR fornece um primitivo de computação centrado em contêiner, com foco em compilar, testar e corrigir contêineres. Este artigo contém os comandos, os parâmetros, as propriedades e a sintaxe dos arquivos YAML que definem tarefas com várias etapas.
Este artigo contém uma referência para criar arquivos YAML de tarefas com várias etapas para Tarefas do ACR. Se você quiser uma introdução às Tarefas do ACR, confira a Visão geral das Tarefas de ACR.
Formato de arquivo acr-task.yaml
As Tarefas do ACR dão suporte à declaração de tarefas com várias etapas na sintaxe YAML padrão. Você define as etapas de uma tarefa em um arquivo YAML. Depois você pode passar o arquivo ao comando az acr run para realizar a tarefa manualmente. Ou use o arquivo para criar uma tarefa com o comando az acr task create, que é disparada automaticamente quando há confirmação de Git ou atualização de imagem base ou de acordo com uma agenda. Embora este artigo se refira a acr-task.yaml
como o arquivo que contém as etapas, as Tarefas do ACR dão suporte a qualquer nome de arquivo válido com uma extensão com suporte.
Os primitivos acr-task.yaml
de nível superior são propriedades das tarefas, tipos de etapas e propriedades das etapas:
- As propriedades das tarefas se aplicam a todas as etapas em toda a execução da tarefa. Há várias propriedades de tarefas globais, incluindo:
version
stepTimeout
workingDirectory
- Os tipos de etapas das tarefas representam os tipos de ações que podem ser executadas em uma tarefa. Existem três tipos de etapas:
build
push
cmd
- As propriedades das etapas das tarefas são parâmetros que se aplicam a uma etapa individual. Há várias propriedades de etapa, incluindo:
startDelay
timeout
when
- ... e muito mais.
O formato base de um arquivo acr-task.yaml
, incluindo algumas propriedades das etapas comuns, segue. Apesar de não ser uma representação completa de todas as propriedades das etapas disponíveis ou do uso do tipo de etapa, fornece uma rápida visão geral do formato de arquivo 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.
Extensões de nome de arquivo das tarefas com suporte
As Tarefas do ACR reservaram diversas extensões de nome de arquivo, incluindo .yaml
, que processará como um arquivo de tarefas. Qualquer extensão que não constar na lista a seguir será considerada pelas Tarefas do ACR como um Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML é o único formato de arquivo com suporte, no momento, pelas Tarefas do ACR. As outras extensões de nome de arquivo estão reservadas para um possível suporte futuro.
Executar as tarefas de exemplo
Vários arquivos de tarefas de exemplo são referenciados nas próximas seções deste artigo. As tarefas de exemplo estão em um repositório público do GitHub, Azure-Samples/acr-tasks. É possível executá-las com o comando da CLI do Azure az acr run. Os comandos de exemplo são semelhantes a:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
A formatação dos comandos de exemplo pressupõe que você configurou um Registro padrão na CLI do Azure; portanto, o parâmetro --registry
é omitido. Para configurar um registro padrão, use o comando az config com o comando set
, que aceita um par chave/valor defaults.acr=REGISTRY_NAME
.
Por exemplo, para configurar a CLI do Azure com um Registro padrão denominado "myregistry":
az config set defaults.acr=myregistry
Propriedades das tarefas
Normalmente, as propriedades das tarefas são exibidas na parte superior de um arquivo acr-task.yaml
e são propriedades globais aplicadas durante toda a execução das etapas da tarefa. Algumas dessas propriedades globais podem ser substituídas em uma etapa individual.
Propriedade | Tipo | Opcional | Descrição | Substituição com suporte | Valor padrão |
---|---|---|---|---|---|
version |
string | Sim | A versão do arquivo acr-task.yaml conforme analisado pelo serviço de Tarefas do ACR. Enquanto as Tarefas do ACR se esforçam para manter a compatibilidade com versões anteriores, esse valor permite que as Tarefas do ACR mantenham a compatibilidade dentro de uma versão definida. Se não for especificado, o padrão será v1.0.0 . |
N/D | v1.0.0 |
stepTimeout |
int (segundos) | Sim | O número máximo de segundos em que uma etapa pode ser executada. Se a propriedade stepTimeout for especificada em uma tarefa, ela definirá a propriedade timeout padrão de todas as etapas. Se a propriedade timeout for especificada em uma etapa, ela substituirá a propriedade stepTimeout indicada pela tarefa.A soma dos valores de tempo limite da etapa para uma tarefa, deve ser igual ao valor da propriedade timeout de execução da tarefa (por exemplo, definida passando --timeout para o comando az acr task create ). Se o valor timeout de execução das tarefas for menor, ele terá prioridade. |
Sim | 600 (10 minutos) |
workingDirectory |
string | Sim | O diretório de trabalho do contêiner durante o tempo de execução. Se a propriedade for especificada em uma tarefa, ela definirá a propriedade workingDirectory padrão de todas as etapas. Se for especificada em uma etapa, ela substituirá a propriedade indicada pela tarefa. |
Sim | c:\workspace no Windows ou /workspace no Linux |
env |
[string, string, ...] | Sim | Matriz de cadeias de caracteres no formato key=value que definem as variáveis de ambiente da tarefa. Se a propriedade for especificada em uma tarefa, ela definirá a propriedade env padrão de todas as etapas. Se for especificada em uma etapa, ela substituirá as variáveis de ambiente herdadas da tarefa. |
Sim | Nenhum |
secrets |
[secret, secret, ...] | Sim | Matriz de objetos secret. | Não | Nenhum |
networks |
[network, network, ...] | Sim | Matriz de objetos network. | Não | Nenhum |
volumes |
[volume, volume, ...] | Sim | Matriz de objetos volume. Especifica os volumes com o conteúdo de origem a ser montado em uma etapa. | Não | Nenhum |
segredo
O objeto secret tem as propriedades a seguir.
Propriedade | Tipo | Opcional | Descrição | Valor padrão |
---|---|---|---|---|
id |
string | No | O identificador do segredo. | Nenhum |
keyvault |
string | Sim | A URL do segredo no Azure Key Vault. | Nenhum |
clientID |
string | Sim | A ID do cliente da identidade gerenciada atribuída pelo usuário dos recursos do Azure. | Nenhum |
network
O objeto network tem as propriedades abaixo.
Propriedade | Tipo | Opcional | Descrição | Valor padrão |
---|---|---|---|---|
name |
string | No | O nome da rede. | Nenhum |
driver |
string | Sim | O driver para gerenciar a rede. | Nenhum |
ipv6 |
bool | Sim | Indica se a rede IPv6 está habilitada ou não. | false |
skipCreation |
bool | Sim | Indica se a criação da rede deve ser ignorada. | false |
isDefault |
bool | Sim | Indica se esta é uma rede padrão que conta com Registro de Contêiner do Azure. | false |
volume
O objeto volume tem as propriedades abaixo.
Propriedade | Tipo | Opcional | Descrição | Valor padrão |
---|---|---|---|---|
name |
string | No | O nome do volume a ser montado. Pode conter apenas caracteres alfanuméricos, '-' e '_'. | Nenhum |
secret |
map[string]string | Não | Cada chave do mapa é o nome de um arquivo criado e preenchido no volume. Cada valor é a versão de cadeia de caracteres do segredo. Os valores secretos devem ser codificados em base64. | Nenhum |
Tipos de etapas das tarefas
As Tarefas do ACR dão suporte a três tipos de etapas. Cada tipo de etapa dá suporte a várias propriedades, detalhadas na seção para cada tipo de etapa.
Tipo de etapa | Descrição |
---|---|
build |
Compila uma imagem de contêiner usando a sintaxe docker build familiar. |
push |
Executa um docker push de imagens recentemente compiladas ou remarcadas em um registro de contêiner. Há suporte para o Registro de Contêiner do Azure, outros Registros privados e o Hub do Docker público. |
cmd |
Executa um contêiner como comando, com os parâmetros passados para o [ENTRYPOINT] do contêiner. O tipo de etapa cmd dá suporte a parâmetros como env , detach e outras opções de comandos docker run familiares, habilitando o teste funcional e de unidade com execução simultânea de contêiner. |
compilar
Compilar uma imagem de contêiner. O tipo de etapa build
representa um meio seguro e com vários locatários de executar docker build
na nuvem como primitivo de primeira classe.
Sintaxe: compilar
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Execute o comando az acr run para obter a versão do Docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Adicione a variável de ambiente DOCKER_BUILDKIT=1
no arquivo yaml para habilitar buildkit
e usar secret
com buildkit
.
O tipo de etapa build
suporta os parâmetros na tabela a seguir. O tipo de etapa build
também suporta todas as opções de construção do comando docker build, como --build-arg
para definir variáveis de tempo de criação.
Parâmetro | Descrição | Opcional |
---|---|---|
-t | --image |
Define o image:tag totalmente qualificado da imagem compilada.Como as imagens podem ser utilizadas para validações de tarefas internas, como testes funcionais, nem todas as imagens exigem push para um Registro. No entanto, para criar uma instância de uma imagem dentro de uma execução de Tarefa, a imagem precisa de um nome para fazer referência.Ao contrário de az acr build , a execução de Tarefas do ACR não tem um comportamento de push padrão. Com as Tarefas do ACR, o cenário padrão pressupõe a capacidade de compilar, validar e efetuar push de uma imagem. Confira push para saber como efetuar push de imagens compiladas opcionalmente. |
Sim |
-f | --file |
Especifica o Dockerfile passado para docker build . Se não for especificado, o Dockerfile padrão na raiz do contexto será considerado. Para especificar um Dockerfile, passe o nome do arquivo relativo à raiz do contexto. |
Sim |
context |
O diretório raiz passado para docker build . O diretório raiz de cada tarefa é definido como um workingDirectory compartilhado e inclui a raiz do diretório clonado Git associado. |
Não |
Propriedades: compilar
O tipo de etapa build
dá suporte às propriedades a seguir. Os detalhes das propriedades estão na seção Propriedades das etapas das tarefas deste artigo.
Propriedades | Tipo | Obrigatório |
---|---|---|
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 |
objeto | Opcional |
ports |
[string, string, ...] | Opcional |
pull |
bool | Opcional |
repeat |
INT | Opcional |
retries |
INT | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
objeto | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
objeto | Opcional |
when |
[string, string, ...] | Opcional |
workingDirectory |
string | Opcional |
Exemplos: compilar
Compilar imagem – contexto na raiz
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 .
Compilar imagem – contexto no subdiretório
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
Passagem de variável dinâmica em tarefas do ACR
Ao trabalhar com tarefas do ACR (registro de contêiner do Azure), você pode precisar passar valores diferentes para o processo de build sem alterar a definição da tarefa usando o --set
sinalizador com o az acr task run
comando.
Exemplo: configuração de tag de imagem em tempo de execução
Suponha que você tenha uma tarefa ACR definida em um acr-task.yml
arquivo com um espaço reservado para a marca de imagem:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
Você pode disparar a tarefa e definir a tag
variável como v2
em runtime usando o seguinte comando da CLI do Azure:
az acr task run --registry myregistry --name mytask --set tag=v2
Esse comando iniciará a tarefa do ACR nomeada mytask
e criará a imagem usando a v2
marca, substituindo o espaço reservado acr-task.yml
no arquivo.
Essa abordagem permite a personalização em seus pipelines de CI/CD, permitindo que você ajuste dinamicamente os parâmetros com base em suas necessidades atuais sem alterar as definições de tarefa.
efetuar push
Efetuar push de uma ou mais imagens compiladas ou remarcadas em um registro de contêiner. Dá suporte ao push de Registros privados como o Registro de Contêiner do Azure ou o Hub do Docker público.
Sintaxe: efetuar push
O tipo de etapa push
dá suporte a uma coleção de imagens. A sintaxe de coleção YAML dá suporte a formatos embutidos e aninhados. O push de uma única imagem geralmente é representado usando a sintaxe embutida:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Para maior legibilidade, use a sintaxe aninhada ao efetuar push de várias imagens:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Propriedades: efetuar push
O tipo de etapa push
dá suporte às propriedades a seguir. Os detalhes das propriedades estão na seção Propriedades das etapas das tarefas deste artigo.
Propriedade | Type | Obrigatório |
---|---|---|
env |
[string, string, ...] | Opcional |
id |
string | Opcional |
ignoreErrors |
bool | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
when |
[string, string, ...] | Opcional |
Exemplos: efetuar push
Efetuar push de várias imagens
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, efetuar push e executar
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
O tipo de etapa cmd
executa um contêiner.
Sintaxe: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Propriedades: cmd
O tipo de etapa cmd
dá suporte às propriedades a seguir:
Propriedade | Type | Obrigatório |
---|---|---|
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 |
objeto | Opcional |
ports |
[string, string, ...] | Opcional |
pull |
bool | Opcional |
repeat |
INT | Opcional |
retries |
INT | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
objeto | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
objeto | Opcional |
when |
[string, string, ...] | Opcional |
workingDirectory |
string | Opcional |
É possível encontrar detalhes sobre essas propriedades na seção Propriedades das etapas das tarefas deste artigo.
Exemplos: cmd
Executar imagem olá, mundo
Este comando executa o arquivo da tarefa hello-world.yaml
, que faz referência à imagem olá, mundo no Hub do Docker.
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
Executar imagem Bash e ecoar "olá, mundo"
Este comando executa o arquivo da tarefa bash-echo.yaml
, que faz referência à imagem bash no Hub do Docker.
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
Executar a tag da imagem Bash específica
Para executar uma versão de imagem específica, especifique a tag no cmd
.
Este comando executa o arquivo da tarefa bash-echo-3.yaml
, que faz referência à imagem bash:3.0 no Hub do Docker.
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
Executar imagens personalizadas
O tipo de etapa cmd
faz referência a imagens usando o formato docker run
padrão. As imagens não precedidas por um registro são consideradas originárias de docker.io. O exemplo anterior também poderia ser representado como:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Usando a convenção de referência de imagem docker run
padrão, o cmd
consegue executar imagens de qualquer registro particular ou no Docker Hub público. Se estiver fazendo referência a imagens no mesmo Registro em que uma Tarefa do ACR estiver em execução, você não precisará especificar credenciais do Registro.
Execute uma imagem de um registro de contêiner do Azure. No exemplo abaixo, o registro se chama
myregistry
, e a imagem personalizada se chamamyimage:mytag
.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Generalizar a referência de registro com uma variável de execução
Em vez do hard-coding do nome do registro em um arquivo
acr-task.yaml
, você pode torná-lo mais portátil usando uma variável de execução ou um alias. A variávelRun.Registry
ou o alias$Registry
se expande no runtime até o nome do registro no qual a tarefa está em execução.Por exemplo, a fim de generalizar a tarefa anterior para que ela funcione em qualquer registro de contêiner do Azure, faça referência à variável $Registry no nome da imagem:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Acessar volumes secretos
A propriedade volumes
permite que volumes e seu conteúdo secreto sejam especificados para as etapas build
e cmd
em uma tarefa. Dentro de cada etapa, a propriedade volumeMounts
opcional lista os volumes e os caminhos de contêiner correspondentes a serem montados no contêiner nessa etapa. Os segredos são fornecidos como arquivos no caminho de montagem de cada volume.
Execute uma tarefa e monte dois segredos em uma etapa: um armazenado em um cofre de chaves e outro especificado na linha de comando:
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
Propriedades das etapas das tarefas
Cada tipo de etapa dá suporte a várias propriedades apropriadas para seu tipo. A tabela a seguir define todas as propriedades das etapas disponíveis. Nem todos os tipos de etapas dão suporte a todas as propriedades. Para ver quais dessas propriedades estão disponíveis para cada tipo de etapa, confira as seções de referência de tipo de etapa cmd, compilar e efetuar push.
Propriedade | Tipo | Opcional | Descrição | Valor padrão |
---|---|---|---|---|
detach |
bool | Sim | Se o contêiner deve ser desanexado quando está em execução. | false |
disableWorkingDirectoryOverride |
bool | Sim | Indica se a funcionalidade de substituição workingDirectory deve ser desabilitada. Use isso em combinação com workingDirectory para ter controle total sobre o diretório de trabalho do contêiner. |
false |
entryPoint |
string | Sim | Substitui o [ENTRYPOINT] do contêiner de uma etapa. |
Nenhum |
env |
[string, string, ...] | Sim | Matriz de cadeias de caracteres no formato key=value que definem as variáveis de ambiente para a etapa. |
Nenhum |
expose |
[string, string, ...] | Sim | Matriz de portas que são expostas do contêiner. | Nenhum |
id |
string | Sim | Identifica a etapa dentro da tarefa com exclusividade. Outras etapas na tarefa podem fazer referência ao id da etapa, como para verificação de dependência com when .O id também é o nome do contêiner em execução. Processos em execução em outros contêineres na tarefa podem consultar o id como seu nome de host DNS ou para acessá-lo com logs de docker [id], por exemplo. |
acb_step_%d , em que %d é o índice baseado em 0 da etapa de cima para baixo no arquivo YAML |
ignoreErrors |
bool | Sim | Indica se a etapa será marcada como bem-sucedida, independentemente de ocorrer um erro durante a execução do contêiner. | false |
isolation |
string | Sim | É o nível de isolamento do contêiner. | default |
keep |
bool | Sim | Se o contêiner da etapa deve ser mantido após a execução. | false |
network |
objeto | Sim | Identifica uma rede na qual o contêiner é executado. | Nenhum |
ports |
[string, string, ...] | Sim | Matriz de portas que são publicadas do contêiner para o host. | Nenhum |
pull |
bool | Sim | Indica se é necessário forçar um pull do contêiner antes da execução para evitar o armazenamento em cache. | false |
privileged |
bool | Sim | Indica se é necessário executar o contêiner em modo privilegiado. | false |
repeat |
INT | Sim | O número de tentativas para repetir a execução de um contêiner. | 0 |
retries |
INT | Sim | O número de tentativas a serem realizadas se a execução de um contêiner falhar. Uma nova tentativa só será realizada se o código de saída do contêiner for diferente de zero. | 0 |
retryDelay |
int (segundos) | Sim | O atraso em segundos entre as tentativas da execução de um contêiner. | 0 |
secret |
objeto | Sim | Identifica um segredo do Azure Key Vault ou identidade gerenciada para recursos do Azure. | Nenhum |
startDelay |
int (segundos) | Sim | Número de segundos para atrasar a execução de um contêiner. | 0 |
timeout |
int (segundos) | Sim | Número máximo de segundos em que uma etapa poderá ser executada antes de terminar. | 600 |
when |
[string, string, ...] | Sim | Configura a dependência de uma etapa em relação a uma ou mais etapas diferentes dentro da tarefa. | Nenhum |
user |
string | Sim | O nome de usuário ou UID de um contêiner | Nenhum |
workingDirectory |
string | Sim | Define o diretório de trabalho para uma etapa. Por padrão, as Tarefas do ACR criam um diretório raiz como o diretório de trabalho. No entanto, se o build tiver várias etapas, as etapas anteriores poderão compartilhar artefatos com as etapas posteriores se o mesmo diretório de trabalho for especificado. | c:\workspace no Windows ou /workspace no Linux |
volumeMount
O objeto volumeMount tem as propriedades abaixo.
Propriedade | Tipo | Opcional | Descrição | Valor padrão |
---|---|---|---|---|
name |
string | No | O nome do volume a ser montado. Deve corresponder exatamente ao nome de uma propriedade volumes . |
Nenhum |
mountPath |
string | não | O caminho absoluto para montar arquivos no contêiner. | Nenhum |
Exemplos: propriedades das etapas das tarefas
Exemplo: id
Compile duas imagens, criando uma instância de uma imagem de teste funcional. Cada etapa é identificada por um id
exclusivo, ao qual as outras etapas da tarefa fazem referência na propriedade 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"]
Exemplo: quando
A propriedade when
especifica a dependência de uma etapa em relação a uma ou mais etapas dentro da tarefa. Ela dá suporte a dois valores de parâmetro:
when: ["-"]
– Indica que não há dependência de outras etapas. Uma etapa que especificawhen: ["-"]
iniciará a execução imediatamente e habilita a execução em etapas simultânea.when: ["id1", "id2"]
– Indica que a etapa é dependente das etapas comid
"id1" eid
"id2". Essa etapa não será executada até a conclusão das etapas "id1" e "id2".
Se when
não estiver especificado em uma etapa, essa etapa dependerá da conclusão da etapa anterior no arquivo acr-task.yaml
.
Execução em etapas sequenciais sem 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
Execução em etapas sequenciais com 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"]
Compilação de imagens 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: ["-"]
Compilação de imagens paralelas e teste dependente:
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"]
Executar variáveis
As Tarefas do ACR incluem um conjunto padrão de variáveis que estão disponíveis para as etapas das tarefas durante a execução. Essas variáveis podem ser acessadas usando o formato {{.Run.VariableName}}
, em que VariableName
é um dos seguintes:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
Os nomes de variáveis são geralmente autoexplicativos. Veja abaixo detalhes de algumas variáveis comuns. Desde a versão v1.1.0
do YAML, você pode usar um alias de tarefa abreviado e predefinido no lugar da maioria das variáveis de execução. Por exemplo, no lugar de {{.Run.Registry}}
, use o alias $Registry
.
Run.ID
Cada execução por meio de az acr run
ou execução baseada em gatilhos de tarefas criadas por meio de az acr task create
tem uma ID exclusiva. A ID representa a execução que está sendo executada no momento.
Normalmente usado para uma marcação exclusiva de uma imagem:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
O identificador exclusivo de um volume compartilhado que é acessível por todas as etapas de tarefa. O volume é montado em c:\workspace
no Windows ou /workspace
no Linux.
Run.Registry
O nome do servidor totalmente qualificado do Registro. Normalmente usado para fazer uma referência genérica ao registro em que a tarefa está sendo executada.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
O nome do registro de contêiner. Normalmente usado em etapas de tarefas que não exigem um nome de servidor totalmente qualificado, por exemplo, etapas de cmd
que executam comandos da CLI do Azure em registros.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
O horário UTC atual em que a execução começou.
Run.Commit
Para uma tarefa disparada por uma confirmação para um repositório GitHub, o identificador de confirmação.
Run.Branch
Para uma tarefa disparada por uma confirmação para um repositório GitHub, o nome da ramificação.
Aliases
Desde a versão v1.1.0
, Tarefas do ACR dá suporte para aliases que estão disponíveis como etapas de tarefa quando são executadas. Os aliases são um conceito semelhantes aos aliases (atalhos de comando) com suporte no bash e em outros shells de comando.
Com um alias, você pode iniciar qualquer comando ou grupo de comandos (incluindo opções e nomes de arquivo) digitando uma única palavra.
As Tarefas do ACR dão suporte para vários aliases predefinidos e aliases personalizados criados por você.
Aliases predefinidos
Os seguintes aliases de tarefa estão disponíveis para uso no lugar de variáveis de execução:
Alias | Variável de execução |
---|---|
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 |
Em etapas da tarefa, use a diretiva $
antes de um alias, como neste exemplo:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Aliases de imagem
Cada um dos aliases abaixo aponta para uma imagem estável no MCR (Microsoft Container Registry). Você pode fazer referência a cada um deles na seção cmd
de um arquivo de tarefa sem usar uma diretiva.
Alias | Imagem |
---|---|
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 |
O exemplo de tarefa abaixo usa vários aliases para limpar as marcas de imagem com mais de sete dias no repositório samples/hello-world
no registro de execução:
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 personalizado
Defina um alias personalizado no arquivo YAML e use-o conforme mostrado no exemplo abaixo. O alias pode conter apenas caracteres alfanuméricos. A diretiva padrão para expandir um alias é o caractere $
.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
Você pode vincular um arquivo YAML remoto ou local para obter definições de alias personalizadas. O seguinte exemplo contém links para um arquivo YAML no armazenamento de blobs do Azure:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Próximas etapas
Para uma visão geral das tarefas com várias etapas, confira Executar tarefas com várias etapas de compilar, testar e corrigir nas Tarefas do ACR.
Para builds de uma única etapa, confira a Visão geral das Tarefas do ACR.