Riferimenti ad Attività di Registro Azure Container: YAML
La definizione di attività in più passaggi in Attività di Registro Azure Container offre una primitiva di calcolo specifica per contenitori e basata su compilazione, test e applicazione di patch sui contenitori. Questo articolo illustra i comandi, i parametri, le proprietà e la sintassi per i file YAML che definiscono le attività in più passaggi.
L'articolo contiene informazioni di riferimento per la creazione di file YAML di attività in più passaggi per Attività di Registro Azure Container. Per un'introduzione ad Attività di Registro Azure Container, vedere ACR Tasks overview (Panoramica di Attività di Registro Azure Container).
Formato del file acr-task.yaml
Attività di Registro Azure Container supporta la dichiarazione di attività in più passaggi nella sintassi YAML standard. I passaggi di un'attività vengono definiti in un file YAML. È quindi possibile eseguire l'attività manualmente passando il file al comando az acr run . In alternativa, usare il file per creare un'attività con az acr task create che viene attivata automaticamente in un commit Git, in un aggiornamento dell'immagine di base o in una pianificazione. Sebbene questo articolo si riferisca a acr-task.yaml
come file che contiene i passaggi, Attività di Registro Azure Container può usare qualsiasi nome di file valido con un'estensione supportata.
Le primitive acr-task.yaml
di livello superiore sono le proprietà delle attività, i tipi di passaggi e le proprietà dei passaggi.
- Le proprietà dell'attività si applicano a tutti i passaggi durante l'intera esecuzione dell'attività. Esistono diverse proprietà globali delle attività, tra cui:
version
stepTimeout
workingDirectory
- I tipi di passaggi di attività rappresentano i tipi di azioni che possono essere eseguite in un'attività. Esistono tre tipi di passaggi:
build
push
cmd
- Le proprietà dei passaggi dell'attività sono parametri che si applicano a un singolo passaggio. Esistono diverse proprietà dei passaggi, tra cui:
startDelay
timeout
when
- e altre ancora.
Di seguito viene indicato il formato di base di un file acr-task.yaml
che contiene alcune proprietà comuni dei passaggi. Sebbene non sia una rappresentazione completa di tutte le proprietà dei passaggi disponibili o di tutti i possibili usi dei tipi di passaggi, l'esempio offre una panoramica generale del formato di file di base.
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.
Estensioni del nome di file di attività supportate
Per Attività di Registro Azure Container sono presenti diverse estensioni del nome di file, ad esempio .yaml
, che viene elaborato come un file delle attività. Qualsiasi estensione non presente nell'elenco seguente viene considerata da Attività di Registro Azure Container come un file Docker: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML è l'unico formato di file attualmente supportato da Attività di Registro Azure Container. Le altre estensioni del nome di file sono riservate per un possibile supporto futuro.
Eseguire le attività di esempio
Sono disponibili diversi file di attività di esempio a cui si fa riferimento nelle sezioni seguenti di questo articolo. Le attività di esempio si trovano in un repository GitHub pubblico, Azure-Samples/acr-tasks. È possibile eseguirle con il comando dell'interfaccia della riga di comando di Azure az acr run. I comandi di esempio sono analoghi ai seguenti:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
La formattazione dei comandi di esempio presuppone che sia stato configurato un registro contenitori predefinito nell'interfaccia della riga di comando di Azure e di conseguenza il parametro --registry
viene omesso. Per configurare un registro predefinito, usare il comando az config con il set
comando , che accetta una defaults.acr=REGISTRY_NAME
coppia chiave-valore.
Per configurare ad esempio l'interfaccia della riga di comando di Azure con un registro contenitori predefinito denominato "myregistry", vedere l'esempio seguente:
az config set defaults.acr=myregistry
Proprietà delle attività
Le proprietà dell'attività vengono in genere visualizzate all'inizio di un acr-task.yaml
file e sono proprietà globali che si applicano durante l'esecuzione completa dei passaggi dell'attività. Alcune proprietà globali possono essere sostituite all'interno di un singolo passaggio.
Proprietà | Type | Facoltativo | Descrizione | Override supportato | Default value |
---|---|---|---|---|---|
version |
string | Sì | Versione del file acr-task.yaml come analizzato dal servizio Attività di Registro Azure Container. Attività di Registro Azure Container cerca di mantenere la compatibilità con le versioni precedenti e questo valore consente di mantenere la compatibilità in una versione definita. Se non specificato, il valore predefinito è v1.0.0 . |
N/D | v1.0.0 |
stepTimeout |
intero (secondi) | Sì | Numero massimo di secondi per l'esecuzione di un passaggio. Se la stepTimeout proprietà viene specificata in un'attività, imposta la proprietà predefinita timeout di tutti i passaggi. Se la timeout proprietà viene specificata in un passaggio, esegue l'override della stepTimeout proprietà fornita dall'attività.La somma dei valori di timeout del passaggio per un'attività deve essere uguale al valore della proprietà di esecuzione timeout dell'attività, ad esempio impostata passando --timeout al az acr task create comando . Se il valore di esecuzione timeout delle attività è minore, ha priorità. |
Sì | 600 (10 minuti) |
workingDirectory |
string | Sì | Directory di lavoro del contenitore durante il runtime. Se la proprietà viene specificata in un'attività, imposta la proprietà predefinita workingDirectory di tutti i passaggi. Se specificato in un passaggio, esegue l'override della proprietà fornita dall'attività. |
Sì | c:\workspace in Windows o /workspace in Linux |
env |
[stringa, stringa, ...] | Sì | Matrice di stringhe in key=value formato che definiscono le variabili di ambiente per l'attività. Se la proprietà viene specificata in un'attività, imposta la proprietà predefinita env di tutti i passaggi. Se specificato in un passaggio, esegue l'override di tutte le variabili di ambiente ereditate dall'attività. |
Sì | None |
secrets |
[segreto, segreto, ...] | Sì | Matrice di oggetti segreti . | No | None |
networks |
[rete, rete, ...] | Sì | Matrice di oggetti di rete . | No | None |
volumes |
[volume, volume, ...] | Sì | Matrice di oggetti volume. Specifica i volumi con contenuto di origine da montare in un passaggio. | No | None |
secret
L'oggetto segreto ha le proprietà seguenti.
rete
L'oggetto di rete ha le proprietà seguenti.
Proprietà | Type | Facoltativo | Descrizione | Default value |
---|---|---|---|---|
name |
string | No | Nome della rete. | None |
driver |
string | Sì | Driver per gestire la rete. | None |
ipv6 |
bool | Sì | Indica se la rete IPv6 è abilitata. | false |
skipCreation |
bool | Sì | Se ignorare la creazione di rete. | false |
isDefault |
bool | Sì | Indica se la rete è una rete predefinita fornita con Registro Azure Container. | false |
volume
L'oggetto volume ha le proprietà seguenti.
Proprietà | Type | Facoltativo | Descrizione | Default value |
---|---|---|---|---|
name |
string | No | Nome del volume da montare. Può contenere solo caratteri alfanumerici, '-' e '_'. | None |
secret |
map[string]string | No | Ogni chiave della mappa è il nome di un file creato e popolato nel volume. Ogni valore è la versione stringa del segreto. I valori dei segreti devono essere codificati in Base64. | None |
Tipi di passaggi delle attività
Attività di Registro Azure Container supporta tre tipi di passaggi. Ogni tipo di passaggio supporta diverse proprietà, indicate in dettaglio nella sezione per ogni tipo.
Tipo di passaggio | Descrizione |
---|---|
build |
Compila un'immagine del contenitore con la sintassi docker build nota. |
push |
Esegue un'operazione docker push delle immagini compilate o contrassegnate nuovamente in un registro contenitori. Sono supportati Registro Azure Container, altri registri privati e l'hub Docker. |
cmd |
Esegue un contenitore come un comando con parametri passati all'elemento [ENTRYPOINT] del contenitore. Il cmd tipo di passaggio supporta parametri come env , detach e altre opzioni di comando familiari docker run , abilitando il test unità e funzionale con l'esecuzione simultanea del contenitore. |
build
Compila un'immagine del contenitore. Il tipo di passaggio build
rappresenta uno strumento multi-tenant sicuro per l'esecuzione di docker build
nel cloud come primitiva di prima classe.
Sintassi: build
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Eseguire il comando az acr runper ottenere la versione di Docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Aggiungere una variabile di ambiente nel file yaml per abilitare DOCKER_BUILDKIT=1
buildkit
e usare secret
con buildkit
.
Il tipo di passaggio build
supporta i parametri nella tabella seguente. Il tipo di passaggio build
supporta anche tutte le opzioni di compilazione del comando docker build, ad esempio --build-arg
, per impostare le variabili in fase di compilazione.
Parametro | Descrizione | Facoltativo |
---|---|---|
-t | --image |
Definisce il percorso completo image:tag dell'immagine compilata.Poiché le immagini possono essere usate per le convalide di attività interne, ad esempio test funzionali, non tutte le immagini richiedono l'operazione push in un registro contenitori. Per creare un'istanza di un'immagine nell'esecuzione di un'attività, tuttavia, è necessario che all'immagine sia associato un nome di riferimento.A differenza di az acr build , l'esecuzione di Attività del Registro Azure Container non fornisce il comportamento push predefinito. Con Attività di Registro Azure Container, lo scenario predefinito presuppone la possibilità di compilare e di convalidare un'immagine e quindi di eseguirne il push. Per informazioni su come eseguire il push facoltativo di immagini compilate, vedere push. |
Sì |
-f | --file |
Specifica l'elemento Dockerfile passato a docker build . Se non specificato, viene usato il valore predefinito Dockerfile nella directory radice del contesto. Per specificare un Dockerfile, passare il nome file relativo alla radice del contesto. |
Sì |
context |
Directory radice passata a docker build . La directory radice di ogni attività è impostata su un oggetto condiviso workingDirectory e include la radice della directory clonata Git associata. |
No |
Proprietà: build
Il tipo di passaggio build
supporta le proprietà seguenti. Per informazioni dettagliate su queste proprietà, vedere la sezione Proprietà passaggio attività di questo articolo.
Proprietà | Type | Obbligatorio |
---|---|---|
detach |
bool | Facoltativo |
disableWorkingDirectoryOverride |
bool | Facoltativo |
entryPoint |
string | Facoltativo |
env |
[stringa, stringa, ...] | Facoltativo |
expose |
[stringa, stringa, ...] | Facoltativo |
id |
string | Facoltativo |
ignoreErrors |
bool | Facoltativo |
isolation |
string | Facoltativo |
keep |
bool | Facoltativo |
network |
oggetto | Facoltativo |
ports |
[stringa, stringa, ...] | Facoltativo |
pull |
bool | Facoltativo |
repeat |
int | Facoltativo |
retries |
int | Facoltativo |
retryDelay |
intero (secondi) | Facoltativo |
secret |
oggetto | Facoltativo |
startDelay |
intero (secondi) | Facoltativo |
timeout |
intero (secondi) | Facoltativo |
volumeMount |
oggetto | Facoltativo |
when |
[stringa, stringa, ...] | Facoltativo |
workingDirectory |
string | Facoltativo |
Esempi: build
Compilare un'immagine - contesto nella directory radice
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 .
Compilare un'immagine - contesto nella sottodirectory
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
Variabile dinamica che passa nelle attività del Registro Azure Container
Quando si usano attività del Registro Azure Container, potrebbe essere necessario passare valori diversi al processo di compilazione senza modificare la definizione dell'attività usando il --set
flag con il az acr task run
comando .
Esempio: Impostazione del tag immagine in fase di esecuzione
Si supponga di avere un'attività del Registro Azure Container definita in un acr-task.yml
file con un segnaposto per il tag immagine:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
È possibile attivare l'attività e impostare la variabile su v2
in fase di esecuzione usando il comando dell'interfaccia della tag
riga di comando di Azure seguente:
az acr task run --registry myregistry --name mytask --set tag=v2
Questo comando avvierà l'attività registro Azure Container denominata mytask
e compilerà l'immagine usando il v2
tag , eseguendo l'override del segnaposto nel acr-task.yml
file.
Questo approccio consente la personalizzazione nelle pipeline CI/CD, consentendo di modificare in modo dinamico i parametri in base alle esigenze correnti senza modificare le definizioni delle attività.
push
Esegue il push di una o più immagini compilate o contrassegnate nuovamente in un registro contenitori. Supporta il push in registri privati, ad esempio in Registro Azure Container o nell'hub Docker pubblico.
Sintassi: push
Il tipo di passaggio push
supporta una raccolta di immagini. La sintassi delle raccolte YAML supporta formati annidati e inline. L'esecuzione del push di una singola immagine è in genere rappresentato usando la sintassi inline:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Per migliorare la leggibilità, usare la sintassi annidata quando si esegue il push di più immagini:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Proprietà: push
Il tipo di passaggio push
supporta le proprietà seguenti. Per informazioni dettagliate su queste proprietà, vedere la sezione Proprietà passaggio attività di questo articolo.
Proprietà | Type | Obbligatorio |
---|---|---|
env |
[stringa, stringa, ...] | Facoltativo |
id |
string | Facoltativo |
ignoreErrors |
bool | Facoltativo |
startDelay |
intero (secondi) | Facoltativo |
timeout |
intero (secondi) | Facoltativo |
when |
[stringa, stringa, ...] | Facoltativo |
Esempi: push
Eseguire il push di più immagini
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
Compilare, eseguire il push ed eseguire
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
Il tipo di passaggio cmd
esegue un contenitore.
Sintassi: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Proprietà: cmd
Il tipo di passaggio cmd
supporta le proprietà seguenti:
Proprietà | Type | Obbligatorio |
---|---|---|
detach |
bool | Facoltativo |
disableWorkingDirectoryOverride |
bool | Facoltativo |
entryPoint |
string | Facoltativo |
env |
[stringa, stringa, ...] | Facoltativo |
expose |
[stringa, stringa, ...] | Facoltativo |
id |
string | Facoltativo |
ignoreErrors |
bool | Facoltativo |
isolation |
string | Facoltativo |
keep |
bool | Facoltativo |
network |
oggetto | Facoltativo |
ports |
[stringa, stringa, ...] | Facoltativo |
pull |
bool | Facoltativo |
repeat |
int | Facoltativo |
retries |
int | Facoltativo |
retryDelay |
intero (secondi) | Facoltativo |
secret |
oggetto | Facoltativo |
startDelay |
intero (secondi) | Facoltativo |
timeout |
intero (secondi) | Facoltativo |
volumeMount |
oggetto | Facoltativo |
when |
[stringa, stringa, ...] | Facoltativo |
workingDirectory |
string | Facoltativo |
I dettagli di tali proprietà sono descritti nella sezione Proprietà dei passaggi delle attività di questo articolo.
Esempi: cmd
Eseguire l'immagine hello-world
Questo comando esegue il file di attività hello-world.yaml
, che fa riferimento all'immagine hello-world nell'hub Docker.
az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: mcr.microsoft.com/hello-world
Eseguire l'immagine bash e il comando echo "hello world"
Questo comando esegue il file di attività bash-echo.yaml
, che fa riferimento all'immagine bash nell'hub Docker.
az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo hello world
Applicare il tag all'immagine bash specifica
Per eseguire una versione di immagine specifica, indicare il tag in cmd
.
Questo comando esegue il file di attività bash-echo-3.yaml
, che fa riferimento all'immagine bash:3.0 nell'hub Docker.
az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash:3.0 echo hello world
Eseguire immagini personalizzate
Il tipo di passaggio cmd
fa riferimento alle immagini usando il formato docker run
standard. Le immagini non precedute da un registro contenitori vengono considerate come provenienti da docker.io. L'esempio precedente potrebbe essere ugualmente rappresentato come:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Usando la convenzione di riferimento standard docker run
per le immagini, cmd
è possibile eseguire immagini da qualsiasi registro privato o dall'hub Docker pubblico. Se si fa riferimento a immagini nello stesso registro contenitori in cui è in esecuzione Attività di Registro Azure Container, non è necessario specificare alcuna credenziale di registro.
Eseguire un'immagine proveniente da un Registro Azure Container. Nell'esempio seguente si presuppone che sia presente un registro denominato
myregistry
e un'immaginemyimage:mytag
personalizzata.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Generalizzare il riferimento al Registro di sistema con una variabile o un alias Run
Invece di impostare come hardcoded il nome del Registro di sistema in un
acr-task.yaml
file, è possibile renderlo più portabile usando una variabile o un alias Run. LaRun.Registry
variabile o$Registry
l'alias si espande in fase di esecuzione fino al nome del Registro di sistema in cui è in esecuzione l'attività.Ad esempio, per generalizzare l'attività precedente in modo che funzioni in qualsiasi registro Azure Container, fare riferimento alla variabile $Registry nel nome dell'immagine:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Accedere ai volumi segreti
La volumes
proprietà consente di specificare i volumi e il relativo contenuto segreto per build
e cmd
i passaggi di un'attività. All'interno di ogni passaggio, una proprietà facoltativa volumeMounts
elenca i volumi e i percorsi del contenitore corrispondenti da montare nel contenitore in quel passaggio. I segreti vengono forniti come file nel percorso di montaggio di ogni volume.
Eseguire un'attività e montare due segreti in un passaggio: uno archiviato in un insieme di credenziali delle chiavi e uno specificato nella riga di 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
Proprietà dei passaggi delle attività
Ogni tipo di passaggio supporta diverse proprietà appropriate per il tipo stesso. La tabella seguente definisce tutte le proprietà disponibili per un passaggio. Non tutti i tipi di passaggi supportano tutte le proprietà. Per visualizzare le proprietà disponibili per ogni tipo di passaggio, vedere le sezioni d riferimento al tipo di passaggio cmd, build e push.
Proprietà | Type | Facoltativo | Descrizione | Default value |
---|---|---|---|---|
detach |
bool | Sì | Indica se il contenitore deve essere disconnesso durante l'esecuzione. | false |
disableWorkingDirectoryOverride |
bool | Sì | Indica se disabilitare workingDirectory la funzionalità di override. Usare questa opzione in combinazione con workingDirectory per avere il controllo completo sulla directory di lavoro del contenitore. |
false |
entryPoint |
string | Sì | Esegue l'override dell'elemento [ENTRYPOINT] di un contenitore del passaggio. |
None |
env |
[stringa, stringa, ...] | Sì | Matrice di stringhe in formato key=value che definiscono le variabili di ambiente per il passaggio. |
None |
expose |
[stringa, stringa, ...] | Sì | Matrice di porte esposte dal contenitore. | None |
id |
string | Sì | Identifica in modo univoco il passaggio nell'attività. Altri passaggi nell'attività possono fare riferimento all'elemento id del passaggio, ad esempio per il controllo delle dipendenze con when .id è anche il nome del contenitore in esecuzione. I processi in esecuzione in altri contenitori nell'attività, ad esempio, possono fare riferimento all'elemento id come nome host DNS o per accedervi con l'elemento [id] dei log di Docker. |
acb_step_%d , dove %d è l'indice in base 0 del passaggio in alto verso il basso nel file YAML |
ignoreErrors |
bool | Sì | Indica se contrassegnare il passaggio come riuscito indipendentemente dal fatto che si sia verificato un errore durante l'esecuzione del contenitore. | false |
isolation |
string | Sì | Livello di isolamento del contenitore. | default |
keep |
bool | Sì | Indica se il contenitore del passaggio deve essere mantenuto dopo l'esecuzione. | false |
network |
oggetto | Sì | Identifica una rete in cui viene eseguito il contenitore. | None |
ports |
[stringa, stringa, ...] | Sì | Matrice di porte pubblicate dal contenitore all'host. | None |
pull |
bool | Sì | Indica se forzare un pull del contenitore prima di eseguirlo per impedire qualsiasi comportamento di memorizzazione nella cache. | false |
privileged |
bool | Sì | Indica se eseguire il contenitore in modalità con privilegi. | false |
repeat |
int | Sì | Numero di tentativi per ripetere l'esecuzione di un contenitore. | 0 |
retries |
int | Sì | Numero di tentativi da tentare se un contenitore non riesce l'esecuzione. Viene eseguito un nuovo tentativo solo se il codice di uscita di un contenitore è diverso da zero. | 0 |
retryDelay |
intero (secondi) | Sì | Ritardo in secondi tra i tentativi di esecuzione di un contenitore. | 0 |
secret |
oggetto | Sì | Identifica un segreto di Azure Key Vault o un'identità gestita per le risorse di Azure. | None |
startDelay |
intero (secondi) | Sì | Numero di secondi per ritardare l'esecuzione di un contenitore. | 0 |
timeout |
intero (secondi) | Sì | Numero massimo di secondi per l'esecuzione di un passaggio prima che venga terminato. | 600 |
when |
[stringa, stringa, ...] | Sì | Configura la dipendenza di un passaggio in uno o più passaggi nell'attività. | None |
user |
string | Sì | Nome utente o UID di un contenitore | None |
workingDirectory |
string | Sì | Imposta la directory di lavoro per un passaggio. Per impostazione predefinita, Attività di Registro Azure Container crea una directory radice come directory di lavoro. Se la compilazione prevede diversi passaggi, tuttavia, i passaggi precedenti possono condividere artefatti con quelli successivi specificando la stessa directory di lavoro. | c:\workspace in Windows o /workspace in Linux |
volumeMount
L'oggetto volumeMount ha le proprietà seguenti.
Proprietà | Type | Facoltativo | Descrizione | Default value |
---|---|---|---|---|
name |
string | No | Nome del volume da montare. Deve corrispondere esattamente al nome di una volumes proprietà. |
None |
mountPath |
string | no | Percorso assoluto per montare i file nel contenitore. | None |
Esempi: proprietà dei passaggi delle attività
Esempio: id
Compilare due immagini, creando un'istanza di un'immagine di test funzionale. Ogni passaggio è identificato da un elemento id
univoco, a cui altri passaggi nell'attività fanno riferimento nella proprietà when
.
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
Esempio: when
La proprietà when
specifica la dipendenza di un passaggio in altri passaggi nell'attività. Supporta due valori di parametro:
when: ["-"]
- Indica che in altri passaggi non è presente alcuna dipendenza. Un passaggio con la specificawhen: ["-"]
inizia immediatamente l'esecuzione e consente l'esecuzione simultanea dei passaggi.when: ["id1", "id2"]
- Indica che il passaggio dipende dai passaggi conid
"id1" eid
"id2". Questo passaggio non viene eseguito fino a quando i passaggi "id1" e "id2" non sono completati.
Se when
non è specificato in un passaggio, quest'ultimo dipende dal completamento di quello precedente nel file acr-task.yaml
.
Esecuzione sequenziale di passaggi senza 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
Esecuzione sequenziale di passaggi con 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"]
Compilazione di immagini parallele:
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: ["-"]
Compilazione di immagini in parallelo e test di dipendenza:
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"]
Variabili di esecuzione
Attività di Registro Azure Container contiene un set predefinito di variabili disponibili per i passaggi delle attività quando vengono eseguiti. A tali variabili è possibile accedere usando il formato {{.Run.VariableName}}
, dove l'elemento VariableName
è uno dei seguenti:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
I nomi delle variabili sono in genere autoesplicativi. Per le variabili di uso comune, seguire i dettagli. A partire dalla versione v1.1.0
YAML, è possibile usare un alias attività abbreviato e predefinito al posto della maggior parte delle variabili di esecuzione. Ad esempio, al posto di {{.Run.Registry}}
, usare l'alias $Registry
.
Run.ID
Ogni esecuzione, tramite az acr run
, o basata su trigger di attività create tramite az acr task create
, ha un ID univoco. che rappresenta l'esecuzione corrente.
La variabile viene usata in genere per assegnare univocamente un tag a un'immagine:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
Identificatore univoco per un volume condiviso accessibile da tutti i passaggi dell'attività. Il volume viene montato c:\workspace
in In Windows o /workspace
in Linux.
Run.Registry
Nome completo del server del registro contenitori usato in genere per fare riferimento in modo generico al registro contenitori in cui l'attività è in esecuzione.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
Nome del registro contenitori. In genere usata nei passaggi dell'attività che non richiedono un nome di server completo, cmd
ad esempio passaggi che eseguono i comandi dell'interfaccia della riga di comando di Azure nei registri.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
Ora UTC corrente in cui l'esecuzione è stata avviata.
Run.Commit
Per un'attività attivata da un commit in un repository GitHub, l'identificatore di commit.
Run.Branch
Per un'attività attivata da un commit in un repository GitHub, il nome del ramo.
Alias
A partire da v1.1.0
, Attività registro Azure Container supporta alias disponibili per i passaggi delle attività quando vengono eseguiti. Gli alias sono simili al concetto di alias (tasti di scelta rapida dei comandi) supportati in bash e in altre shell dei comandi.
Con un alias, è possibile avviare qualsiasi comando o gruppo di comandi (incluse le opzioni e i nomi file) immettendo una singola parola.
Attività del Registro Azure Container supporta diversi alias predefiniti e anche alias personalizzati creati.
Alias predefiniti
Gli alias attività seguenti sono disponibili per l'uso al posto delle variabili di esecuzione:
Alias | Variabile di esecuzione |
---|---|
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 |
Nei passaggi dell'attività precedere un alias con la direttiva , come nell'esempio $
seguente:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Alias di immagine
Ognuno degli alias seguenti punta a un'immagine stabile in Microsoft Container Registry (MCR). È possibile fare riferimento a ognuno di essi nella cmd
sezione di un file di attività senza usare una direttiva .
Alias | Immagine |
---|---|
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 |
L'attività di esempio seguente usa diversi alias per eliminare i tag di immagine precedenti a 7 giorni nel repository samples/hello-world
nel Registro di sistema di esecuzione:
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 personalizzato
Definire un alias personalizzato nel file YAML e usarlo come illustrato nell'esempio seguente. Un alias può contenere solo caratteri alfanumerici. La direttiva predefinita per espandere un alias è il $
carattere .
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
È possibile collegarsi a un file YAML remoto o locale per le definizioni di alias personalizzate. L'esempio seguente collega a un file YAML nell'archivio BLOB di Azure:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Passaggi successivi
Per una panoramica delle attività in più passaggi, vedere Run multi-step build, test, and patch tasks in ACR Tasks (Eseguire attività di compilazione, test e applicazione di patch in più passaggi in Attività di Registro Azure Container).
Per le compilazioni in un singolo passaggio, vedere ACR Tasks overview (Panoramica di Attività di Registro Azure Container).