Referência de Tarefas do ACR: YAML

A definição de tarefas de vários passos nas Tarefas do ACR fornece um primitivo de computação centrado em contentores focado na criação, teste e aplicação de patches de contentores. Este artigo abrange os comandos, parâmetros, propriedades e sintaxe dos ficheiros YAML que definem as suas tarefas de vários passos.

Este artigo contém referência para a criação de ficheiros YAML de tarefas de vários passos para Tarefas do ACR. Se quiser uma introdução às Tarefas do ACR, veja a Descrição geral das Tarefas do ACR.

formato de ficheiro acr-task.yaml

As Tarefas do ACR suportam a declaração de tarefas de vários passos na sintaxe YAML padrão. Define os passos de uma tarefa num ficheiro YAML. Em seguida, pode executar a tarefa manualmente ao transmitir o ficheiro para o comando az acr run . Em alternativa, utilize o ficheiro para criar uma tarefa com az acr task create que é acionada automaticamente numa consolidação do Git, numa atualização de imagem base ou numa agenda. Embora este artigo se veja acr-task.yaml como o ficheiro que contém os passos, as Tarefas do ACR suportam qualquer nome de ficheiro válido com uma extensão suportada.

Os primitivos de nível acr-task.yaml superior são propriedades de tarefas, tipos de passos e propriedades de passo:

  • As propriedades da tarefa aplicam-se a todos os passos durante a execução da tarefa. Existem várias propriedades de tarefas globais, incluindo:
    • version
    • stepTimeout
    • workingDirectory
  • Os tipos de passos de tarefa representam os tipos de ações que podem ser efetuadas numa tarefa. Existem três tipos de passos:
    • build
    • push
    • cmd
  • As propriedades do passo da tarefa são parâmetros que se aplicam a um passo individual. Existem várias propriedades de passo, incluindo:
    • startDelay
    • timeout
    • when
    • ... e muitos mais.

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

O ACR Tasks reservou várias extensões de nome de ficheiro, incluindo .yaml, que serão processadas como um ficheiro de tarefas. Qualquer extensão que não esteja na lista seguinte é 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

O YAML é o único formato de ficheiro atualmente suportado pelas Tarefas do ACR. As outras extensões de nome de ficheiro estão reservadas para um possível suporte futuro.

Executar as tarefas de exemplo

Existem vários ficheiros de tarefas de exemplo referenciados nas secções seguintes deste artigo. As tarefas de exemplo estão num repositório público do GitHub, Azure-Samples/acr-tasks. Pode executá-los 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 configurou um registo predefinido na CLI do Azure, para que omitam o --registry parâmetro. Para configurar um registo predefinido, utilize o comando az config com o set comando, que aceita um defaults.acr=REGISTRY_NAME par de valores de chave.

Por exemplo, para configurar a CLI do Azure com um registo predefinido denominado "myregistry":

az config set defaults.acr=myregistry

Propriedades da tarefa

Normalmente, as propriedades da tarefa aparecem na parte superior de um acr-task.yaml ficheiro e são propriedades globais que se aplicam ao longo da execução completa dos passos da tarefa. Algumas destas propriedades globais podem ser substituídas num passo individual.

Propriedade Tipo Opcional Descrição Substituir suportado Valor predefinido
version string Yes A versão do acr-task.yaml ficheiro, conforme analisado pelo serviço tarefas do ACR. Embora as Tarefas do ACR se esforcem por manter a retrocompatibilidade, este valor permite que as Tarefas do ACR mantenham a compatibilidade numa versão definida. Se não for especificado, a predefinição é a versão mais recente. No Nenhuma
stepTimeout int (segundos) Yes O número máximo de segundos que um passo pode executar. Se a stepTimeout propriedade for especificada numa tarefa, define a propriedade predefinida timeout de todos os passos. Se a timeout propriedade for especificada num passo, substitui a stepTimeout propriedade fornecida pela tarefa.

