Partilhar via


Referência de tarefas ACR: YAML

A definição de tarefas em várias etapas no ACR Tasks fornece uma primitiva de computação centrada em contêineres focada na criação, teste e aplicação de patches em contêineres. Este artigo aborda os comandos, parâmetros, propriedades e sintaxe para os arquivos YAML que definem suas tarefas de várias etapas.

Este artigo contém referência para criar arquivos YAML de tarefa de várias etapas para tarefas ACR. Se você quiser uma introdução às Tarefas ACR, consulte a Visão geral das Tarefas ACR.

Formato de arquivo acr-task.yaml

ACR Tasks suporta declaração de tarefa de várias etapas na sintaxe YAML padrão. Você define as etapas de uma tarefa em um arquivo YAML. Em seguida, você pode executar a tarefa manualmente passando o arquivo para o comando az acr run . Ou use o arquivo para criar uma tarefa com az acr task create que é acionada automaticamente em uma confirmação do Git, uma atualização de imagem base ou uma agenda. Embora este artigo se refira como acr-task.yaml o arquivo que contém as etapas, ACR Tasks suporta qualquer nome de arquivo válido com uma extensão suportada.

As primitivas de nível acr-task.yaml superior são propriedades de tarefa, tipos de etapa e propriedades de etapa:

  • As propriedades da tarefa aplicam-se a todas as etapas durante a execução da tarefa. Há várias propriedades de tarefa global, incluindo:
    • version
    • stepTimeout
    • workingDirectory
  • Os tipos de etapa de tarefa representam os tipos de ações que podem ser executadas em uma tarefa. Existem três tipos de passos:
    • build
    • push
    • cmd
  • As propriedades da etapa da tarefa são parâmetros que se aplicam a uma etapa individual. Existem várias propriedades de etapa, incluindo:
    • startDelay
    • timeout
    • when
    • ... e muitos mais.

Segue-se o formato base de um acr-task.yaml ficheiro, incluindo algumas propriedades de passos comuns. Embora não seja uma representação exaustiva de todas as propriedades de etapa disponíveis ou uso de tipo de etapa, ele fornece uma visão geral rápida 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 de tarefa suportadas

ACR Tasks reservou várias extensões de nome de arquivo, incluindo .yaml, que ele processará como um arquivo de tarefa. Qualquer extensão que não esteja na lista a seguir é considerada pelo ACR Tasks 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 atualmente suportado pelo ACR Tasks. As outras extensões de nome de arquivo são reservadas para possível suporte futuro.

Executar as tarefas de exemplo

Há vários arquivos de tarefa de exemplo referenciados nas seções a seguir deste artigo. As tarefas de exemplo estão em um repositório público do GitHub, Azure-Samples/acr-tasks. Você pode executá-los com o comando az acr run da CLI do Azure. 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ê tenha configurado um registro padrão na CLI do Azure, portanto, eles omitem o --registry parâmetro. Para configurar um registro padrão, use o comando az config com o set comando, que aceita um par de defaults.acr=REGISTRY_NAME valores de chave.

Por exemplo, para configurar a CLI do Azure com um registro padrão chamado "myregistry":

az config set defaults.acr=myregistry

Propriedades da tarefa

As propriedades da tarefa normalmente aparecem na parte superior de um acr-task.yaml arquivo e são propriedades globais que se aplicam durante toda a execução das etapas da tarefa. Algumas dessas propriedades globais podem ser substituídas em uma etapa individual.

Propriedade Type Opcional Description Substituição suportada Default value
version string Sim A versão do acr-task.yaml arquivo conforme analisada pelo serviço Tarefas ACR. Enquanto as Tarefas ACR se esforçam para manter a compatibilidade com versões anteriores, esse valor permite que as Tarefas ACR mantenham a compatibilidade dentro de uma versão definida. Se não for especificado, o padrão será v1.0.0. N/A v1.0.0
stepTimeout int (segundos) Sim O número máximo de segundos que uma etapa pode executar. Se a stepTimeout propriedade for especificada em uma tarefa, ela definirá a propriedade padrão timeout de todas as etapas. Se a timeout propriedade for especificada em uma etapa, ela substituirá a stepTimeout propriedade fornecida pela tarefa.

