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 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) 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à.
600 (10 minuti)
workingDirectory string 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à. c:\workspace in Windows o /workspace in Linux
env [stringa, stringa, ...] 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à. None
secrets [segreto, segreto, ...] Matrice di oggetti segreti . No None
networks [rete, rete, ...] Matrice di oggetti di rete . No None
volumes [volume, volume, ...] 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.

Proprietà Type Facoltativo Descrizione Default value
id string No Identificatore del segreto. None
keyvault string URL del segreto di Azure Key Vault. None
clientID string ID client dell'identità gestita assegnata dall'utente per le risorse di Azure. None

rete

L'oggetto di rete ha le proprietà seguenti.

Proprietà Type Facoltativo Descrizione Default value
name string No Nome della rete. None
driver string Driver per gestire la rete. None
ipv6 bool Indica se la rete IPv6 è abilitata. false
skipCreation bool Se ignorare la creazione di rete. false
isDefault bool 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, detache 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.
-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.
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 myregistrye un'immagine myimage:mytagpersonalizzata.

    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. La Run.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 Indica se il contenitore deve essere disconnesso durante l'esecuzione. false
disableWorkingDirectoryOverride bool 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 Esegue l'override dell'elemento [ENTRYPOINT] di un contenitore del passaggio. None
env [stringa, stringa, ...] Matrice di stringhe in formato key=value che definiscono le variabili di ambiente per il passaggio. None
expose [stringa, stringa, ...] Matrice di porte esposte dal contenitore. None
id string 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 Indica se contrassegnare il passaggio come riuscito indipendentemente dal fatto che si sia verificato un errore durante l'esecuzione del contenitore. false
isolation string Livello di isolamento del contenitore. default
keep bool Indica se il contenitore del passaggio deve essere mantenuto dopo l'esecuzione. false
network oggetto Identifica una rete in cui viene eseguito il contenitore. None
ports [stringa, stringa, ...] Matrice di porte pubblicate dal contenitore all'host. None
pull bool Indica se forzare un pull del contenitore prima di eseguirlo per impedire qualsiasi comportamento di memorizzazione nella cache. false
privileged bool Indica se eseguire il contenitore in modalità con privilegi. false
repeat int Numero di tentativi per ripetere l'esecuzione di un contenitore. 0
retries int 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) Ritardo in secondi tra i tentativi di esecuzione di un contenitore. 0
secret oggetto Identifica un segreto di Azure Key Vault o un'identità gestita per le risorse di Azure. None
startDelay intero (secondi) Numero di secondi per ritardare l'esecuzione di un contenitore. 0
timeout intero (secondi) Numero massimo di secondi per l'esecuzione di un passaggio prima che venga terminato. 600
when [stringa, stringa, ...] Configura la dipendenza di un passaggio in uno o più passaggi nell'attività. None
user string Nome utente o UID di un contenitore None
workingDirectory string 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 specifica when: ["-"] inizia immediatamente l'esecuzione e consente l'esecuzione simultanea dei passaggi.
  • when: ["id1", "id2"] - Indica che il passaggio dipende dai passaggi con id "id1" e id "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.0YAML, è 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).