A soma dos valores de tempo limite do passo para uma tarefa deve ser igual ao valor da propriedade de execução timeout da tarefa (por exemplo, definido ao passar --timeout para o az acr task create comando). Se o valor de execução timeout das tarefas for menor, terá prioridade.
Yes 600 (10 minutos)
workingDirectory string Yes O diretório de trabalho do contentor durante o runtime. Se a propriedade for especificada numa tarefa, define a propriedade predefinida workingDirectory de todos os passos. Se especificado num passo, substitui a propriedade fornecida pela tarefa. Yes c:\workspace no Windows ou /workspace no Linux
env [cadeia, cadeia, ...] Yes Matriz de cadeias em key=value formato que definem as variáveis de ambiente para a tarefa. Se a propriedade for especificada numa tarefa, define a propriedade predefinida env de todos os passos. Se especificado num passo, substitui todas as variáveis de ambiente herdadas da tarefa. Yes Nenhuma
secrets [segredo, segredo, ...] Yes Matriz de objetos secretos . No Nenhuma
networks [rede, rede, ...] Yes Matriz de objetos de rede . No Nenhuma
volumes [volume, volume, ...] Yes Matriz de objetos de volume . Especifica volumes com conteúdo de origem para montar num passo. No Nenhuma

segredo

O objeto secreto tem as seguintes propriedades.

Propriedade Tipo Opcional Descrição Valor predefinido
id cadeia (de carateres) No O identificador do segredo. Nenhuma
keyvault string Yes O URL do Segredo Key Vault do Azure. Nenhuma
clientID string Yes O ID de cliente da identidade gerida atribuída pelo utilizador para os recursos do Azure. Nenhuma

network

O objeto de rede tem as seguintes propriedades.

Propriedade Tipo Opcional Descrição Valor predefinido
name cadeia (de carateres) No O nome da rede. Nenhuma
driver string Yes O controlador para gerir a rede. Nenhuma
ipv6 bool Yes Se a rede IPv6 está ativada. false
skipCreation bool Yes Se pretende ignorar a criação da rede. false
isDefault bool Yes Se a rede é uma rede predefinida fornecida com Azure Container Registry. false

volume

O objeto de volume tem as seguintes propriedades.

Propriedade Tipo Opcional Descrição Valor predefinido
name cadeia (de carateres) No O nome do volume a montar. Pode conter apenas carateres alfanuméricos, "-" e "_". Nenhuma
secret map[string]string No Cada chave do mapa é o nome de um ficheiro criado e preenchido no volume. Cada valor é a versão de cadeia do segredo. Os valores secretos têm de estar codificados com Base64. Nenhuma

Tipos de passos de tarefa

As Tarefas do ACR suportam três tipos de passos. Cada tipo de passo suporta várias propriedades, detalhadas na secção para cada tipo de passo.

Tipo de passo Descrição
build Cria uma imagem de contentor com sintaxe familiar docker build .
push Executa uma docker push das imagens recém-criadas ou reativadas para um registo de contentor. Azure Container Registry, são suportados outros registos privados e os Docker Hub públicos.
cmd Executa um contentor como um comando, com parâmetros transmitidos para o .[ENTRYPOINT] O cmd tipo de passo suporta parâmetros como env, detache outras opções de comando familiares docker run , ativando a unidade e os testes funcionais com a execução simultânea de contentores.

compilar

Criar uma imagem de contentor. O build tipo de passo representa um meio multi-inquilino seguro de execução docker build na cloud como um primitivo de primeira classe.

Sintaxe: compilação

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

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

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

Adicionar variável DOCKER_BUILDKIT=1 de ambiente no ficheiro yaml para ativar buildkit e utilizar secret com buildkit.

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

Parâmetro Descrição Opcional
-t | --image Define o completamente qualificado image:tag da imagem criada.

Como as imagens podem ser utilizadas para validações de tarefas internas, como testes funcionais, nem todas as imagens necessitam push para um registo. No entanto, para instânciar uma imagem numa Execução de tarefas, a imagem precisa de um nome para referenciar.

Ao contrário az acr buildde , a execução de Tarefas do ACR não fornece um comportamento push predefinido. Com as Tarefas do ACR, o cenário predefinido pressupõe a capacidade de compilar, validar e, em seguida, emitir uma imagem. Veja push para saber como enviar opcionalmente imagens compiladas.
Yes
-f | --file Especifica o Dockerfile transmitido para docker build. Se não for especificado, é assumido o Dockerfile predefinido na raiz do contexto. Para especificar um Dockerfile, transmita o nome do ficheiro relativamente à raiz do contexto. Yes
context O diretório de raiz passou para docker build. O diretório raiz de cada tarefa está definido como um workingDirectory partilhado e inclui a raiz do diretório clonado do Git associado. No

