Kurz: Spuštění vícekrokového pracovního postupu kontejneru v cloudu při potvrzení zdrojového kódu

Kromě rychlé úlohy podporuje ACR Tasks vícekrokové pracovní postupy založené na více kontejnerech, které se můžou automaticky aktivovat při potvrzení zdrojového kódu do úložiště Git.

V tomto kurzu zjistíte, jak pomocí ukázkových souborů YAML definovat vícekrokové úlohy, které sestaví, spustí a po potvrzení zdrojového kódu nasdílí jednu nebo více imagí kontejneru do registru. Pokud chcete vytvořit úlohu, která po potvrzení kódu automatizuje jenom sestavení jedné image, projděte si kurz: Automatizace sestavení imagí kontejneru v cloudu při potvrzení zdrojového kódu. Přehled úloh ACR najdete v tématu Automatizace oprav operačního systému a architektury pomocí služby ACR Tasks.

V tomto kurzu:

  • Definování vícekrokové úlohy pomocí souboru YAML
  • Vytvoření úkolu
  • Volitelně přidejte přihlašovací údaje k úloze, abyste umožnili přístup k jinému registru.
  • Test úlohy
  • Zobrazení stavu úkolů
  • Aktivace úlohy potvrzením kódu

Tento kurz předpokládá, že jste už dokončili kroky z předchozího kurzu. Pokud jste to ještě neudělali, dokončete před pokračováním kroky v části Požadavky předchozího kurzu.

Požadavky

Získání vzorového kódu

Tento kurz předpokládá, že jste už dokončili kroky v předchozím kurzu a že jste vytvořili fork ukázkového úložiště a naklonovali ho. Pokud jste to ještě neudělali, dokončete před pokračováním kroky v části Požadavky předchozího kurzu.

Registr kontejneru

Abyste mohli dokončit tento kurz, musíte mít ve svém předplatném registr kontejneru Azure. Pokud potřebujete registr, podívejte se na předchozí kurz nebo článek Rychlý start: Vytvoření registru kontejnerů pomocí Azure CLI.

Vytvoření tokenu PAT GitHubu

K aktivaci úlohy při potvrzení do úložiště Git potřebuje služba ACR Tasks pro přístup k úložišti token PAT . Pokud token PAT ještě nemáte, vygenerujte ho na GitHubu následujícím postupem:

  1. Přejděte na stránku vytvoření tokenu PAT na GitHubu na adrese https://github.com/settings/tokens/new.

  2. Zadejte krátký popis tokenu, například „Ukázka služby ACR Tasks“.

  3. Vyberte obory pro přístup ACR k úložišti. Pokud chcete získat přístup k veřejnému úložišti jako v tomto kurzu, povolte v části úložištěrepo:status a public_repo

    Snímek obrazovky se stránkou generování tokenu PAT na GitHubu

    Poznámka

    Pokud chcete vygenerovat token PAT pro přístup k privátnímu úložišti, vyberte obor pro úplné řízení úložiště .

  4. Vyberte tlačítko Generate token (Vygenerovat token). (Můžete být vyzváni k potvrzení hesla.)

  5. Vygenerovaný token zkopírujte a uložte na bezpečné místo (tento token použijete při definici úlohy v následující části).

    Snímek obrazovky s vygenerovaným tokenem PAT na GitHubu

Příprava prostředí pro rozhraní příkazového řádku Azure

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.

  • Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Spuštění Azure CLI v kontejneru Dockeru.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

Vytvoření úkolu s více kroky

Teď, když jste dokončili kroky potřebné k tomu, aby služba ACR Tasks mohla číst stav potvrzení a vytvářet webhooky v úložišti, vytvořte vícekrokovou úlohu, která aktivuje sestavení, spuštění a nahrání image kontejneru.

Soubor YAML

Kroky pro úlohu s více kroky definujete v souboru YAML. První příklad vícekrokové úlohy pro tento kurz je definovaný v souboru taskmulti.yaml, který je v kořenovém adresáři úložiště GitHub, které jste naklonovali:

