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ě .yaml
toho, ž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.
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 , detach a 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 build spouš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 build souboru . 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í imagemyimage: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 sid
ID1 aid
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.0
YAML 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 run
nebo 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.0
služ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.