Zelfstudie: Een containerwerkstroom met meerdere stappen in de cloud uitvoeren bij het doorvoeren van broncode

Naast een snelle taak bieden ACR-taken ondersteuning voor werkstromen op basis van meerdere-stappen en meerdere containers die automatisch kunnen worden geactiveerd wanneer u broncode doorvoert in een Git-opslagplaats.

In deze zelfstudie gebruikt u YAML-voorbeeldbestanden om taken met meerdere stappen te definiëren voor het maken, uitvoeren en pushen van een of meer containerinstallatiekopieën naar een register bij het doorvoeren van broncode. Als u een taak wilt maken waarmee slechts één build van een installatiekopie bij het doorvoeren van code wordt geautomatiseerd, raadpleegt u Zelfstudie: Builds van containerinstallatiekopieën in de cloud automatiseren bij het doorvoeren van broncode. Zie Besturingssysteem- en frameworkpatching automatiseren met ACR-taken voor een overzicht van ACR-taken.

In deze zelfstudie:

  • Een taak met meerdere stappen definiëren met behulp van een YAML-bestand
  • Een taak maken
  • Referenties aan de taak toevoegen om toegang tot een ander register mogelijk te maken (optioneel)
  • De taak testen
  • Taakstatus weergeven
  • De taak activeren met een code-doorvoer

In deze zelfstudie wordt ervan uitgegaan dat u de stappen in de vorige zelfstudie hebt voltooid. Als u dit nog niet hebt gedaan, voert u de stappen in de sectie Vereisten van de vorige zelfstudie uit voordat u doorgaat.

Vereisten

Voorbeeldcode ophalen

In deze zelfstudie wordt ervan uitgegaan dat u de stappen in de vorige zelfstudie hebt voltooid en dat u de voorbeeldopslagplaats hebt gesplitst en gekloond. Als u dit nog niet hebt gedaan, voert u de stappen in de sectie Vereisten van de vorige zelfstudie uit voordat u doorgaat.

Containerregister

U moet een Azure-containerregister in uw Azure-abonnement hebben om deze zelfstudie te voltooien. Als u een register nodig hebt, zie dan de vorige zelfstudie of Snelstartgids: Een containerregister maken met de Azure CLI.

Een persoonlijk toegangstoken van GitHub maken

Als u een taak wilt activeren voor een doorvoer naar een Git-opslagplaats, heeft ACR Tasks een persoonlijk toegangstoken (PAT) nodig om toegang te krijgen tot de opslagplaats. Als u nog geen PAT hebt, voert u de volgende stappen uit om er een in GitHub te genereren:

  1. Navigeer naar de pagina PAT maken op GitHub op https://github.com/settings/tokens/new

  2. Geef een korte beschrijving voor het token op, bijvoorbeeld 'Demo ACR Tasks'

  3. Selecteer bereiken voor ACR om toegang te krijgen tot de opslagplaats. Voor toegang tot een openbare opslagplaats zoals in deze zelfstudie, schakelt u onder repo de opties repo:status and public_repo in

    Schermafbeelding van de pagina Persoonlijk toegangstoken genereren in GitHub

    Notitie

    Als u een PAT wilt genereren om toegang te krijgen tot een privéopslagplaats, selecteert u het bereik voor volledige controle van de opslagplaats.

  4. Selecteer de knop Token genereren (u wordt mogelijk gevraagd om uw wachtwoord te bevestigen)

  5. Kopieer en bewaar het gegenereerde token in een beveiligde locatie (u gebruikt dit token bij het definiëren van een taak in de volgende sectie)

    Schermafbeelding van het gegeneerde persoonlijke toegangstoken in GitHub

De omgeving voorbereiden op de Azure CLI

Een taak met meerdere stappen maken

Nu u de stappen hebt voltooid die nodig zijn om ACR-taken in te schakelen om toewijzingsstatus te lezen en webhooks te maken in een opslagplaats, kunt u een taak met meerdere stappen maken voor het maken, uitvoeren en pushen van een containerinstallatiekopie.

YAML-bestand

U definieert de stappen voor een taak met meerdere stappen in een YAML-bestand. Het eerste voorbeeld van een taak met meerdere stappen in deze zelfstudie is gedefinieerd in het bestand taskmulti.yaml, dat zich bevindt in de hoofdmap van de GitHub-opslagplaats die u hebt gekloond:

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}}