version: v1.1.0
steps:
# Build target image
- build: -t {{.Run.Registry}}/hello-world:{{.Run.ID}} -f Dockerfile .
# Run image 
- cmd: -t {{.Run.Registry}}/hello-world:{{.Run.ID}}
  id: test
  detach: true
  ports: ["8080:80"]
- cmd: docker stop test
# Push image
- push:
  - {{.Run.Registry}}/hello-world:{{.Run.ID}}

Tato úloha s více kroky provede následující:

  1. build Spustí krok k sestavení image ze souboru Dockerfile v pracovním adresáři. Image cílí na Run.Registry, registr, ve kterém je úloha spuštěná, a je označená jedinečným ID spuštění ACR Tasks.
  2. cmd Spustí krok pro spuštění image v dočasném kontejneru. Tento příklad spustí dlouhotrvající kontejner na pozadí, vrátí ID kontejneru a pak kontejner zastaví. V reálném scénáři můžete zahrnout kroky k otestováním spuštěného kontejneru, abyste se ujistili, že funguje správně.
  3. V kroku push nasdílí sestavenou image do registru spuštění.

Příkaz úkolu

Nejdřív vyplňte tyto proměnné prostředí hodnotami vhodnými pro vaše prostředí. Tento krok není nezbytně nutný, ale usnadní provádění víceřádkových příkazů Azure CLI v tomto kurzu. Pokud tyto proměnné prostředí nenaplníte, musíte ručně nahradit každou hodnotu tam, kde se v ukázkových příkazech objeví.

ACR_NAME=<registry-name>        # The name of your Azure container registry
GIT_USER=<github-username>      # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the previous section

Teď vytvořte úlohu spuštěním následujícího příkazu az acr task create :

az acr task create \
    --registry $ACR_NAME \
    --name example1 \
    --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#main \
    --file taskmulti.yaml \
    --git-access-token $GIT_PAT

Tato úloha určuje, že kdykoli je kód potvrzen do hlavní větve v úložišti určeném parametrem --context, služba ACR Tasks spustí vícekrokovou úlohu z kódu v této větvi. Postup definuje soubor YAML určený z --file kořenového adresáře úložiště.

Výstup úspěšného příkazu az acr task create je podobný následujícímu:

{
  "agentConfiguration": {
    "cpu": 2
  },
  "creationDate": "2020-11-20T03:14:31.763887+00:00",
  "credentials": null,
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myregistry/providers/Microsoft.ContainerRegistry/registries/myregistry/tasks/taskmulti",
  "location": "westus",
  "name": "example1",
  "platform": {
    "architecture": "amd64",
    "os": "linux",
    "variant": null
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myresourcegroup",
  "status": "Enabled",
  "step": {
    "baseImageDependencies": null,
    "contextAccessToken": null,
    "contextPath": "https://github.com/gituser/acr-build-helloworld-node.git#main",
    "taskFilePath": "taskmulti.yaml",
    "type": "FileTask",
    "values": [],
    "valuesFilePath": null
  },
  "tags": null,
  "timeout": 3600,
  "trigger": {
    "baseImageTrigger": {
      "baseImageTriggerType": "Runtime",
      "name": "defaultBaseimageTriggerName",
      "status": "Enabled"
    },
    "sourceTriggers": [
      {
        "name": "defaultSourceTriggerName",
        "sourceRepository": {
          "branch": "main",
          "repositoryUrl": "https://github.com/gituser/acr-build-helloworld-node.git#main",
          "sourceControlAuthProperties": null,
          "sourceControlType": "Github"
        },
        "sourceTriggerEvents": [
          "commit"
        ],
        "status": "Enabled"
      }
    ]
  },
  "type": "Microsoft.ContainerRegistry/registries/tasks"
}

Testování vícekrokového pracovního postupu

Pokud chcete otestovat vícekrokovou úlohu, aktivujte ji ručně spuštěním příkazu az acr task run :

az acr task run --registry $ACR_NAME --name example1

Příkaz az acr task run ve výchozím nastavení při spuštění příkazu streamuje výstup protokolu do vaší konzoly. Výstup ukazuje průběh jednotlivých kroků úlohy. Níže uvedený výstup je zhuštěný a zobrazuje klíčové kroky.

Queued a run with ID: cab
Waiting for an agent...
2020/11/20 00:03:31 Downloading source code...
2020/11/20 00:03:33 Finished downloading source code
2020/11/20 00:03:33 Using acb_vol_cfe6bd55-3076-4215-8091-6a81aec3d1b1 as the home volume
2020/11/20 00:03:33 Creating Docker network: acb_default_network, driver: 'bridge'
2020/11/20 00:03:34 Successfully set up Docker network: acb_default_network
2020/11/20 00:03:34 Setting up Docker configuration...
2020/11/20 00:03:34 Successfully set up Docker configuration
2020/11/20 00:03:34 Logging in to registry: myregistry.azurecr.io
2020/11/20 00:03:35 Successfully logged into myregistry.azurecr.io
2020/11/20 00:03:35 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2020/11/20 00:03:35 Scanning for dependencies...
2020/11/20 00:03:36 Successfully scanned dependencies
2020/11/20 00:03:36 Launching container with name: acb_step_0
Sending build context to Docker daemon  24.06kB
[...]
Successfully built f669bfd170af
Successfully tagged myregistry.azurecr.io/hello-world:cf19
2020/11/20 00:03:43 Successfully executed container: acb_step_0
2020/11/20 00:03:43 Executing step ID: acb_step_1. Working directory: '', Network: 'acb_default_network'
2020/11/20 00:03:43 Launching container with name: acb_step_1
279b1cb6e092b64c8517c5506fcb45494cd5a0bd10a6beca3ba97f25c5d940cd
2020/11/20 00:03:44 Successfully executed container: acb_step_1
2020/11/20 00:03:44 Executing step ID: acb_step_2. Working directory: '', Network: 'acb_default_network'
2020/11/20 00:03:44 Pushing image: myregistry.azurecr.io/hello-world:cf19, attempt 1
[...]
2020/11/20 00:03:46 Successfully pushed image: myregistry.azurecr.io/hello-world:cf19
2020/11/20 00:03:46 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 7.425169)
2020/11/20 00:03:46 Populating digests for step ID: acb_step_0...
2020/11/20 00:03:47 Successfully populated digests for step ID: acb_step_0
2020/11/20 00:03:47 Step ID: acb_step_1 marked as successful (elapsed time in seconds: 0.827129)
2020/11/20 00:03:47 Step ID: acb_step_2 marked as successful (elapsed time in seconds: 2.112113)
2020/11/20 00:03:47 The following dependencies were found:
2020/11/20 00:03:47
- image:
    registry: myregistry.azurecr.io
    repository: hello-world
    tag: cf19
    digest: sha256:6b981a8ca8596e840228c974c929db05c0727d8630465de536be74104693467a
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/node
    tag: 15-alpine
    digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
  git:
    git-head-revision: 1a3065388a0238e52865db1c8f3e97492a43444c

Run ID: cab was successful after 18s

Spuštění sestavení pomocí vložení

Když jste teď ručním spuštěním otestovali úlohu, aktivujte ji automaticky pomocí změny zdrojového kódu.

Nejdřív se ujistěte, že jste v adresáři obsahujícím místní klon úložiště:

cd acr-build-helloworld-node

Potom spuštěním následujících příkazů vytvořte, potvrďte a zapište nový soubor do forku úložiště na GitHubu:

echo "Hello World!" > hello.txt
git add hello.txt
git commit -m "Testing ACR Tasks"
git push origin main

Při spuštění příkazu git push můžete být vyzváni k zadání přihlašovacích údajů pro GitHub. Zadejte svoje uživatelské jméno pro GitHub a zadejte token PAT, který jste dříve vytvořili pro heslo.

Username for 'https://github.com': <github-username>
Password for 'https://githubuser@github.com': <personal-access-token>

Jakmile do úložiště nasdílíte potvrzení, webhook vytvořený službou ACR Tasks se aktivuje a spustí úlohu v Azure Container Registry. Zobrazte protokoly pro aktuálně spuštěnou úlohu, abyste mohli ověřit a monitorovat průběh sestavení:

az acr task logs --registry $ACR_NAME

Výstup je podobný následujícímu a zobrazuje aktuálně spuštěnou (nebo naposledy spuštěnou) úlohu:

Showing logs of the last created run.
Run ID: cad

