Spouštění úloh sestavení, testování a oprav ve službě ACR Tasks
Úlohy s více kroky rozšiřují funkci ACR Tasks sestavení a nabízení s jednou imagí pomocí vícekrokových pracovních postupů založených na více kontejnerech. Pomocí úloh s více kroky můžete vytvářet a nasdílovat několik imagí v řadě nebo paralelně. Potom tyto image spusťte jako příkazy v rámci jednoho spuštění úlohy. Každý krok definuje operaci sestavení nebo vložení image kontejneru a může také definovat spuštění kontejneru. Každý krok ve vícekrokové úloze používá kontejner jako spouštěcí prostředí.
Důležité
Pokud jste už dříve vytvořili úlohy ve verzi Preview pomocí příkazu az acr build-task
, tyto úlohy bude potřeba vytvořit znovu pomocí příkazu az acr task.
Můžete například spustit úlohu s kroky, které automatizují následující logiku:
- Vytvoření image webové aplikace
- Spuštění kontejneru webové aplikace
- Vytvoření testovací image webové aplikace
- Spuštění testovacího kontejneru webové aplikace, který provádí testy na spuštěném kontejneru aplikace
- Pokud testy projdou, vytvořte balíček archivu chartu Helm.
helm upgrade
Provedení nového balíčku archivu chartu Helm
Všechny kroky se provádějí v Rámci Azure, přesměrují práci na výpočetní prostředky Azure a uvolní vás ze správy infrastruktury. Kromě registru kontejnerů Azure platíte jenom za prostředky, které používáte. Informace o cenách najdete v části Sestavení kontejneru v cenách služby Azure Container Registry.
Běžné scénáře úkolů
Úlohy s více kroky umožňují scénáře, jako je následující logika:
- Sestavte, označte a vložte jednu nebo více imagí kontejneru v řadě nebo paralelně.
- Spusťte a zachyťte výsledky testování jednotek a pokrytí kódu.
- Spouštění a zachytávání funkčních testů ACR Tasks podporuje spouštění více než jednoho kontejneru a spouštění řady požadavků mezi nimi.
- Provádění na základě úloh, včetně předběžných a po krocích sestavení image kontejneru.
- Nasaďte jeden nebo více kontejnerů s vaším oblíbeným modulem nasazení do cílového prostředí.
Definice vícekrokové úlohy
Úloha s více kroky v ACR Tasks je definována jako řada kroků v souboru YAML. Každý krok může určovat závislosti na úspěšném dokončení jednoho nebo více předchozích kroků. K dispozici jsou následující typy kroků úkolu:
build
: Vytvořte jednu nebo více imagí kontejneru pomocí známédocker build
syntaxe, v řadách nebo paralelně.push
: Nasdílení integrovaných imagí do registru kontejneru. Privátní registry, jako je Azure Container Registry, se podporují stejně jako veřejné centrum Dockeru.cmd
: Spusťte kontejner, který může fungovat jako funkce v kontextu spuštěné úlohy. Parametry můžete předat kontejneru[ENTRYPOINT]
a zadat vlastnosti, jako je env, detach a další známédocker run
parametry. Typcmd
kroku umožňuje s souběžným spuštěním kontejneru testování jednotek a funkčních testů.
Následující fragmenty kódu ukazují, jak tyto typy kroků úkolů kombinovat. Vícekrokové úlohy můžou být jednoduché jako vytvoření jedné image ze souboru Dockerfile a nahrání do registru s souborem YAML podobným:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Nebo složitější, například tato fiktivní vícekrokové definice, která zahrnuje kroky pro sestavení, testování, balíček Helm a nasazení helmu (konfigurace registru kontejneru a úložiště Helm se nezobrazují):
version: v1.1.0
steps:
- id: build-web
build: -t $Registry/hello-world:$ID .
when: ["-"]
- id: build-tests
build: -t $Registry/hello-world-tests ./funcTests
when: ["-"]
- id: push
push: ["$Registry/helloworld:$ID"]
when: ["build-web", "build-tests"]
- id: hello-world-web
cmd: $Registry/helloworld:$ID
- id: funcTests
cmd: $Registry/helloworld:$ID
env: ["host=helloworld:80"]
- cmd: $Registry/functions/helm package --app-version $ID -d ./helm ./helm/helloworld/
- cmd: $Registry/functions/helm upgrade helloworld ./helm/helloworld/ --reuse-values --set helloworld.image=$Registry/helloworld:$ID
Příklady úkolů pro soubory YAML s více kroky a soubory Dockerfile pro několik scénářů.
Spuštění ukázkové úlohy
Úlohy podporují ruční spuštění označované jako "rychlé spuštění" a automatizované spouštění při potvrzení Gitu nebo aktualizaci základní image.
Pokud chcete spustit úlohu, nejprve definujete kroky úlohy v souboru YAML a pak spusťte příkaz Azure CLI az acr run.
Tady je ukázkový příkaz Azure CLI, který spouští úlohu pomocí ukázkového souboru YAML úkolu. Jeho kroky se sestaví a pak nasdílí image. Před spuštěním příkazu aktualizujte \<acrName\>
název vlastního registru kontejneru Azure.
az acr run --registry <acrName> -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Při spuštění úlohy by měl výstup zobrazovat průběh každého kroku definovaného v souboru YAML. V následujícím výstupu se kroky zobrazí jako acb_step_0
a acb_step_1
.
az acr run --registry myregistry -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Sending context to registry: myregistry...
Queued a run with ID: yd14
Waiting for an agent...
2018/09/12 20:08:44 Using acb_vol_0467fe58-f6ab-4dbd-a022-1bb487366941 as the home volume
2018/09/12 20:08:44 Creating Docker network: acb_default_network
2018/09/12 20:08:44 Successfully set up Docker network: acb_default_network
2018/09/12 20:08:44 Setting up Docker configuration...
2018/09/12 20:08:45 Successfully set up Docker configuration
2018/09/12 20:08:45 Logging in to registry: myregistry.azurecr-test.io
2018/09/12 20:08:46 Successfully logged in
2018/09/12 20:08:46 Executing step: acb_step_0
2018/09/12 20:08:46 Obtaining source code and scanning for dependencies...
2018/09/12 20:08:47 Successfully obtained source code and scanned for dependencies
Sending build context to Docker daemon 109.6kB
Step 1/1 : FROM hello-world
---> 4ab4c602aa5e
Successfully built 4ab4c602aa5e
Successfully tagged myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:48 Executing step: acb_step_1
2018/09/12 20:08:48 Pushing image: myregistry.azurecr-test.io/hello-world:yd14, attempt 1
The push refers to repository [myregistry.azurecr-test.io/hello-world]
428c97da766c: Preparing
428c97da766c: Layer already exists
yd14: digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812 size: 524
2018/09/12 20:08:55 Successfully pushed image: myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:55 Step id: acb_step_0 marked as successful (elapsed time in seconds: 2.035049)
2018/09/12 20:08:55 Populating digests for step id: acb_step_0...
2018/09/12 20:08:57 Successfully populated digests for step id: acb_step_0
2018/09/12 20:08:57 Step id: acb_step_1 marked as successful (elapsed time in seconds: 6.832391)
The following dependencies were found:
- image:
registry: myregistry.azurecr-test.io
repository: hello-world
tag: yd14
digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812
runtime-dependency:
registry: registry.hub.docker.com
repository: library/hello-world
tag: latest
digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
git: {}
Run ID: yd14 was successful after 19s
Další informace o automatizovaných buildech na potvrzení Gitu nebo aktualizaci základní image najdete v kurzech k automatizaci sestavení imagí a sestavení aktualizace základní image.
Další kroky
Odkaz na vícekrokové úlohy a příklady najdete tady:
- Referenční informace k úkolům – typy kroků úkolu, jejich vlastnosti a použití
- Příklady úkolů – příklady
task.yaml
a soubory Dockeru pro několik scénářů, jednoduché až složité. - Úložiště cmd – kolekce kontejnerů jako příkazů pro úlohy ACR.