Propriedades: compilação

O build tipo de passo suporta as seguintes propriedades. Encontre detalhes destas propriedades na secção Propriedades do passo de tarefa deste artigo.

Propriedades Tipo Necessário
detach bool Opcional
disableWorkingDirectoryOverride bool Opcional
entryPoint string Opcional
env [cadeia, cadeia, ...] Opcional
expose [cadeia, cadeia, ...] Opcional
id string Opcional
ignoreErrors bool Opcional
isolation string Opcional
keep bool Opcional
network objeto Opcional
ports [cadeia, cadeia, ...] 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 [cadeia, cadeia, ...] Opcional
workingDirectory string Opcional

Exemplos: compilação

Imagem de compilação - 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 .

Imagem de compilação – contexto no subdiretório

version: v1.1.0
steps:
  - build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory

push

Envie uma ou mais imagens compiladas ou retagged para um registo de contentor. Suporta o envio para registos privados, como Azure Container Registry ou para o Docker Hub público.

Sintaxe: push

O push tipo de passo suporta uma coleção de imagens. A sintaxe da coleção YAML suporta formatos inline e aninhados. Ao emitir uma única imagem é normalmente representado através da sintaxe inline:

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

Para aumentar a legibilidade, utilize a sintaxe aninhada ao emitir 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 passo suporta as seguintes propriedades. Encontre detalhes destas propriedades na secção Propriedades do passo de tarefa deste artigo.

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

Exemplos: push

Enviar 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, emitir 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 passo executa um contentor.

Sintaxe: cmd

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

Propriedades: cmd

O cmd tipo de passo suporta as seguintes propriedades:

Propriedade Tipo Necessário
detach bool Opcional
disableWorkingDirectoryOverride bool Opcional
entryPoint string Opcional
env [cadeia, cadeia, ...] Opcional
expose [cadeia, cadeia, ...] Opcional
id string Opcional
ignoreErrors bool Opcional
isolation string Opcional
keep bool Opcional
network objeto Opcional
ports [cadeia, cadeia, ...] 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 [cadeia, cadeia, ...] Opcional
workingDirectory string Opcional

Pode encontrar detalhes destas propriedades na secção Propriedades do passo da tarefa deste artigo.

Exemplos: cmd

Executar imagem hello-world

Este comando executa o hello-world.yaml ficheiro de tarefas, 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

Executar imagem de bash e ecoar "hello world"

Este comando executa o bash-echo.yaml ficheiro de tarefas, 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 uma etiqueta de imagem de bash específica

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

Este comando executa o bash-echo-3.yaml ficheiro de tarefas, 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 passo referencia imagens com o formato padrão docker run . Presume-se que as imagens não pré-faccionadas com um registo têm origem em docker.io. O exemplo anterior poderia igualmente ser representado como:

version: v1.1.0
steps:
  - cmd: docker.io/bash:3.0 echo hello world

Ao utilizar a convenção de referência de imagem padrãodocker run, cmd pode executar imagens a partir de qualquer registo privado ou da Docker Hub pública. Se estiver a referenciar imagens no mesmo registo em que o ACR Task está a ser executado, não precisa de especificar credenciais de registo.

  • Execute uma imagem proveniente de um registo de contentor do Azure. O exemplo seguinte pressupõe que tem um registo com o nome myregistrye uma imagem myimage:mytagpersonalizada .

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

    Em vez de codificar o seu nome de registo num acr-task.yaml ficheiro, pode torná-lo mais portátil com uma variável ou alias Executar. A Run.Registry variável ou $Registry alias expande-se no runtime para o nome do registo no qual a tarefa está a ser executada.

    Por exemplo, para generalizar a tarefa anterior para que funcione em qualquer registo de contentor do Azure, referencie a 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 os volumes e os respetivos conteúdos secretos sejam especificados para build e cmd passos numa tarefa. Dentro de cada passo, uma propriedade opcional volumeMounts lista os volumes e caminhos de contentor correspondentes a montar no contentor nesse passo. Os segredos são fornecidos como ficheiros no caminho de montagem de cada volume.