Deze taak met meerdere stappen doet het volgende:

  1. Er wordt een build-stap uitgevoerd om een installatiekopie te maken op basis van de Dockerfile in de werkmap. De installatiekopie wordt uitgevoerd op het doelregister, Run.Registry, en wordt getagd met een unieke run-id voor ACR-taken.
  2. Er wordt een cmd-stap uitgevoerd om de installatiekopie uit te voeren in een tijdelijke container. In dit voorbeeld wordt een langlopende container op de achtergrond gestart en wordt de container-id geretourneerd, waarna de container wordt gestopt. In een praktijkscenario kunt u stappen voor het testen van de actieve container opnemen om te controleren of deze correct wordt uitgevoerd.
  3. In een push-stap pusht u de build van de installatiekopie naar het uitvoeringsregister.

Taakopdracht

Vul eerst deze shell-omgevingsvariabelen met waarden die geschikt zijn voor uw omgeving. Hoewel deze stap strikt genomen niet vereist is, vereenvoudigt u hiermee de uitvoering van meerregelige Azure CLI-opdrachten in deze zelfstudie. Als u deze omgevingsvariabelen niet invult, moet u elke bijbehorende waarde handmatig vervangen wanneer deze wordt weergegeven in de voorbeeldopdrachten.

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

Maak de taak nu door de volgende az acr task create-opdracht uit te voeren:

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

Deze taak geeft aan dat elke keer dat code wordt doorgevoerd naar de hoofdvertakking in de opslagplaats zoals is opgegeven door --context, ACR-taken dan de taak met meerdere stappen van de code in die vertakking uitvoert. De stappen worden gedefinieerd in het YAML-bestand dat is opgegeven door --file vanuit de hoofdmap van de opslagplaats.

De uitvoer van een geslaagde az acr task create-opdracht is vergelijkbaar met het volgende:

{
  "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"
}

De werkstroom met meerdere stappen testen

Als u de taak met meerdere stappen wilt testen, activeert u deze handmatig door de opdracht az acr task run uit te voeren:

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

Met de opdracht az acr task run streamt u standaard de logboekuitvoer naar de console wanneer u de opdracht uitvoert. In de uitvoer ziet u de voortgang van het uitvoeren van elke stap van de taak. De onderstaande uitvoer is ingekort om de belangrijkste stappen weer te geven.

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

Een build activeren met een doorvoer

Nu u de taak hebt getest door deze handmatig uit te voeren, gaat u deze automatisch activeren met een wijziging in de broncode.

Controleer eerst of u zich bevindt in de map waarin de lokale kloon van de opslagplaats staat:

cd acr-build-helloworld-node

Voer vervolgens de volgende opdrachten uit om een nieuw bestand te maken, door te voeren en pushen naar uw fork van de opslagplaats op GitHub:

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

U wordt mogelijk gevraagd om uw GitHub-referenties op te geven wanneer u de opdracht git push uitvoert. Geef uw GitHub-gebruikersnaam op en voer het persoonlijke toegangstoken (PAT) in dat u eerder hebt gemaakt voor het wachtwoord.

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

Zodra u een doorvoer naar de opslagplaats hebt gepusht, wordt de webhook die is gemaakt door ACR-taken geactiveerd en wordt de taak in Azure Container Registry in gang gezet. Geef de logboeken weer voor de taak die momenteel wordt uitgevoerd om de voortgang van de build te verifiëren en controleren:

az acr task logs --registry $ACR_NAME

De uitvoer is vergelijkbaar met de volgende, waarin de op dit moment uitgevoerde (of de laatst uitgevoerde) taak wordt getoond:

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

[...]

Run ID: cad was successful after 37s

Builds weergeven

Voor een overzicht van de taken die ACR Tasks heeft voltooid voor het register, voert u de opdracht az acr task-list-runs uit:

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

De uitvoer van de opdracht ziet er ongeveer als volgt uit. De runs die ACR Tasks heeft uitgevoerd, worden weergegeven. 'Git Commit' wordt weergegeven in de kolom TRIGGER voor de meest recente taak:

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

Een taak met meerdere stappen en registers maken

ACR-taken zijn standaard gemachtigd om installatiekopieën te verzenden naar of op te halen uit het register waarin de taak wordt uitgevoerd (push/pull). U kunt ook een taak met meerdere stappen uitvoeren op een of meer andere registers dan het uitvoeringsregister. U wilt bijvoorbeeld een taak om builds van installatiekopieën te maken in een bepaald register en installatiekopieën met andere tags op te slaan in een tweede register dat wordt gebruikt in een productiesysteem. Dit voorbeeld laat zien hoe u een dergelijke taak maakt en referenties voor een ander register opgeeft.