[...]

Run ID: cad was successful after 37s

Seznam sestavení

Pokud chcete zobrazit seznam spuštění úloh, která služba ACR Tasks dokončila pro váš registr, spusťte příkaz az acr task list-runs:

az acr task list-runs --registry $ACR_NAME --output table

Výstup příkazu by měl vypadat podobně jako ten následující. Zobrazí se spuštění provedená službou ACR Tasks a ve sloupci označujícím způsob aktivace se u nejnovější úlohy zobrazí „Git Commit“:

RUN ID    TASK            PLATFORM    STATUS     TRIGGER    STARTED               DURATION
--------  --------------  ----------  ---------  ---------  --------------------  ----------
cad       example1        linux       Succeeded  Commit     2020-11-20T00:22:15Z  00:00:35
cac       taskhelloworld  linux       Succeeded  Commit     2020-11-20T00:22:15Z  00:00:22
cab       example1        linux       Succeeded  Manual     2020-11-20T00:18:36Z  00:00:47

Vytvoření úlohy s více kroky registru

Služba ACR Tasks má ve výchozím nastavení oprávnění k nabízení nebo stahování imagí z registru, ve kterém se úloha spouští. Možná budete chtít spustit vícekrokovou úlohu, která kromě spuštěného registru cílí na jeden nebo více registrů. Můžete například potřebovat vytvářet image v jednom registru a ukládat image s různými značkami do druhého registru, ke kterému přistupuje produkční systém. Tento příklad ukazuje, jak vytvořit takovou úlohu a zadat přihlašovací údaje pro jiný registr.

Pokud ještě nemáte druhý registr, vytvořte si ho pro tento příklad. Pokud potřebujete registr, podívejte se na předchozí kurz nebo článek Rychlý start: Vytvoření registru kontejnerů pomocí Azure CLI.

K vytvoření úlohy potřebujete název přihlašovacího serveru registru, který je ve formátu mycontainerregistrydate.azurecr.io (všechna malá písmena). V tomto příkladu použijete druhý registr k ukládání obrázků označených datem sestavení.

Soubor YAML

Druhý příklad vícekrokové úlohy pro tento kurz je definován v souboru taskmulti-multiregistry.yaml, který je v kořenovém adresáři úložiště GitHub, které jste naklonovali:

version: v1.1.0
steps:
# Build target images
- build: -t {{.Run.Registry}}/hello-world:{{.Run.ID}} -f Dockerfile .
- build: -t {{.Values.regDate}}/hello-world:{{.Run.Date}} -f Dockerfile .
# Run image 
- cmd: -t {{.Run.Registry}}/hello-world:{{.Run.ID}}
  id: test
  detach: true
  ports: ["8080:80"]
- cmd: docker stop test
# Push images
- push:
  - {{.Run.Registry}}/hello-world:{{.Run.ID}}
  - {{.Values.regDate}}/hello-world:{{.Run.Date}}

Tato úloha s více kroky provede následující:

  1. Spustí dva build kroky k sestavení imagí ze souboru Dockerfile v pracovním adresáři:
    • První cílí na Run.Registry, registr, ve kterém je úloha spuštěna, a je označený ID spuštění ACR Tasks.
    • Druhý cílí na registr určený hodnotou regDate, kterou nastavíte při vytváření úlohy (nebo poskytnete prostřednictvím externího values.yaml souboru předaného do az acr task create). Tento obrázek je označený datem spuštění.
  2. cmd Spustí krok pro spuštění jednoho ze sestavených kontejnerů. Tento příklad spustí dlouhotrvající kontejner na pozadí a vrátí ID kontejneru a pak kontejner zastaví. V reálném scénáři můžete otestovat spuštěný kontejner, abyste měli jistotu, že běží správně.
  3. V kroku push nasdílí vytvořené image, první do registru spuštění a druhou do registru identifikovaného nástrojem regDate.

Příkaz úkolu

Pomocí dříve definovaných proměnných prostředí vytvořte úlohu spuštěním následujícího příkazu az acr task create . Nahraďte název registru jako mycontainerregistrydate.