Execute uma tarefa e monte dois segredos num passo: um armazenado num cofre de chaves e outro especificado na linha 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

Propriedades do passo da tarefa

Cada tipo de passo suporta várias propriedades adequadas para o respetivo tipo. A tabela seguinte define todas as propriedades de passo disponíveis. Nem todos os tipos de passo suportam todas as propriedades. Para ver quais destas propriedades estão disponíveis para cada tipo de passo, veja as secções de referência do tipo de passo cmd, build e push .

Propriedade Tipo Opcional Descrição Valor predefinido
detach bool Yes Se o contentor deve ser desanexado durante a execução. false
disableWorkingDirectoryOverride bool Yes Se pretende desativar workingDirectory a funcionalidade de substituição. Utilize-o em combinação com workingDirectory para ter controlo total sobre o diretório de trabalho do contentor. false
entryPoint string Yes Substitui o [ENTRYPOINT] contentor de um passo. Nenhuma
env [cadeia, cadeia, ...] Yes Matriz de cadeias no key=value formato que definem as variáveis de ambiente para o passo. Nenhuma
expose [cadeia, cadeia, ...] Yes Matriz de portas expostas a partir do contentor. Nenhuma
id string Yes Identifica exclusivamente o passo dentro da tarefa. Outros passos na tarefa podem fazer referência a um passo, idcomo a verificação de dependências com when.

É id também o nome do contentor em execução. Os processos em execução noutros contentores na tarefa podem referir-se ao nome do id anfitrião DNS ou ao acesso aos mesmos com os registos do Docker [id], por exemplo.
acb_step_%d, em que %d é o índice baseado em 0 do passo de cima para baixo no ficheiro YAML
ignoreErrors bool Yes Se pretende marcar o passo como bem-sucedido, independentemente de ter ocorrido um erro durante a execução do contentor. false
isolation string Yes O nível de isolamento do contentor. default
keep bool Yes Se o contentor do passo deve ser mantido após a execução. false
network objeto Yes Identifica uma rede na qual o contentor é executado. Nenhuma
ports [cadeia, cadeia, ...] Yes Matriz de portas que são publicadas a partir do contentor para o anfitrião. Nenhuma
pull bool Yes Se pretende forçar uma solicitação do contentor antes de executá-lo para impedir qualquer comportamento de colocação em cache. false
privileged bool Yes Se pretende executar o contentor no modo privilegiado. false
repeat int Yes O número de tentativas para repetir a execução de um contentor. 0
retries int Yes O número de tentativas a tentar se um contentor falhar a execução. Uma repetição só é tentada se o código de saída de um contentor não for zero. 0
retryDelay int (segundos) Yes O atraso em segundos entre as repetições da execução de um contentor. 0
secret objeto Yes Identifica uma identidade Key Vault secreta ou gerida do Azure para recursos do Azure. Nenhuma
startDelay int (segundos) Yes Número de segundos para atrasar a execução de um contentor. 0
timeout int (segundos) Yes Número máximo de segundos que um passo pode executar antes de ser terminado. 600
when [cadeia, cadeia, ...] Yes Configura a dependência de um passo num ou mais outros passos dentro da tarefa. Nenhuma
user string Yes O nome de utilizador ou UID de um contentor Nenhuma
workingDirectory string Yes Define o diretório de trabalho para um passo. Por predefinição, o ACR Tasks cria um diretório de raiz como diretório de trabalho. No entanto, se a compilação tiver vários passos, os passos anteriores podem partilhar artefactos com passos posteriores ao especificar o mesmo diretório de trabalho. c:\workspace no Windows ou /workspace no Linux

volumeMount

O objeto volumeMount tem as seguintes propriedades.

Propriedade Tipo Opcional Descrição Valor predefinido
name cadeia (de carateres) No O nome do volume a montar. Tem de corresponder exatamente ao nome de uma volumes propriedade. Nenhuma
mountPath string não O caminho absoluto para montar ficheiros no contentor. Nenhuma

Exemplos: Propriedades do passo da tarefa

Exemplo: ID

