Kurz: Spuštění vícekrokového pracovního postupu kontejneru v cloudu při potvrzení zdrojového kódu
Kromě rychlé úlohy služba ACR Tasks podporuje 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 se dozvíte, jak pomocí ukázkových souborů YAML definovat úlohy s více kroky, které sestavují, spouštějí a nasdílí jednu nebo více imagí kontejneru do registru při potvrzení zdrojového kódu. Pokud chcete vytvořit úlohu, která automatizuje pouze jeden sestavení image při potvrzení kódu, přečtě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í ACR Tasks.
V tomto kurzu:
- Definování vícekrokové úlohy pomocí souboru YAML
- Vytvořit úkol
- Volitelně můžete k úloze přidat přihlašovací údaje, které umožní 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
Aby služba ACR Tasks aktivovala úlohu při potvrzení do úložiště Git, potřebuje pro přístup k úložišti osobní přístupový token (PAT ). Pokud ještě nemáte pat, vygenerujte ho pomocí následujícího postupu na GitHubu:
Přejděte na stránku vytvoření tokenu PAT na GitHubu na adrese https://github.com/settings/tokens/new.
Zadejte krátký popis tokenu, například „Ukázka služby ACR Tasks“.
Vyberte obory pro ACR pro přístup k úložišti. Pokud chcete získat přístup k veřejnému úložišti jako v tomto kurzu, v části úložiště povolte úložiště:status a public_repo
Poznámka:
Pokud chcete vygenerovat pat pro přístup k privátnímu úložišti, vyberte obor pro úplné řízení úložiště.
Vyberte tlačítko Generate token (Vygenerovat token). (Můžete být vyzváni k potvrzení hesla.)
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).
Příprava prostředí pro rozhraní příkazového řádku Azure
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
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 Jak spustit 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í vícekrokové úlohy
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 úlohu s více kroky, která aktivuje sestavení, spuštění a nasdílení image kontejneru.
YAML file
Kroky pro vícekrokový úkol definujete v souboru YAML. První příklad vícekrokové úlohy pro tento kurz je definován 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}}
Tento vícekrokový úkol provede následující akce:
build
Spustí krok pro sestavení image ze souboru Dockerfile v pracovním adresáři. Image cílí naRun.Registry
registr, ve kterém je úloha spuštěna, a je označena jedinečným ID spuštění ACR Tasks.cmd
Spustí krok pro spuštění image v dočasném kontejneru. Tento příklad spustí dlouhotrvající kontejner na pozadí a vrátí ID kontejneru a pak kontejner zastaví. Ve skutečném scénáři můžete zahrnout kroky k otestování spuštěného kontejneru, aby se zajistilo, že běží správně.push
V kroku nasdílí image sestavenou 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 každou hodnotu ručně nahradit všude tam, kde se zobrazí v ukázkových příkazech.
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 se kód potvrdí do hlavní větve v úložišti určeném službou --context
ACR Tasks, spustí z kódu v této větvi vícekrokový úkol. Soubor YAML určený --file
z kořenového adresáře úložiště definuje kroky.
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ícekrokový úkol, spusťte ho 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 spuštění jednotlivých kroků úlohy. Níže uvedený výstup je zhuštěný, aby se zobrazily 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>
Po nasdílení potvrzení do úložiště se webhook vytvořený službou ACR Tasks aktivuje a spustí úlohu ve službě 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í vícekrokové úlohy s více registry
Ve výchozím nastavení má služba ACR Tasks oprávnění k zápisu nebo načítání imagí z registru, ve kterém se úloha spouští. Možná budete chtít spustit úlohu s více kroky, která kromě registru spuštění cílí na jeden nebo více registrů. Můžete například potřebovat vytvořit 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 takovou úlohu vytvořit 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, což je formulář mycontainerregistrydate.azurecr.io (všechna malá písmena). V tomto příkladu použijete druhý registr k ukládání imagí označených datem sestavení.
YAML file
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}}
Tento vícekrokový úkol provede následující akce:
- Spustí dva
build
kroky pro 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 identifikovaný hodnotou
regDate
, kterou jste nastavili při vytváření úkolu (nebo poskytnout prostřednictvím externíhovalues.yaml
souboru předanéhoaz acr task create
). Tento obrázek je označen datem spuštění.
- První cílí na
cmd
Spustí krok pro spuštění jednoho z 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ě.push
V kroku odešle image, které byly vytvořeny, první do registru spuštění, druhý do registru identifikovanéhoregDate
.
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 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ů úkolu
Pokud chcete odeslat image do registru identifikované hodnotou regDate
, použijte příkaz az acr task credential add k přidání přihlašovacích údajů pro tento registr do úlohy.
V tomto příkladu doporučujeme vytvořit instanční objekt s přístupem k registru omezenému na roli AcrPush , aby mělo oprávnění k nasdílení 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, pokud chcete otestovat vícekrokový úkol, spusťte ho ručně spuštěním příkazu az acr task run . Pokud chcete úlohu aktivovat 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 ukazuje výstup průběh spuštění jednotlivých kroků úkolu. Výstup je zhuštěný tak, aby zobrazoval 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 ACR Tasks YAML. 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.