Sdílet prostřednictvím


Referenční informace k úkolům ACR: YAML

Definice vícekrokové úlohy v ACR Tasks poskytuje primitivní výpočetní prostředky zaměřené na kontejnery zaměřené na vytváření, testování a opravy kontejnerů. Tento článek popisuje příkazy, parametry, vlastnosti a syntaxi souborů YAML, které definují vaše úlohy s více kroky.

Tento článek obsahuje referenční informace k vytváření souborů YAML s více kroky pro úlohy ACR. Pokud chcete seznámit se službou ACR Tasks, podívejte se na přehled úkolů ACR.

formát souboru acr-task.yaml

ACR Tasks podporuje deklaraci úkolů s více kroky ve standardní syntaxi YAML. Kroky úkolu definujete v souboru YAML. Úlohu pak můžete spustit ručně předáním souboru do příkazu az acr run . Nebo pomocí souboru vytvořte úlohu s příkazem az acr task create , který se aktivuje automaticky při potvrzení Gitu, aktualizaci základní image nebo plánu. I když se tento článek označuje acr-task.yaml jako soubor obsahující kroky, ACR Tasks podporuje libovolný platný název souboru s podporovanou příponou.

Primitiva nejvyšší úrovně acr-task.yaml jsou vlastnosti úloh, typy kroků a vlastnosti kroku:

  • Vlastnosti úlohy se vztahují na všechny kroky v průběhu provádění úkolu. Existuje několik vlastností globálních úloh, mezi které patří:
    • version
    • stepTimeout
    • workingDirectory
  • Typy kroků úkolů představují typy akcí, které lze provádět v úkolu. Existují tři typy kroků:
    • build
    • push
    • cmd
  • Vlastnosti kroku úkolu jsou parametry, které se vztahují na jednotlivé kroky. Existuje několik vlastností kroku, mezi které patří:
    • startDelay
    • timeout
    • when
    • ... a mnoho dalších.

Základní formát acr-task.yaml souboru, včetně některých běžných vlastností kroku, následuje. I když není vyčerpávající reprezentace všech dostupných vlastností kroku nebo použití typu kroku, poskytuje rychlý přehled základního formátu souboru.

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.

Podporovaná rozšíření názvů souborů úloh

ACR Tasks má rezervovaných několik přípon souborů, včetně .yamltoho, že bude zpracovávat jako soubor úkolu. Jakékoli rozšíření , které není v následujícím seznamu, považuje ACR Tasks za soubor Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua

YAML je jediný formát souboru, který služba ACR Tasks aktuálně podporuje. Další přípony souborů jsou vyhrazeny pro možnou budoucí podporu.

Spuštění ukázkových úloh

V následujících částech tohoto článku je odkazováno několik ukázkových souborů úloh. Ukázkové úlohy jsou ve veřejném úložišti GitHubu, Azure-Samples/acr-tasks. Můžete je spustit pomocí příkazu Azure CLI az acr run. Ukázkové příkazy jsou podobné:

az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git

Formátování ukázkových příkazů předpokládá, že jste v Azure CLI nakonfigurovali výchozí registr, takže tento parametr vynechá --registry . Pokud chcete nakonfigurovat výchozí registr, použijte příkaz az config s příkazem set , který přijímá defaults.acr=REGISTRY_NAME pár hodnot klíče.

Pokud například chcete nakonfigurovat Azure CLI s výchozím registrem s názvem myregistry:

az config set defaults.acr=myregistry

Vlastnosti úlohy

Vlastnosti úloh se obvykle zobrazují v horní části acr-task.yaml souboru a jsou globální vlastnosti, které se vztahují v průběhu celého provádění kroků úkolu. Některé z těchto globálních vlastností je možné přepsat v rámci jednotlivého kroku.

Vlastnost Typ Volitelné Popis Podporováno přepsání Default value
version string Ano Verze acr-task.yaml souboru parsovaná službou ACR Tasks. I když se ACR Tasks snaží zachovat zpětnou kompatibilitu, tato hodnota umožňuje službě ACR Tasks udržovat kompatibilitu v rámci definované verze. Pokud není zadáno, výchozí hodnota v1.0.0je . v1.0.0
stepTimeout int (sekundy) Ano Maximální počet sekund, po které může krok běžet. Pokud je vlastnost určena stepTimeout pro úlohu, nastaví výchozí timeout vlastnost všech kroků. Pokud je vlastnost zadána timeout v kroku, přepíše stepTimeout vlastnost poskytovanou úkolem.