Crie duas imagens, instanciando uma imagem de teste funcional. Cada passo é identificado por um único id que outros passos na referência da tarefa na respetiva 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 um passo noutros passos dentro da tarefa. Suporta dois valores de parâmetros:

  • when: ["-"] - Indica que não existe dependência noutros passos. Um passo que when: ["-"] especifica iniciará a execução imediatamente e ativa a execução de passos em simultâneo.
  • when: ["id1", "id2"] - Indica que o passo depende dos passos com id "id1" e id "id2". Este passo não será executado até que os passos "id1" e "id2" sejam concluídos.

Se when não for especificado num passo, esse passo depende da conclusão do passo anterior no acr-task.yaml ficheiro.

Execução sequencial de passos 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 sequencial de passos 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 paralela de imagens 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 do ACR incluem um conjunto predefinido de variáveis que estão disponíveis para os passos de tarefa quando são executadas. Estas variáveis podem ser acedidas com o formato {{.Run.VariableName}}, onde VariableName é uma das seguintes:

  • Run.ID
  • Run.SharedVolume
  • Run.Registry
  • Run.RegistryName
  • Run.Date
  • Run.OS
  • Run.Architecture
  • Run.Commit
  • Run.Branch
  • Run.TaskName

Geralmente, os nomes das variáveis são auto-explicativos. Seguem-se detalhes para variáveis utilizadas frequentemente. A partir da versão v1.1.0YAML, pode utilizar um alias de tarefa abreviado predefinido em vez da maioria das variáveis de execução. Por exemplo, em vez de {{.Run.Registry}}, utilize o alias $Registry .

Run.ID

Cada Execução, através az acr runde , ou execução baseada em acionadores de tarefas criadas através az acr task createde , tem um ID exclusivo. O ID representa a Execução que está a ser executada.

Normalmente, é utilizado para uma imagem com etiquetas exclusivas:

version: v1.1.0
steps:
    - build: -t $Registry/hello-world:$ID .

Run.SharedVolume

O identificador exclusivo de um volume partilhado acessível por todos os passos de tarefa. O volume é montado c:\workspace no Windows ou /workspace no Linux.

Run.Registry

O nome de servidor completamente qualificado do registo. Normalmente, é utilizado para referenciar genericamente o registo onde a tarefa está a ser executada.

version: v1.1.0
steps:
  - build: -t $Registry/hello-world:$ID .

Run.RegistryName

O nome do registo de contentor. Normalmente utilizado em passos de tarefa que não requerem um nome de servidor completamente qualificado, por exemplo, cmd passos que executam comandos da CLI do Azure em registos.

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.

Run.Commit

Para uma tarefa acionada por uma consolidação num repositório do GitHub, o identificador de consolidação.

Run.Branch

Para uma tarefa acionada por uma consolidação num repositório do GitHub, o nome do ramo.

Aliases

A partir do , as Tarefas do ACR suportam aliases que estão disponíveis para os passos de v1.1.0tarefa quando são executados. Os aliases são semelhantes no conceito aos aliases (atalhos de comando) suportados no bash e em algumas outras shells de comandos.

Com um alias, pode iniciar qualquer comando ou grupo de comandos (incluindo opções e nomes de ficheiro) ao introduzir uma única palavra.

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

Aliases predefinidos

Os seguintes aliases de tarefa estão disponíveis para utilização em vez de variáveis de execução:

Alias Executar variável
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

Nos passos 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 seguintes aliases aponta para uma imagem estável no Microsoft Container Registry (MCR). Pode consultar cada um deles na cmd secção de um ficheiro de Tarefa sem utilizar 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

A tarefa de exemplo seguinte utiliza vários aliases para remover etiquetas de imagem com mais de 7 dias no repositório samples/hello-world no registo 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 seu ficheiro YAML e utilize-o conforme mostrado no exemplo seguinte. Um alias pode conter apenas carateres alfanuméricos. A diretiva predefinida para expandir um alias é o $ caráter.

version: v1.1.0
alias:
  values:
    repo: myrepo
steps:
  - build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .

Pode ligar a um ficheiro YAML remoto ou local para definições de alias personalizadas. O exemplo seguinte liga a um ficheiro 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'
[...]

Passos seguintes

Para obter uma descrição geral das tarefas de vários passos, veja Executar tarefas de compilação, teste e patch de vários passos em Tarefas do ACR.

Para compilações de passo único, veja a descrição geral das Tarefas do ACR.