A soma dos valores de tempo limite da etapa para uma tarefa deve ser igual ao valor da propriedade run timeout da tarefa (por exemplo, definida passando --timeout para o az acr task create comando). Se o valor de execução timeout 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 padrão workingDirectory de todas as etapas. Se especificado em uma etapa, ele substitui a propriedade fornecida pela tarefa. Sim c:\workspace no Windows ou /workspace no Linux
env [string, string, ...] Sim Matriz de cadeias de caracteres em key=value formato que definem as variáveis de ambiente para a tarefa. Se a propriedade for especificada em uma tarefa, ela definirá a propriedade padrão env de todas as etapas. Se especificado em uma etapa, ele substitui quaisquer variáveis de ambiente herdadas da tarefa. Sim Nenhuma
secrets [segredo, segredo, ...] Sim Matriz de objetos secretos . Não Nenhuma
networks [rede, rede, ...] Sim Matriz de objetos de rede . Não Nenhuma
volumes [volume, volume, ...] Sim Matriz de objetos de volume . Especifica volumes com conteúdo de origem a serem montados em uma etapa. Não Nenhuma

segredo

O objeto secreto tem as seguintes propriedades.

Propriedade Type Opcional Description Default value
id string Não O identificador do segredo. Nenhuma
keyvault string Sim A URL secreta do Azure Key Vault. Nenhuma
clientID string Sim A ID do cliente da identidade gerenciada atribuída pelo usuário para recursos do Azure. Nenhuma

network

O objeto de rede tem as seguintes propriedades.

Propriedade Type Opcional Description Default value
name string Não O nome da rede. Nenhuma
driver string Sim O driver para gerenciar a rede. Nenhuma
ipv6 booleano Sim Se a rede IPv6 está habilitada. false
skipCreation booleano Sim Se deve ignorar a criação de rede. false
isDefault booleano Sim Se a rede é uma rede padrão fornecida com o Registro de Contêiner do Azure. false

volume

O objeto de volume tem as seguintes propriedades.

Propriedade Type Opcional Description Default value
name string Não O nome do volume a ser montado. Pode conter apenas caracteres alfanuméricos, '-' e '_'. Nenhuma
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. Nenhuma

Tipos de etapas de tarefas

O ACR Tasks suporta três tipos de passos. Cada tipo de etapa suporta várias propriedades, detalhadas na seção para cada tipo de etapa.

Tipo de passo Description
build Cria uma imagem de contêiner usando sintaxe familiar docker build .
push Executa uma docker push das imagens recém-criadas ou remarcadas em um registro de contêiner. O Registro de Contêiner do Azure, outros registros privados e o Docker Hub público são suportados.
cmd Executa um contêiner como um comando, com parâmetros passados [ENTRYPOINT]para o contêiner. O cmd tipo de etapa suporta parâmetros como env, detache outras opções de comando familiares docker run , permitindo testes de unidade e funcionais com execução simultânea de contêiner.

build

Crie uma imagem de contêiner. O build tipo de etapa representa um meio seguro e multilocatário de execução docker build na nuvem como uma primitiva de primeira classe.

Sintaxe: build