Součet hodnot časového limitu kroku pro úlohu by se měl rovnat hodnotě vlastnosti spuštění timeout úkolu (například nastavením předáním --timeout az acr task create příkazu). Pokud je hodnota spuštění timeout úkolů menší, má přednost.
Ano 600 (10 minut)
workingDirectory string Ano Pracovní adresář kontejneru během běhu. Pokud je vlastnost určena pro úlohu, nastaví výchozí workingDirectory vlastnost všech kroků. Pokud je zadán v kroku, přepíše vlastnost poskytovanou úkolem. Ano c:\workspace ve Windows nebo /workspace Linuxu
env [řetězec, řetězec, ...] Ano Pole řetězců ve key=value formátu, které definují proměnné prostředí pro úlohu. Pokud je vlastnost určena pro úlohu, nastaví výchozí env vlastnost všech kroků. Pokud je zadaný v kroku, přepíše všechny proměnné prostředí zděděné z úkolu. Ano Nic
secrets [tajné, tajné, ...] Ano Pole tajných objektů. No Nic
networks [síť, síť, ...] Ano Pole síťových objektů. No Nic
volumes [svazek, svazek, ...] Ano Pole objektů svazků Určuje svazky se zdrojovým obsahem, které se mají připojit ke kroku. No Nic

Tajný kód

Tajný objekt má následující vlastnosti.

Vlastnost Typ Volitelné Popis Default value
id string No Identifikátor tajného klíče. Nic
keyvault string Ano Adresa URL tajného klíče služby Azure Key Vault. Nic
clientID string Ano ID klienta spravované identity přiřazené uživatelem pro prostředky Azure. Nic

síť

Objekt sítě má následující vlastnosti.

Vlastnost Typ Volitelné Popis Default value
name string No Název sítě. Nic
driver string Ano Ovladač pro správu sítě. Nic
ipv6 bool Ano Určuje, jestli je povolená síť IPv6. false
skipCreation bool Ano Zda se má přeskočit vytváření sítě. false
isDefault bool Ano Určuje, jestli je síť výchozí sítí poskytovanou službou Azure Container Registry. false

volume

Objekt svazku má následující vlastnosti.

Vlastnost Typ Volitelné Popis Default value
name string No Název svazku, který se má připojit. Může obsahovat pouze alfanumerické znaky, -a _. Nic
secret map[string]string No Každý klíč mapy je název souboru vytvořeného a naplněného ve svazku. Každá hodnota je řetězcová verze tajného kódu. Tajné hodnoty musí být zakódované v Base64. Nic

Typy kroků úkolu

ACR Tasks podporuje tři typy kroků. Každý typ kroku podporuje několik vlastností, které jsou podrobně popsány v části pro každý typ kroku.

Typ kroku Popis
build Vytvoří image kontejneru pomocí známé docker build syntaxe.
push docker push Spustí nově sestavené nebo přetěžované image do registru kontejneru. Služba Azure Container Registry, další privátní registry a veřejné centrum Dockeru se podporují.
cmd Spustí kontejner jako příkaz s parametry předanými do kontejneru [ENTRYPOINT]. Typ cmd kroku podporuje parametry, jako jsou env, detacha další známé docker run možnosti příkazů, povolení jednotek a funkčního testování pomocí souběžného spuštění kontejneru.

build

Sestavte image kontejneru. Typ build kroku představuje víceklienta, bezpečný způsob spuštění docker build v cloudu jako primitivní třídy.

Syntaxe: sestavení

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

Spuštěním příkazu az acr runzískejte verzi Dockeru.

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

Přidejte proměnnou DOCKER_BUILDKIT=1 prostředí do souboru yaml pro povolení buildkit a použití secret s buildkit.

Typ build kroku podporuje parametry v následující tabulce. Typ build kroku také podporuje všechny možnosti sestavení příkazu docker buildu , například --build-arg nastavení proměnných času sestavení.

Parametr Popis Volitelné
-t | --image Definuje plně kvalifikovanou image:tag sestavenou image.

