Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
versionstepTimeoutworkingDirectory
-
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:
buildpushcmd
-
As propriedades da etapa da tarefa são parâmetros que se aplicam a uma etapa individual. Existem várias propriedades de etapa, incluindo:
startDelaytimeoutwhen- ... 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 | Tipo | Opcional | Description | Substituição suportada | Valor predefinido |
|---|---|---|---|---|---|
version |
cadeia (de caracteres) | 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 |
cadeia (de caracteres) | 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 |
[fio, fio, ...] | 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 | Tipo | Opcional | Description | Valor predefinido |
|---|---|---|---|---|
id |
cadeia (de caracteres) | Não | O identificador do segredo. | Nenhuma |
keyvault |
cadeia (de caracteres) | Sim | A URL secreta do Azure Key Vault. | Nenhuma |
clientID |
cadeia (de caracteres) | Sim | A ID do cliente da identidade gerenciada atribuída pelo usuário para recursos do Azure. | Nenhuma |
rede
O objeto de rede tem as seguintes propriedades.
| Propriedade | Tipo | Opcional | Description | Valor predefinido |
|---|---|---|---|---|
name |
cadeia (de caracteres) | Não | O nome da rede. | Nenhuma |
driver |
cadeia (de caracteres) | 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 | Tipo | Opcional | Description | Valor predefinido |
|---|---|---|---|---|
name |
cadeia (de caracteres) | 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. |
compilação
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 | Tipo | Necessário |
|---|---|---|
detach |
booleano | Opcional |
disableWorkingDirectoryOverride |
booleano | Opcional |
entryPoint |
cadeia (de caracteres) | Opcional |
env |
[fio, fio, ...] | Opcional |
expose |
[fio, fio, ...] | Opcional |
id |
cadeia (de caracteres) | Opcional |
ignoreErrors |
booleano | Opcional |
isolation |
cadeia (de caracteres) | Opcional |
keep |
booleano | Opcional |
network |
objecto | Opcional |
ports |
[fio, fio, ...] | Opcional |
pull |
booleano | Opcional |
repeat |
número inteiro | Opcional |
retries |
número inteiro | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
objecto | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
objecto | Opcional |
when |
[fio, fio, ...] | Opcional |
workingDirectory |
cadeia (de caracteres) | 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.
emitir
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 | Tipo | Necessário |
|---|---|---|
env |
[fio, fio, ...] | Opcional |
id |
cadeia (de caracteres) | Opcional |
ignoreErrors |
booleano | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
when |
[fio, fio, ...] | 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 | Tipo | Necessário |
|---|---|---|
detach |
booleano | Opcional |
disableWorkingDirectoryOverride |
booleano | Opcional |
entryPoint |
cadeia (de caracteres) | Opcional |
env |
[fio, fio, ...] | Opcional |
expose |
[fio, fio, ...] | Opcional |
id |
cadeia (de caracteres) | Opcional |
ignoreErrors |
booleano | Opcional |
isolation |
cadeia (de caracteres) | Opcional |
keep |
booleano | Opcional |
network |
objecto | Opcional |
ports |
[fio, fio, ...] | Opcional |
pull |
booleano | Opcional |
repeat |
número inteiro | Opcional |
retries |
número inteiro | Opcional |
retryDelay |
int (segundos) | Opcional |
secret |
objecto | Opcional |
startDelay |
int (segundos) | Opcional |
timeout |
int (segundos) | Opcional |
volumeMount |
objecto | Opcional |
when |
[fio, fio, ...] | Opcional |
workingDirectory |
cadeia (de caracteres) | 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 imagemmyimage:mytagpersonalizada .version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytagGeneralizar a referência do Registro com uma variável Run ou alias
Em vez de codificar o nome do Registro em um
acr-task.yamlarquivo, você pode torná-lo mais portátil usando uma variável Run ou um alias. ARun.Registryvariável ou alias se expande$Registryem 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 | Tipo | Opcional | Description | Valor predefinido |
|---|---|---|---|---|
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 |
cadeia (de caracteres) | Sim | Substitui o [ENTRYPOINT] contêiner de uma etapa. |
Nenhuma |
env |
[fio, fio, ...] | Sim | Matriz de cadeias de caracteres em key=value formato que definem as variáveis de ambiente para a etapa. |
Nenhuma |
expose |
[fio, fio, ...] | Sim | Matriz de portas que são expostas a partir do contêiner. | Nenhuma |
id |
cadeia (de caracteres) | 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 |
cadeia (de caracteres) | 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 |
objecto | Sim | Identifica uma rede na qual o contêiner é executado. | Nenhuma |
ports |
[fio, fio, ...] | 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 |
objecto | 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 |
[fio, fio, ...] | Sim | Configura a dependência de uma etapa em uma ou mais outras etapas dentro da tarefa. | Nenhuma |
user |
cadeia (de caracteres) | Sim | O nome de usuário ou UID de um contêiner | Nenhuma |
workingDirectory |
cadeia (de caracteres) | 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 | Tipo | Opcional | Description | Valor predefinido |
|---|---|---|---|---|
name |
cadeia (de caracteres) | Não | O nome do volume a ser montado. Deve corresponder exatamente ao nome de uma volumes propriedade. |
Nenhuma |
mountPath |
cadeia (de caracteres) | 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çãowhen: ["-"]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 comid"id1" eid"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.IDRun.SharedVolumeRun.RegistryRun.RegistryNameRun.DateRun.OSRun.ArchitectureRun.CommitRun.BranchRun.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 | Imagem |
|---|---|
acr |
mcr.microsoft.com/acr/acr-cli:0.14 |
az |
mcr.microsoft.com/acr/azure-cli:9fb281c |
bash |
mcr.microsoft.com/acr/bash:9fb281c |
curl |
mcr.microsoft.com/acr/curl:9fb281c |
cssc |
mcr.microsoft.com/acr/cssc:9fb281c |
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.