Als u nog geen tweede register hebt, maakt u er een voor dit voorbeeld. Als u een register nodig hebt, zie dan de vorige zelfstudie of Snelstartgids: Een containerregister maken met de Azure CLI.

Als u de taak wilt maken, hebt u de naam van de aanmeldingsserver van het register nodig in de vorm mycontainerregistrydate.azurecr.io (allemaal kleine letters). In dit voorbeeld gebruikt u het tweede register voor het opslaan van installatiekopieën, getagd op builddatum.

YAML-bestand

Het tweede voorbeeld van een taak met meerdere stappen in deze zelfstudie is gedefinieerd in het bestand taskmulti-multiregistry.yaml, dat zich bevindt in de hoofdmap van de GitHub-opslagplaats die u hebt gekloond:

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}}

Deze taak met meerdere stappen doet het volgende:

  1. Er worden twee build-stappen uitgevoerd om installatiekopieën te maken op basis van de Dockerfile in de werkmap:
    • De eerste stap wordt uitgevoerd op het doelregister, Run.Registry, en wordt getagd met de run-id voor ACR-taken.
    • De tweede stap wordt uitgevoerd op het register regDate dat u instelt bij het maken van de taak (of opgeeft via een extern bestand, values.yaml, dat wordt doorgegeven aan az acr task create). Deze installatiekopie wordt getagd met de uitvoeringsdatum.
  2. Hiermee wordt een cmd-stap uitgevoerd om een van de gemaakte containers uit te voeren. In dit voorbeeld wordt een langlopende container op de achtergrond gestart en wordt de container-id geretourneerd, waarna de container wordt gestopt. In een praktijkscenario kunt u een actieve container testen om te controleren of deze correct wordt uitgevoerd.
  3. Met een push-stap worden de twee gemaakte installatiekopieën gepusht: de eerste naar het uitvoeringsregister, de tweede naar het register dat is opgegeven met regDate.

Taakopdracht

Maak de taak met behulp van de eerder gedefinieerde shell-omgevingsvariabelen door de volgende az acr task create-opdracht uit te voeren. Vervang mycontainerregistrydate door de naam van uw register.

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

Taakreferentie toevoegen

Als u installatiekopieën wilt pushen naar het register dat wordt aangeduid met de waarde van regDate, gebruikt u de opdracht az acr task credential add om aanmeldingsreferenties voor dat register toe te voegen aan de taak.

Voor dit voorbeeld wordt u aangeraden een service-principal te maken met toegang tot het register binnen het bereik van de rol AcrPush, zodat er installatiekopieën mogen worden gepusht. Gebruik het volgende script om de service-principal te maken:

#!/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"

Geef de toepassings-id en het wachtwoord van de service-principal op in de volgende az acr task credential add-opdracht. Zorg ervoor dat u de naam van de aanmeldingsserver mycontainerregistrydate bijwerkt met de naam van het tweede register:

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

De CLI retourneert de naam van de door u aanmeldingsserver van het register.

De werkstroom met meerdere stappen testen

Als u de taak met meerdere stappen wilt testen, activeert u deze handmatig door de opdracht az acr task run uit te voeren, net zoals in het vorige voorbeeld. Als u de taak met een doorvoer naar de Git-opslagplaats wilt activeren, raadpleegt u de sectie Een build activeren met een doorvoer.

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

Met de opdracht az acr task run streamt u standaard de logboekuitvoer naar de console wanneer u de opdracht uitvoert. In de uitvoer ziet u, net als voorheen, de voortgang van het uitvoeren van elke stap van de taak. De uitvoer is ingekort om de belangrijkste stappen weer te geven.

Uitvoer:

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

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u taken met meerdere stappen en containers maakt die automatisch worden geactiveerd wanneer u broncode naar een Git-opslagplaats doorvoert. Zie de YAML-referentie voor ACR-taken voor geavanceerde functies van taken met meerdere stappen, waaronder parallelle en afhankelijke uitvoering van stappen. Ga verder naar de volgende zelfstudie voor informatie over het maken van taken die builds activeren wanneer de basisinstallatiekopie van de containerinstallatiekopie wordt bijgewerkt.