version: v1.1.0
steps:
  - [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
    [property]: [value]

Execute o comando az acr runpara obter a versão docker.

az acr run -r $ACR_NAME --cmd "docker version" /dev/null

Adicione a variável DOCKER_BUILDKIT=1 de ambiente no arquivo yaml para habilitar buildkit e usar secret com buildkito .

O build tipo de etapa suporta os parâmetros na tabela a seguir. O build tipo de etapa também suporta todas as opções de compilação do comando docker build , como --build-arg definir variáveis de tempo de compilação.

Parâmetro Description Opcional
-t | --image Define o totalmente qualificado image:tag da imagem construída.

Como as imagens podem ser usadas para validações de tarefas internas, como testes funcionais, nem todas as imagens precisam push de um registro. No entanto, para instância de uma imagem dentro de uma execução de tarefa, a imagem precisa de um nome para referência.

Ao contrário az acr builddo , a execução de Tarefas ACR não fornece um comportamento de envio padrão. Com as Tarefas ACR, o cenário padrão pressupõe a capacidade de criar, validar e enviar por push uma imagem. Consulte push para saber como enviar imagens criadas 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á assumido. Para especificar um Dockerfile, passe o nome do arquivo relativo à raiz do contexto. Sim
context O diretório raiz passou para docker build. O diretório raiz de cada tarefa é definido como um workingDirectory compartilhado e inclui a raiz do diretório clonado do Git associado. Não

Propriedades: construir

O build tipo de etapa suporta as seguintes propriedades. Encontre detalhes dessas propriedades na seção Propriedades da etapa de tarefa deste artigo.

Propriedades Type Necessário
detach booleano Opcional
disableWorkingDirectoryOverride booleano Opcional
entryPoint string Opcional
env [string, string, ...] Opcional
expose [string, string, ...] Opcional
id string Opcional
ignoreErrors booleano Opcional
isolation string Opcional
keep booleano Opcional
network objeto Opcional
ports [string, string, ...] Opcional
pull booleano Opcional
repeat número inteiro Opcional
retries número inteiro 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: build

Construir 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 .

Construir 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 ACR

Ao trabalhar com tarefas do Registro de contêiner do Azure (ACR), você pode precisar passar valores diferentes para seu processo de compilação sem alterar a definição da tarefa usando o sinalizador --set com o az acr task run comando.

Exemplo: Definindo a marca 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 tag de imagem:

steps:
  - build: -t $Registry/hello-world:{{.Values.tag}}

Você pode disparar a tarefa e definir a tag variável como v2 em tempo de execução usando o seguinte comando da CLI do Azure:

az acr task run --registry myregistry --name mytask --set tag=v2

Este comando iniciará a tarefa ACR nomeada mytask e construirá a imagem usando a v2 tag , substituindo o espaço reservado no acr-task.yml 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 tarefas.

push

Envie uma ou mais imagens criadas ou remarcadas para um registro de contêiner. Dá suporte ao envio por push para registros privados, como o Registro de Contêiner do Azure, ou para o Docker Hub, público.

Sintaxe: push

O push tipo de etapa suporta uma coleção de imagens. A sintaxe da coleção YAML suporta formatos embutidos e aninhados. O envio por push de uma única imagem é normalmente representado usando sintaxe embutida:

version: v1.1.0
steps:
  # Inline YAML collection syntax
  - push: ["$Registry/hello-world:$ID"]

Para maior legibilidade, use sintaxe aninhada ao enviar várias imagens:

version: v1.1.0
steps:
  # Nested YAML collection syntax
  - push:
    - $Registry/hello-world:$ID
    - $Registry/hello-world:latest

Propriedades: push

O push tipo de etapa suporta as seguintes propriedades. Encontre detalhes dessas propriedades na seção Propriedades da etapa de tarefa deste artigo.

Propriedade Type Necessário
env [string, string, ...] Opcional
id string Opcional
ignoreErrors booleano Opcional
startDelay int (segundos) Opcional
timeout int (segundos) Opcional
when [string, string, ...] Opcional

Exemplos: push

Envie várias imagens por push

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

Construir, empurrar 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 cmd tipo de etapa executa um contêiner.

Sintaxe: cmd

version: v1.1.0
steps:
  - [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]

Propriedades: cmd

O cmd tipo de etapa suporta as seguintes propriedades:

Propriedade Type Necessário
detach booleano Opcional
disableWorkingDirectoryOverride booleano Opcional
entryPoint string Opcional
env [string, string, ...] Opcional
expose [string, string, ...] Opcional
id string Opcional
ignoreErrors booleano Opcional
isolation string Opcional
keep booleano Opcional
network objeto Opcional
ports [string, string, ...] Opcional
pull booleano Opcional
repeat número inteiro Opcional
retries número inteiro 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

Você pode encontrar detalhes dessas propriedades na seção Propriedades da etapa de tarefa deste artigo.

Exemplos: cmd

Executar imagem hello-world

Este comando executa o hello-world.yaml arquivo de tarefa, que faz referência à imagem hello-world no 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

Execute a imagem bash e ecoe "hello world"

Este comando executa o bash-echo.yaml arquivo de tarefa, que faz referência à imagem bash no 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

Executar tag de imagem bash específica

Para executar uma versão de imagem específica, especifique a tag no cmd.

Este comando executa o bash-echo-3.yaml arquivo de tarefa, que faz referência à imagem bash:3.0 no 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

Executar imagens personalizadas

O cmd tipo de etapa faz referência a imagens usando o formato padrão docker run . Presume-se que as imagens não precedidas de um registo são originárias de docker.io. O exemplo anterior poderia igualmente 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 padrão docker run , cmd pode executar imagens de qualquer registro privado ou do Docker Hub público. Se você estiver fazendo referência a imagens no mesmo registro em que a Tarefa ACR está sendo executada, não será necessário especificar nenhuma credencial do Registro.

  • Execute uma imagem de um registro de contêiner do Azure. O exemplo a seguir pressupõe que você tenha um registro chamado myregistry, e uma imagem myimage:mytagpersonalizada .

    version: v1.1.0
    steps:
        - cmd: myregistry.azurecr.io/myimage:mytag
    
  • Generalizar a referência do Registro com uma variável Run ou alias

    Em vez de codificar o nome do Registro em um acr-task.yaml arquivo, você pode torná-lo mais portátil usando uma variável Run ou um alias. A Run.Registry variável ou alias se expande $Registry em tempo de execução para o nome do registro no qual a tarefa está sendo executada.

    Por exemplo, para 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
    

Aceder a volumes secretos

A volumes propriedade permite que volumes e seu conteúdo secreto sejam especificados para build e cmd etapas em uma tarefa. Dentro de cada etapa, uma propriedade opcional volumeMounts 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 da etapa da tarefa

Cada tipo de etapa suporta várias propriedades apropriadas para seu tipo. A tabela a seguir define todas as propriedades de etapa disponíveis. Nem todos os tipos de etapa suportam todas as propriedades. Para ver quais dessas propriedades estão disponíveis para cada tipo de etapa, consulte as seções de referência de tipo de etapa cmd, build e push .

Propriedade Type Opcional Description Default value
detach booleano Sim Se o contêiner deve ser destacado durante a execução. false
disableWorkingDirectoryOverride booleano Sim Se a funcionalidade de substituição deve ser desativada workingDirectory . 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] contêiner de uma etapa. Nenhuma
env [string, string, ...] Sim Matriz de cadeias de caracteres em key=value formato que definem as variáveis de ambiente para a etapa. Nenhuma
expose [string, string, ...] Sim Matriz de portas que são expostas a partir do contêiner. Nenhuma
id string Sim Identifica exclusivamente a etapa dentro da tarefa. Outras etapas da tarefa podem fazer referência a uma etapa id, como para verificação de dependência com when.