az acr task create \
    --registry $ACR_NAME \
    --name example2 \
    --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#main \
    --file taskmulti-multiregistry.yaml \
    --git-access-token $GIT_PAT \
    --set regDate=mycontainerregistrydate.azurecr.io

Přidání přihlašovacích údajů k úkolu

Pokud chcete odeslat image do registru identifikovaného hodnotou regDate, pomocí příkazu az acr task credential add přidejte přihlašovací údaje pro tento registr do úlohy.

V tomto příkladu doporučujeme vytvořit instanční objekt s přístupem k registru s oborem na roli AcrPush , aby mělo oprávnění k nabízení imagí. K vytvoření instančního objektu použijte následující skript:

#!/bin/bash
# This script requires Azure CLI version 2.25.0 or later. Check version with `az --version`.

# Modify for your environment.
# ACR_NAME: The name of your Azure Container Registry
# SERVICE_PRINCIPAL_NAME: Must be unique within your AD tenant
ACR_NAME=$containerRegistry
SERVICE_PRINCIPAL_NAME=$servicePrincipal

# Obtain the full registry ID
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query "id" --output tsv)
# echo $registryId

# Create the service principal with rights scoped to the registry.
# Default permissions are for docker pull access. Modify the '--role'
# argument value as desired:
# acrpull:     pull only
# acrpush:     push and pull
# owner:       push, pull, and assign roles
PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv)
USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)

# Output the service principal's credentials; use these in your services and
# applications to authenticate to the container registry.
echo "Service principal ID: $USER_NAME"
echo "Service principal password: $PASSWORD"

V následujícím az acr task credential add příkazu předejte ID a heslo aplikace instančního objektu. Nezapomeňte aktualizovat název přihlašovacího serveru mycontainerregistrydate názvem vašeho druhého registru:

az acr task credential add --name example2 \
    --registry $ACR_NAME \
    --login-server mycontainerregistrydate.azurecr.io \
    --username <service-principal-application-id> \
    --password <service-principal-password>

Rozhraní příkazového řádku vrátí název přihlašovacího serveru registru, který jste přidali.

Testování vícekrokového pracovního postupu

Stejně jako v předchozím příkladu můžete otestovat vícekrokovou úlohu ruční aktivací spuštěním příkazu az acr task run . Pokud chcete aktivovat úlohu s potvrzením do úložiště Git, přečtěte si část Aktivace sestavení s potvrzením.

az acr task run --registry $ACR_NAME --name example2

Příkaz az acr task run ve výchozím nastavení při spuštění příkazu streamuje výstup protokolu do vaší konzoly. Stejně jako předtím se ve výstupu zobrazuje průběh spuštění jednotlivých kroků úlohy. Výstup je zhuštěný, aby se zobrazily klíčové kroky.

Výstup:

Queued a run with ID: cf1g
Waiting for an agent...
2020/11/20 04:33:39 Downloading source code...
2020/11/20 04:33:41 Finished downloading source code
2020/11/20 04:33:42 Using acb_vol_4569b017-29fe-42bd-83b2-25c45a8ac807 as the home volume
2020/11/20 04:33:42 Creating Docker network: acb_default_network, driver: 'bridge'
2020/11/20 04:33:43 Successfully set up Docker network: acb_default_network
2020/11/20 04:33:43 Setting up Docker configuration...
2020/11/20 04:33:44 Successfully set up Docker configuration
2020/11/20 04:33:44 Logging in to registry: mycontainerregistry.azurecr.io
2020/11/20 04:33:45 Successfully logged into mycontainerregistry.azurecr.io
2020/11/20 04:33:45 Logging in to registry: mycontainerregistrydate.azurecr.io
2020/11/20 04:33:47 Successfully logged into mycontainerregistrydate.azurecr.io
2020/11/20 04:33:47 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2020/11/20 04:33:47 Scanning for dependencies...
2020/11/20 04:33:47 Successfully scanned dependencies
2020/11/20 04:33:47 Launching container with name: acb_step_0
Sending build context to Docker daemon  25.09kB
[...]
Successfully tagged mycontainerregistry.azurecr.io/hello-world:cf1g
2020/11/20 04:33:55 Successfully executed container: acb_step_0
2020/11/20 04:33:55 Executing step ID: acb_step_1. Working directory: '', Network: 'acb_default_network'
2020/11/20 04:33:55 Scanning for dependencies...
2020/11/20 04:33:56 Successfully scanned dependencies
2020/11/20 04:33:56 Launching container with name: acb_step_1
Sending build context to Docker daemon  25.09kB
[...]
Successfully tagged mycontainerregistrydate.azurecr.io/hello-world:20190503-043342z
2020/11/20 04:33:57 Successfully executed container: acb_step_1
2020/11/20 04:33:57 Executing step ID: acb_step_2. Working directory: '', Network: 'acb_default_network'
2020/11/20 04:33:57 Launching container with name: acb_step_2
721437ff674051b6be63cbcd2fa8eb085eacbf38d7d632f1a079320133182101
2020/11/20 04:33:58 Successfully executed container: acb_step_2
2020/11/20 04:33:58 Executing step ID: acb_step_3. Working directory: '', Network: 'acb_default_network'
2020/11/20 04:33:58 Launching container with name: acb_step_3
test
2020/11/20 04:34:09 Successfully executed container: acb_step_3
2020/11/20 04:34:09 Executing step ID: acb_step_4. Working directory: '', Network: 'acb_default_network'
2020/11/20 04:34:09 Pushing image: mycontainerregistry.azurecr.io/hello-world:cf1g, attempt 1
The push refers to repository [mycontainerregistry.azurecr.io/hello-world]
[...]
2020/11/20 04:34:12 Successfully pushed image: mycontainerregistry.azurecr.io/hello-world:cf1g
2020/11/20 04:34:12 Pushing image: mycontainerregistrydate.azurecr.io/hello-world:20190503-043342z, attempt 1
The push refers to repository [mycontainerregistrydate.azurecr.io/hello-world]
[...]
2020/11/20 04:34:19 Successfully pushed image: mycontainerregistrydate.azurecr.io/hello-world:20190503-043342z
2020/11/20 04:34:19 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 8.125744)
2020/11/20 04:34:19 Populating digests for step ID: acb_step_0...
2020/11/20 04:34:21 Successfully populated digests for step ID: acb_step_0
2020/11/20 04:34:21 Step ID: acb_step_1 marked as successful (elapsed time in seconds: 2.009281)
2020/11/20 04:34:21 Populating digests for step ID: acb_step_1...
2020/11/20 04:34:23 Successfully populated digests for step ID: acb_step_1
2020/11/20 04:34:23 Step ID: acb_step_2 marked as successful (elapsed time in seconds: 0.795440)
2020/11/20 04:34:23 Step ID: acb_step_3 marked as successful (elapsed time in seconds: 11.446775)
2020/11/20 04:34:23 Step ID: acb_step_4 marked as successful (elapsed time in seconds: 9.734973)
2020/11/20 04:34:23 The following dependencies were found:
2020/11/20 04:34:23
- image:
    registry: mycontainerregistry.azurecr.io
    repository: hello-world
    tag: cf1g
    digest: sha256:75354e9edb995e8661438bad9913deed87a185fddd0193811f916d684b71a5d2
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/node
    tag: 15-alpine
    digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
  git:
    git-head-revision: 9d9023473c46a5e2c315681b11eb4552ef0faccc
- image:
    registry: mycontainerregistrydate.azurecr.io
    repository: hello-world
    tag: 20190503-043342z
    digest: sha256:75354e9edb995e8661438bad9913deed87a185fddd0193811f916d684b71a5d2
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/node
    tag: 15-alpine
    digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
  git:
    git-head-revision: 9d9023473c46a5e2c315681b11eb4552ef0faccc

Run ID: cf1g was successful after 46s

Další kroky

V tomto kurzu jste se naučili vytvářet vícekrokové úlohy založené na více kontejnerech, které se automaticky aktivují při potvrzení zdrojového kódu do úložiště Git. Pokročilé funkce vícekrokových úloh, včetně paralelního a závislého provádění kroků, najdete v referenčních informacích k YAML pro úlohy ACR. Přejděte k dalšímu kurzu, ve kterém se naučíte vytvářet úlohy, které aktivují sestavení při aktualizaci základní image kontejneru.