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 , detach e 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 build de , 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 cmd
etiqueta 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
myregistry
e uma imagemmyimage:mytag
personalizada .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. ARun.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, id como 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 quewhen: ["-"]
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 comid
"id1" eid
"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.0
YAML, 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 run
de , ou execução baseada em acionadores de tarefas criadas através az acr task create
de , 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.0
tarefa 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.