Sdílet prostřednictvím


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:

  1. Vytvoření image webové aplikace
  2. Spuštění kontejneru webové aplikace
  3. Vytvoření testovací image webové aplikace
  4. Spuštění testovacího kontejneru webové aplikace, který provádí testy na spuštěném kontejneru aplikace
  5. Pokud testy projdou, vytvořte balíček archivu chartu Helm.
  6. 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. Typ cmd 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.