Tutorial: Menjalankan alur kerja kontainer multi-langkah di cloud saat Anda menerapkan kode sumber

Selain tugas cepat, ACR Tasks mendukung alur kerja multi-langkah berbasis multi-kontainer yang dapat memicu secara otomatis saat Anda menerapkan kode sumber ke repositori Git.

Dalam tutorial ini, Anda mempelajari cara menggunakan contoh file YAML untuk menentukan tugas multi-langkah yang menyusun, menjalankan, dan mendorong satu atau beberapa gambar kontainer ke registri ketika Anda menerapkan kode sumber. Untuk membuat tugas yang hanya mengotomatiskan satu build gambar pada penerapan kode, lihat Tutorial: Mengotomatiskan build gambar kontainer di cloud saat Anda menerapkan kode sumber. Untuk gambaran umum ACR Tasks, lihat Mengotomatiskan OS dan penambalan kerangka kerja dengan ACR Tasks,

Dalam tutorial ini:

  • Menentukan tugas multi-langkah menggunakan file YAML
  • Buat tugas
  • Secara opsional menambahkan kredensial ke tugas untuk mengaktifkan akses ke registri lain
  • Uji tugas
  • Tampilkan status tugas
  • Picu tugas dengan penerapan kode

Tutorial ini mengasumsikan Anda telah menyelesaikan langkah-langkah dalam tutorial sebelumnya. Jika Anda belum melakukannya, selesaikan langkah-langkah di bagian Prasyarat dari tutorial sebelumnya sebelum melanjutkan.

Prasyarat

Mendapatkan contoh kode

Tutorial ini mengasumsikan Anda telah menyelesaikan langkah-langkah dalam tutorial sebelumnya dan telah melakukan fork dan klon contoh repositori. Jika Anda belum melakukannya, selesaikan langkah-langkah di bagian Prasyarat dari tutorial sebelumnya sebelum melanjutkan.

Registri kontainer

Anda harus memiliki registri kontainer Azure di langganan Azure Anda untuk menyelesaikan tutorial ini. Jika Anda memerlukan registri, lihat tutorial sebelumnya, atau Mulai Cepat: Membuat registri kontainer menggunakan Azure CLI.

Membuat token akses pribadi GitHub

Untuk memicu tugas pada penerapan ke repositori Git, Tugas ACR memerlukan token akses pribadi (PAT) untuk mengakses repositori. Jika Anda belum memiliki PAT, ikuti langkah-langkah berikut untuk membuatnya di GitHub:

  1. Buka halaman pembuatan PAT di GitHub di https://github.com/settings/tokens/new

  2. Masukkan deskripsi singkat untuk token, misalnya, "Demo Tugas ACR"

  3. Pilih cakupan ACR untuk mengakses repositori. Untuk mengakses repositori publik seperti dalam tutorial ini, di bagian repositori, aktifkan repo:status dan public_repo

    Cuplikan layar halaman pembuatan Token Akses Pribadi di GitHub

    Catatan

    Untuk membuat PAT untuk mengakses repositori privat, pilih cakupan untuk kontrol repositori penuh.

  4. Pilih tombol Buat token (Anda mungkin diminta untuk mengonfirmasi kata sandi)

  5. Salin dan simpan token yang dihasilkan di lokasi yang aman (Anda menggunakan token ini saat menentukan tugas di bagian berikut)

    Cuplikan layar Token Akses Pribadi yang dihasilkan di GitHub

Persiapkan lingkungan Anda untuk Azure CLI

Membuat tugas multi-langkah

Sekarang setelah Anda menyelesaikan langkah-langkah yang diperlukan untuk mengaktifkan ACR Tasks untuk membaca status penerapan dan membuat webhook di repositori, membuat tugas multi-langkah yang memicu pembangunan, menjalankan, dan mendorong gambar kontainer.

File YAML

Anda menentukan langkah-langkah untuk tugas multi-langkah dalam file YAML. Contoh pertama tugas multi-langkah untuk tutorial ini didefinisikan dalam file taskmulti.yaml, yang berada di akar repo GitHub yang Anda kloning:

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