Vzhledem k tomu, že image se dají použít k ověřování vnitřních úloh, jako jsou funkční testy, nemusí všechny image vyžadovat push registr. K instanci image v rámci provádění úlohy však image potřebuje název, na který se má odkazovat.

Na rozdíl od az acr buildspouštění úloh ACR neposkytuje výchozí chování při nabízení. U ACR Tasks se ve výchozím scénáři předpokládá možnost sestavení, ověření a následné nasdílení image. Podívejte se, jak volitelně nasdílit sestavené image.
Ano
-f | --file Určuje soubor Dockerfile předaný do docker buildsouboru . Pokud není zadaný, předpokládá se výchozí soubor Dockerfile v kořenovém adresáři kontextu. Pokud chcete zadat soubor Dockerfile, předejte název souboru relativní ke kořenovému adresáři kontextu. Ano
context Kořenový adresář předaný .docker build Kořenový adresář každého úkolu je nastavený na sdílený pracovní adresář a obsahuje kořen přidruženého naklonovaného adresáře Gitu. No

Vlastnosti: sestavení

Typ build kroku podporuje následující vlastnosti. Podrobnosti o těchto vlastnostech najdete v části Vlastnosti kroku úkolu v tomto článku.

Vlastnosti Typ Požaduje se
detach bool Volitelné
disableWorkingDirectoryOverride bool Volitelné
entryPoint řetězec Volitelné
env [řetězec, řetězec, ...] Volitelné
expose [řetězec, řetězec, ...] Volitelné
id řetězec Volitelné
ignoreErrors bool Volitelné
isolation řetězec Volitelné
keep bool Volitelné
network objekt Volitelné
ports [řetězec, řetězec, ...] Volitelné
pull bool Volitelné
repeat int Volitelné
retries int Volitelné
retryDelay int (sekundy) Volitelné
secret objekt Volitelné
startDelay int (sekundy) Volitelné
timeout int (sekundy) Volitelné
volumeMount objekt Volitelné
when [řetězec, řetězec, ...] Volitelné
workingDirectory řetězec Volitelné

Příklady: sestavení

Sestavení image – kontext v kořenovém adresáři

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 .

Image sestavení – kontext v podadresáři

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

Dynamické předávání proměnných ve službě ACR Tasks

Při práci s úlohami služby Azure Container Registry (ACR) můžete zjistit, že potřebujete předat do procesu sestavení různé hodnoty, aniž byste změnili definici úlohy pomocí --set příznaku s příkazem az acr task run .

Příklad: Nastavení značky image za běhu

Předpokládejme, že máte v acr-task.yml souboru definovanou úlohu ACR se zástupným symbolem pro značku obrázku:

steps:
  - build: -t $Registry/hello-world:{{.Values.tag}}

Úlohu můžete aktivovat a proměnnou nastavit tag za v2 běhu pomocí následujícího příkazu Azure CLI:

az acr task run --registry myregistry --name mytask --set tag=v2

Tento příkaz spustí úlohu ACR s názvem mytask a sestaví image pomocí v2 značky a přepíše zástupný symbol v acr-task.yml souboru.

Tento přístup umožňuje přizpůsobení v kanálech CI/CD a umožňuje dynamicky upravovat parametry na základě vašich aktuálních potřeb beze změny definic úloh.

push

Nasdílení jedné nebo více sestavených nebo opakovaných imagí do registru kontejneru Podporuje nabízení do privátních registrů, jako je Azure Container Registry, nebo do veřejného Docker Hubu.

Syntaxe: push

Typ push kroku podporuje kolekci obrázků. Syntaxe kolekce YAML podporuje vložené a vnořené formáty. Nahrání jednoho obrázku je obvykle reprezentováno pomocí vložené syntaxe:

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

Pokud chcete zvýšit čitelnost, použijte při nabízení více imagí vnořenou syntaxi:

version: v1.1.0
steps:
  # Nested YAML collection syntax
  - push:
    - $Registry/hello-world:$ID
    - $Registry/hello-world:latest

Vlastnosti: nasdílení změn

Typ push kroku podporuje následující vlastnosti. Podrobnosti o těchto vlastnostech najdete v části Vlastnosti kroku úkolu v tomto článku.

