Share via


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. Existem 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. Há 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. Existem várias propriedades das etapas, 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á a versão mais recente. Não Nenhum
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=1no 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

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 chama myimage: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ável Run.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 especifica when: ["-"] iniciará a execução imediatamente e habilita a execução em etapas simultânea.
  • when: ["id1", "id2"] – Indica que a etapa é dependente das etapas com id "id1" e id "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.