Tugas multi-langkah ini melakukan hal berikut:

  1. Menjalankan langkah build untuk menyusun gambar dari Dockerfile di direktori kerja. Gambar menargetkan Run.Registry, registri tempat tugas dijalankan, dan ditandai dengan ID eksekusi ACR Tasks yang unik.
  2. Menjalankan cmd langkah untuk menjalankan gambar dalam kontainer sementara. Contoh ini memulai kontainer yang sudah berjalan lama di latar belakang dan mengembalikan ID kontainer, lalu menghentikan kontainer. Dalam skenario dunia nyata, Anda mungkin menyertakan langkah-langkah untuk menguji kontainer yang sedang berjalan untuk memastikannya berjalan dengan benar.
  3. Dalam langkah push, mendorong gambar yang disusun untuk menjalankan registri.

Perintah tugas

Pertama, isi variabel lingkungan shell ini dengan nilai yang sesuai untuk lingkungan Anda. Langkah ini tidak benar-benar diperlukan, tetapi membuat menjalankan perintah CLI Azure multibaris dalam tutorial ini sedikit lebih mudah. Jika tidak mengisi variabel lingkungan ini, Anda harus mengganti setiap nilai secara manual di mana pun variabel tersebut muncul dalam perintah contoh.

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

Sekarang, buat tugas dengan menjalankan perintah pembuatan tugas az acr berikut:

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

Tugas ini menentukan bahwa setiap kali kode berkomitmen pada cabang utama dalam repositori yang ditentukan oleh --context, ACR Tasks akan menjalankan tugas multi-langkah dari kode di cabang tersebut. File YAML yang ditentukan oleh --file dari akar repositori mendefinisikan langkah-langkah.

Output dari perintah pembuatan tugas az acr yang berhasil serupa dengan yang berikut ini:

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

Menguji alur kerja multi-langkah

Untuk menguji tugas multi-langkah, picu secara manual dengan menjalankan perintah az acr task run:

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

Secara default, perintah az acr task run mengalirkan output log ke konsol Anda saat Anda menjalankan perintah. Output menunjukkan kemajuan menjalankan setiap langkah tugas. Output dikondensasikan untuk menunjukkan langkah-langkah kunci.

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

Memicu build dengan penerapan

Sekarang setelah Anda menguji tugas dengan menjalankannya secara manual, picu secara otomatis dengan perubahan kode sumber.

Pertama, pastikan Anda berada di direktori yang berisi klon lokal repositori:

cd acr-build-helloworld-node

Selanjutnya, jalankan perintah berikut untuk membuat, menerapkan, dan mendorong file baru ke fork repo Anda di GitHub:

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

Anda dapat diminta untuk memberikan kredensial GitHub Anda saat menjalankan perintah git push. Berikan nama pengguna GitHub Anda, dan masukkan token akses pribadi (PAT) yang Anda buat sebelumnya untuk kata sandi.

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

Setelah Anda mendorong komit ke repositori Anda, webhook yang dibuat oleh ACR Tasks menembak dan memulai tugas di Azure Container Registry. Tampilkan log untuk tugas yang sedang berjalan untuk memverifikasi dan memantau kemajuan build:

az acr task logs --registry $ACR_NAME

Output mirip dengan yang berikut ini, memperlihatkan tugas yang saat ini dijalankan (atau yang terakhir dijalankan):

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

[...]

Run ID: cad was successful after 37s

Mencantumkan build

Untuk melihat daftar tugas yang dijalankan agar ACR Tasks telah selesai untuk registri Anda, jalankan perintah az acr task list-runs:

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

Output dari perintah akan tampak serupa dengan yang berikut ini. Pengoperasian yang dijalankan ACR Tasks ditampilkan, dan "Git Commit" muncul di kolom TRIGGER untuk tugas terbaru:

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

Membuat tugas multi-langkah multi-registri

ACR Tasks dsecara default memiliki izin untuk mendorong atau menarik gambar dari registri tempat tugas berjalan. Anda mungkin ingin menjalankan tugas multi-langkah yang menargetkan satu atau beberapa registri selain menjalankan registri. Misalnya, Anda mungkin perlu membuat gambar dalam satu registri, dan menyimpan gambar dengan tag yang berbeda dalam registri kedua yang diakses oleh sistem produksi. Contoh ini memperlihatkan kepada Anda cara membuat tugas seperti itu dan memberikan kredensial untuk registri lain.