Vlastnost Typ Požaduje se
env [řetězec, řetězec, ...] Volitelné
id řetězec Volitelné
ignoreErrors bool Volitelné
startDelay int (sekundy) Volitelné
timeout int (sekundy) Volitelné
when [řetězec, řetězec, ...] Volitelné

Příklady: push

Nasdílení více imagí

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

Sestavení, nasdílení změn a spuštění

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

Typ cmd kroku spustí kontejner.

Syntaxe: cmd

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

Vlastnosti: cmd

Typ cmd kroku podporuje následující vlastnosti:

Vlastnost Typ Požaduje se
detach bool Volitelné
disableWorkingDirectoryOverride bool Volitelné
entryPoint řetězec Volitelné
env [řetězec, řetězec, ...] Volitelné
expose [řetězec, řetězec, ...] Volitelné
id řetězec Volitelné
ignoreErrors bool Volitelné
isolation řetězec Volitelné
keep bool Volitelné
network objekt Volitelné
ports [řetězec, řetězec, ...] Volitelné
pull bool Volitelné
repeat int Volitelné
retries int Volitelné
retryDelay int (sekundy) Volitelné
secret objekt Volitelné
startDelay int (sekundy) Volitelné
timeout int (sekundy) Volitelné
volumeMount objekt Volitelné
when [řetězec, řetězec, ...] Volitelné
workingDirectory řetězec Volitelné

Podrobnosti o těchto vlastnostech najdete v části Vlastnosti kroku úkolu tohoto článku.

Příklady: cmd

Spuštění image hello-world

Tento příkaz spustí hello-world.yaml soubor úlohy, který odkazuje na image hello-world v Docker Hubu.

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

Spuštění image Bash a ozvěna "hello world"

Tento příkaz spustí bash-echo.yaml soubor úlohy, který odkazuje na image Bash v Docker Hubu.

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

Spuštění konkrétní značky image Bash

Pokud chcete spustit konkrétní verzi image, zadejte značku v sadě cmd.

Tento příkaz spustí bash-echo-3.yaml soubor úlohy, který odkazuje na image bash:3.0 v Docker Hubu.

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

Spuštění vlastních imagí

Typ cmd kroku odkazuje na obrázky ve standardním docker run formátu. Předpokládá se, že image, které nejsou v registru, pocházejí z docker.io. Předchozí příklad by mohl být reprezentován stejně jako:

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

Pomocí standardní docker run referenční konvence cmd image můžete spouštět image z libovolného privátního registru nebo veřejného Centra Dockeru. Pokud odkazujete na image ve stejném registru, ve kterém se spouští úloha ACR, nemusíte zadávat žádné přihlašovací údaje registru.

  • Spusťte image z registru kontejneru Azure. Následující příklad předpokládá, že máte registr s názvem myregistry, a vlastní image myimage:mytag.

    version: v1.1.0
    steps:
        - cmd: myregistry.azurecr.io/myimage:mytag
    
  • Generalizace odkazu na registr s proměnnou Spuštění nebo aliasem

    Místo pevného kódování názvu registru v acr-task.yaml souboru ho můžete usnadnit pomocí proměnné Spustit nebo aliasu. Proměnná Run.Registry nebo $Registry alias se za běhu rozbalí na název registru, ve kterém se úloha spouští.

    Pokud chcete například zobecnit předchozí úlohu tak, aby fungovala v libovolném registru kontejneru Azure, odkazujte na proměnnou $Registry v názvu image:

    version: v1.1.0
    steps:
      - cmd: $Registry/myimage:mytag
    

Přístup ke svazkům tajných kódů

Tato volumes vlastnost umožňuje zadat svazky a jejich obsah tajných kódů pro build a cmd kroky v úkolu. V každém kroku volitelná volumeMounts vlastnost uvádí svazky a odpovídající cesty kontejneru, které se mají připojit k kontejneru v daném kroku. Tajné kódy jsou poskytovány jako soubory v cestě připojení každého svazku.

Spusťte úlohu a připojte dva tajné kódy ke kroku: jeden uložený v trezoru klíčů a druhý zadaný na příkazovém řádku:

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

Vlastnosti kroku úkolu

Každý typ kroku podporuje několik vlastností vhodných pro jeho typ. Následující tabulka definuje všechny dostupné vlastnosti kroku. Ne všechny typy kroků podporují všechny vlastnosti. Informace o tom, které z těchto vlastností jsou k dispozici pro jednotlivé typy kroků, najdete v částech s referenčními informacemi o typu kroku cmd, build a push .