O id também é o nome do contêiner em execução. Os processos em execução em outros contêineres na tarefa podem se referir ao id como seu nome de host DNS ou para acessá-lo com logs docker [id], por exemplo.
acb_step_%d, onde %d é o índice baseado em 0 da etapa de cima para baixo no arquivo YAML
ignoreErrors booleano Sim Se a etapa deve ser marcada como bem-sucedida, independentemente de ter ocorrido um erro durante a execução do contêiner. false
isolation string Sim O nível de isolamento do contêiner. default
keep booleano 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. Nenhuma
ports [string, string, ...] Sim Matriz de portas que são publicadas do contêiner para o host. Nenhuma
pull booleano Sim Se é necessário forçar um pull do contêiner antes de executá-lo para evitar qualquer comportamento de cache. false
privileged booleano Sim Se o contêiner deve ser executado no modo privilegiado. false
repeat número inteiro Sim O número de tentativas para repetir a execução de um contêiner. 0
retries número inteiro Sim O número de tentativas repetidas se um contêiner falhar em sua execução. Uma nova tentativa só é tentada se o código de saída de um contêiner for diferente de zero. 0
retryDelay int (segundos) Sim O atraso em segundos entre as novas tentativas da execução de um contêiner. 0
secret objeto Sim Identifica um segredo do Cofre da Chave do Azure ou uma identidade gerenciada para recursos do Azure. Nenhuma
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 que uma etapa pode executar antes de ser encerrada. 600
when [string, string, ...] Sim Configura a dependência de uma etapa em uma ou mais outras etapas dentro da tarefa. Nenhuma
user string Sim O nome de usuário ou UID de um contêiner Nenhuma
workingDirectory string Sim Define o diretório de trabalho para uma etapa. Por padrão, o ACR Tasks cria um diretório raiz como o diretório de trabalho. No entanto, se sua compilação tiver várias etapas, as etapas anteriores podem compartilhar artefatos com etapas posteriores especificando o mesmo diretório de trabalho. c:\workspace no Windows ou /workspace no Linux