Jika Anda belum memiliki registri kedua, buatlah untuk contoh ini. Jika Anda memerlukan registri, lihat tutorial sebelumnya, atau Mulai Cepat: Membuat registri kontainer menggunakan Azure CLI.

Untuk membuat tugas, Anda memerlukan nama server login registri, yang merupakan formulir mycontainerregistrydate.azurecr.io (semua huruf kecil). Dalam contoh ini, Anda menggunakan registri kedua untuk menyimpan gambar yang ditandai dengan tanggal build.

File YAML

Contoh kedua tugas multi-langkah untuk tutorial ini didefinisikan dalam file taskmulti-multiregistry.yaml, yang berada di akar repo GitHub yang Anda kloning:

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

Tugas multi-langkah ini melakukan hal berikut:

  1. Menjalankan dua langkah build untuk membuat gambar dari Dockerfile di direktori kerja:
    • Yang pertama menargetkan Run.Registry, registri tempat tugas dijalankan, dan ditandai dengan ID eksekusi ACR Tasks yang unik.
    • Yang kedua menargetkan registri yang diidentifikasi oleh nilai regDate, yang Anda tetapkan saat Anda membuat tugas (atau menyediakan melalui file values.yaml eksternal yang diteruskan ke az acr task create). Gambar ini ditandai dengan tanggal eksekusi.
  2. Menjalankan langkah cmd untuk menjalankan salah satu kontainer yang dibangun. Contoh ini memulai kontainer yang sudah berjalan lama di latar belakang dan mengembalikan ID kontainer, lalu menghentikan kontainer. Dalam skenario dunia nyata, Anda mungkin menguji kontainer yang sedang berjalan untuk memastikannya berjalan dengan benar.
  3. Dalam langkah push, mendorong gambar yang dibangun, yang pertama untuk menjalankan registri, yang kedua ke registri yang diidentifikasi oleh regDate.

Perintah tugas

Menggunakan variabel lingkungan shell yang ditentukan sebelumnya, buat tugas dengan menjalankan perintah az acr task create berikut. Ganti nama registri Anda untuk 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

Menambahkan kredensial tugas

Untuk mendorong gambar ke registri yang diidentifikasi oleh nilai regDate, gunakan az acr task credential add untuk menambahkan kredensial login untuk registri tersebut ke tugas.

Untuk contoh ini, kami sarankan Anda membuat perwakilan layanan dengan akses ke registri yang tercakup dalam peran AcrPush, sehingga memiliki izin untuk mendorong gambar. Untuk membuat perwakilan layanan, gunakan skrip berikut:

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

Memberikan ID aplikasi perwakilan layanan dan kata sandi dalam perintah az acr task credential add berikut. Pastikan untuk memperbarui nama server login mycontainerregistrydate dengan nama registri kedua Anda:

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

CLI mengembalikan nama server login registri yang Anda tambahkan.

Menguji alur kerja multi-langkah

Seperti dalam contoh sebelumnya, untuk menguji tugas multi-langkah, picu secara manual dengan menjalankan perintah az acr taskd run. Untuk memicu tugas dengan penerapan ke repositori Git, lihat bagian Memicu build dengan penerapan.

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

Secara default, perintah az acr task run mengalirkan output log ke konsol Anda saat Anda menjalankan perintah. Output menunjukkan kemajuan menjalankan setiap langkah tugas. Output dikondensasikan untuk menunjukkan langkah-langkah kunci.

Output:

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

Langkah berikutnya

Dalam tutorial ini, Anda belajar cara membuat tugas multi-langkah berbasis multi-kontainer yang secara otomatis memicu ketika Anda melakukan kode sumber ke repositori Git. Untuk fitur lanjutan tugas multi-langkah, termasuk eksekusi langkah paralel dan dependen, lihat referensi YAML ACR Tasks. Beralih ke tutorial berikutnya untuk mempelajari cara membuat tugas yang memicu build saat gambar dasar dari gambar kontainer diperbarui.