Vlastnost Typ Volitelné Popis Default value
detach bool Ano Určuje, jestli se má kontejner při spuštění odpojit. false
disableWorkingDirectoryOverride bool Ano Zda chcete zakázat workingDirectory funkci přepsání. Pomocí této kombinace workingDirectory můžete mít úplnou kontrolu nad pracovním adresářem kontejneru. false
entryPoint string Ano [ENTRYPOINT] Přepíše kontejner kroku. Nic
env [řetězec, řetězec, ...] Ano Pole řetězců ve key=value formátu, které definují proměnné prostředí pro krok. Nic
expose [řetězec, řetězec, ...] Ano Pole portů, které jsou vystaveny z kontejneru. Nic
id string Ano Jednoznačně identifikuje krok v rámci úkolu. Další kroky v úkolu můžou odkazovat na krok id, například pro kontrolu závislostí pomocí when.

Jedná se id také o název spuštěného kontejneru. Procesy spuštěné v jiných kontejnerech v úloze můžou odkazovat na id název hostitele DNS nebo k přístupu pomocí protokolů Dockeru [ID], například.
acb_step_%d, kde %d je index založený na 0 kroku shora dolů v souboru YAML
ignoreErrors bool Ano Zda se má krok označit jako úspěšný bez ohledu na to, jestli během provádění kontejneru došlo k chybě. false
isolation string Ano Úroveň izolace kontejneru. default
keep bool Ano Určuje, jestli se má kontejner kroku uchovávat po spuštění. false
network objekt Ano Identifikuje síť, ve které se kontejner spouští. Nic
ports [řetězec, řetězec, ...] Ano Pole portů publikovaných z kontejneru do hostitele Nic
pull bool Ano Určuje, jestli chcete před spuštěním vynutit přijetí změn kontejneru, aby se zabránilo jakémukoli chování při ukládání do mezipaměti. false
privileged bool Ano Určuje, jestli se má kontejner spouštět v privilegovaném režimu. false
repeat int Ano Počet opakování opakování spuštění kontejneru. 0
retries int Ano Počet opakovaných pokusů o pokus, pokud kontejner selže se svým spuštěním. Opakování se pokusí pouze v případě, že ukončovací kód kontejneru není nulový. 0
retryDelay int (sekundy) Ano Zpoždění v sekundách mezi opakovanými pokusy o spuštění kontejneru 0
secret objekt Ano Identifikuje tajný klíč služby Azure Key Vault nebo spravovanou identitu pro prostředky Azure. Nic
startDelay int (sekundy) Ano Počet sekund ke zpoždění spuštění kontejneru 0
timeout int (sekundy) Ano Maximální počet sekund, po které může krok provést před ukončením. 600
when [řetězec, řetězec, ...] Ano Nakonfiguruje závislost kroku na jednom nebo několika dalších krocích v rámci úkolu. Nic
user string Ano Uživatelské jméno nebo UID kontejneru Nic
workingDirectory string Ano Nastaví pracovní adresář pro krok. Ve výchozím nastavení vytvoří ACR Tasks jako pracovní adresář kořenový adresář. Pokud ale sestavení obsahuje několik kroků, dřívější kroky můžou sdílet artefakty s pozdějšími kroky zadáním stejného pracovního adresáře. c:\workspace ve Windows nebo /workspace Linuxu

volumeMount

Objekt volumeMount má následující vlastnosti.

Vlastnost Typ Volitelné Popis Default value
name string No Název svazku, který se má připojit. Musí přesně odpovídat názvu z volumes vlastnosti. Nic
mountPath string ne Absolutní cesta k připojení souborů v kontejneru. Nic

Příklady: Vlastnosti kroku úkolu

Příklad: ID

Sestavte dvě image a vytvořte instanci funkční testovací image. Každý krok je identifikován jedinečným id postupem v odkazu na úkol ve své when vlastnosti.

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"]

Příklad: kdy