montagem em volume

O objeto volumeMount tem as seguintes propriedades.

Propriedade Type Opcional Description Default value
name string Não O nome do volume a ser montado. Deve corresponder exatamente ao nome de uma volumes propriedade. Nenhuma
mountPath string não O caminho absoluto para montar arquivos no contêiner. Nenhuma

Exemplos: propriedades da etapa da tarefa

Exemplo: id

Crie duas imagens, instanciando uma imagem de teste funcional. Cada etapa é identificada por uma única id que outras etapas na tarefa referenciam em sua when propriedade.

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 when propriedade especifica a dependência de uma etapa em outras etapas dentro da tarefa. Ele suporta dois valores de parâmetro:

  • when: ["-"] - Indica não haver dependência de outras etapas. Uma especificação when: ["-"] de etapa iniciará a execução imediatamente e habilitará a execução simultânea da etapa.
  • when: ["id1", "id2"] - Indica que a etapa depende das etapas com id "id1" e id "id2". Esta etapa não será executada até que ambas as etapas "id1" e "id2" sejam concluídas.

Se when não for especificado em uma etapa, essa etapa dependerá da conclusão da etapa anterior no acr-task.yaml arquivo.

Execução de 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 de 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"]

Imagens paralelas construem:

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: ["-"]

Construção de imagem paralela e testes dependentes:

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 ACR incluem um conjunto padrão de variáveis que estão disponíveis para as etapas da tarefa quando são executadas. Essas variáveis podem ser acessadas usando o formato {{.Run.VariableName}}, onde 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 das variáveis são geralmente autoexplicativos. Seguem-se detalhes para as variáveis mais utilizadas. A partir da versão v1.1.0YAML , 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 $Registry alias.

Run.ID

Cada execução, através az acr runde , ou execução baseada em gatilho de tarefas criadas através az acr task createde , tem um ID exclusivo. O 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 da tarefa. O volume é montado c:\workspace no Windows ou /workspace no Linux.

Run.Registry

O nome do servidor totalmente qualificado do registro. Normalmente usado para referenciar genericamente o registro onde 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, cmd etapas 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

A hora UTC atual em que a execução começou.

Executar.Confirmar

Para uma tarefa acionada por uma confirmação em um repositório GitHub, o identificador de confirmação.

Run.Branch

Para uma tarefa acionada por uma confirmação em um repositório GitHub, o nome da filial.

Aliases

A partir de , as Tarefas ACR suportam aliases que estão disponíveis para as etapas de v1.1.0tarefas quando são executadas. Os aliases são semelhantes em conceito aos aliases (atalhos de comando) suportados em bash e alguns outros shells de comando.

Com um alias, você pode iniciar qualquer comando ou grupo de comandos (incluindo opções e nomes de arquivos) inserindo uma única palavra.

O ACR Tasks suporta vários aliases predefinidos e também aliases personalizados que você cria.

Aliases predefinidos

Os seguintes aliases de tarefa estão disponíveis para uso no lugar de variáveis de execução:

Alias Variável Run
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

Nas etapas da tarefa, preceda um alias com a $ diretiva, 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 a seguir aponta para uma imagem estável no Microsoft Container Registry (MCR). Você pode consultar cada um deles na cmd seção de um arquivo de tarefa sem usar uma diretiva.

Alias Image
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

A tarefa de exemplo a seguir usa vários aliases para limpar marcas de imagem com mais de 7 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 em seu arquivo YAML e use-o como mostrado no exemplo a seguir. Um 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 a um arquivo YAML remoto ou local para definições de alias personalizadas. O exemplo a seguir vincula a um arquivo YAML no armazenamento de blob do Azure:

version: v1.1.0
alias:
  src:  # link to local or remote custom alias files
    - 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]

Próximos passos

Para obter uma visão geral das tarefas de várias etapas, consulte Executar tarefas de compilação, teste e patch em várias etapas em Tarefas do ACR.

Para compilações de etapa única, consulte a visão geral de tarefas ACR.