Vlastnost when určuje závislost kroku na dalších krocích v rámci úkolu. Podporuje dvě hodnoty parametrů:

  • when: ["-"] – Označuje žádnou závislost na dalších krocích. Krok určující when: ["-"] , že se spustí okamžitě a povolí souběžné spuštění kroku.
  • when: ["id1", "id2"] – Označuje, že krok je závislý na krocích s id ID1 a id ID2. Tento krok se nespustí, dokud se nedokončí kroky ID1 i ID2.

Pokud when není zadaný v kroku, závisí tento krok na dokončení předchozího kroku v acr-task.yaml souboru.

Provádění sekvenčních kroků bez 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

Provádění sekvenčních kroků s 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"]

Sestavení paralelních imagí:

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: ["-"]

Paralelní sestavení image a závislé testování:

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"]

Spouštění proměnných

ACR Tasks obsahuje výchozí sadu proměnných, které jsou k dispozici pro kroky úkolů při jejich spuštění. K těmto proměnným lze přistupovat pomocí formátu {{.Run.VariableName}}, kde VariableName je jedna z následujících možností:

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

Názvyproměnných Podrobnosti následují pro běžně používané proměnné. Od verze v1.1.0YAML můžete místo většiny spuštěných proměnných použít zkrácený předdefinovaný alias úlohy. Například místo {{.Run.Registry}}použití aliasu $Registry .

Run.ID

Každé spuštění, prostřednictvím az acr runnebo aktivační události založené na provádění úloh vytvořených prostřednictvím az acr task create, má jedinečné ID. ID představuje spuštění, které se právě spouští.

Obvykle se používá pro jedinečné označování obrázku:

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

Run.SharedVolume

Jedinečný identifikátor sdíleného svazku, který je přístupný všemi kroky úkolu. Svazek je připojený k c:\workspace systému Windows nebo /workspace v Linuxu.

Run.Registry

Plně kvalifikovaný název serveru registru. Obvykle se používá k obecnému odkazu na registr, ve kterém se úloha spouští.

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

Run.RegistryName

Název registru kontejneru. Obvykle se používá v krocích úloh, které nevyžadují plně kvalifikovaný název serveru, například kroky, cmd které spouštějí příkazy Azure CLI v registrech.

version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName

Run.Date

Aktuální čas UTC, kdy se spuštění spustilo.

Run.Commit

Identifikátor potvrzení pro úlohu aktivovanou potvrzením do úložiště GitHub.

Run.Branch

Název větve pro úlohu aktivovanou potvrzením do úložiště GitHub.

Aliasy

V době, kdy v1.1.0služba ACR Tasks podporuje aliasy, které jsou k dispozici pro kroky úkolů při jejich spuštění. Aliasy se podobají aliasům (klávesovým zkratkám) podporovaným v Bash a některých dalších příkazových prostředích.

Pomocí aliasu můžete spustit libovolný příkaz nebo skupinu příkazů (včetně možností a názvů souborů) zadáním jednoho slova.

ACR Tasks podporuje několik předdefinovaných aliasů a také vlastní aliasy, které vytvoříte.

Předdefinované aliasy

Pro použití s proměnnými spuštění jsou k dispozici následující aliasy úloh:

Alias Spustit proměnnou
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

V krocích úkolu před alias direktivou $ , jak je znázorněno v tomto příkladu:

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

Aliasy obrázků

Každý z následujících aliasů odkazuje na stabilní image ve službě Microsoft Container Registry (MCR). Na každý z nich můžete odkazovat v cmd části souboru úkolu bez použití direktivy.

Alias Image
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

Následující příklad úlohy používá několik aliasů k vymazání značek obrázků starších než 7 dnů v úložišti samples/hello-world v registru spuštění:

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

Vlastní alias

Definujte vlastní alias v souboru YAML a použijte ho, jak je znázorněno v následujícím příkladu. Alias může obsahovat pouze alfanumerické znaky. Výchozí direktiva pro rozšíření aliasu $ je znak.

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

Pro definice vlastních aliasů můžete vytvořit odkaz na vzdálený nebo místní soubor YAML. Následující příklad odkazuje na soubor YAML ve službě Azure Blob Storage:

version: v1.1.0
alias:
  src:  # link to local or remote custom alias files
    - 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]

Další kroky

Přehled úloh s více kroky najdete v tématu Spouštění úloh s více kroky sestavení, testování a oprav v ACR Tasks.

Jednokrokové sestavení najdete v přehledu ACR Tasks.