Referensi Tugas ACR: YAML

Definisi tugas multi-langkah di Tugas ACR menyediakan komputasi primitif yang berpusat pada container yang berfokus pada pembuatan, pengujian, dan patching kontainer. Artikel ini menjelaskan perintah, parameter, properti, dan sintaks untuk file YAML yang menentukan tugas multi-langkah Anda.

Artikel ini berisi referensi untuk membuat file YAML tugas multi-langkah untuk Tugas ACR. Jika Anda ingin pengenalan tentang Tugas ACR, lihat ikhtisar Tugas ACR.

format file acr-task.yaml

Tugas ACR mendukung deklarasi tugas multi-langkah dalam sintaks YAML standar. Anda menentukan langkah-langkah tugas dalam file YAML. Kemudian Anda dapat menjalankan tugas secara manual dengan meneruskan file ke perintah az acr run. Alternatif lain, gunakan file untuk membuat tugas dengan az acr task create yang dipicu secara otomatis pada komit Git, pembaruan gambar dasar, atau jadwal. Meskipun artikel ini merujuk pada acr-task.yaml sebagai file yang berisi langkah-langkah, Tugas ACR mendukung semua nama file yang valid dengan ekstensi yang didukung.

Primitif acr-task.yaml tingkat atas adalah properti tugas, tipe langkah, dan properti langkah:

  • Properti tugas berlaku untuk semua langkah selama pelaksanaan tugas. Terdapat beberapa properti tugas global, termasuk:
    • version
    • stepTimeout
    • workingDirectory
  • Jenis langkah tugas mewakili jenis tindakan yang dapat dilakukan dalam tugas. Ada tiga jenis langkah:
    • build
    • push
    • cmd
  • Properti langkah tugas adalah parameter yang berlaku untuk setiap langkah. Ada beberapa properti langkah, antara lain:
    • startDelay
    • timeout
    • when
    • ...dan masih banyak lagi.

Berikut adalah format dasar file acr-task.yaml, termasuk beberapa properti langkah umum. Meskipun bukan representasi lengkap dari semua properti langkah yang tersedia atau penggunaan jenis langkah, ini memberikan gambaran umum singkat tentang format file dasar.

version: # acr-task.yaml format version.
stepTimeout: # Seconds each step may take.
steps: # A collection of image or container actions.
  - build: # Equivalent to "docker build," but in a multi-tenant environment
  - push: # Push a newly built or retagged image to a registry.
    when: # Step property that defines either parallel or dependent step execution.
  - cmd: # Executes a container, supports specifying an [ENTRYPOINT] and parameters.
    startDelay: # Step property that specifies the number of seconds to wait before starting execution.

Ekstensi nama file tugas yang didukung

Tugas ACR telah mencadangkan beberapa ekstensi nama file, termasuk .yaml, yang akan diproses sebagai file tugas. Ekstensi apa pun yang tidak dalam daftar berikut dianggap oleh Tugas ACR sebagai Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua

YAML adalah satu-satunya format file yang saat ini didukung oleh Tugas ACR. Ekstensi nama file lainnya dicadangkan untuk kemungkinan dukungan di masa mendatang.

Jalankan tugas sampel

Terdapat beberapa contoh file tugas yang dirujuk di bagian berikut dari artikel ini. Contoh tugas ada di repositori GitHub publik, Sampel Azure/acr-tasks. Anda dapat menjalankannya dengan perintah Azure CLI az acr run. Contoh perintahnya serupa dengan:

az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git

Pemformatan contoh perintah mengasumsikan Anda telah mengonfigurasi registri default di Azure CLI, jadi mereka menghilangkan parameter --registry. Untuk mengonfigurasi registri default, gunakan perintah az config dengan perintah set, yang menerima pasangan nilai kunci defaults.acr=REGISTRY_NAME.

Misalnya, untuk mengonfigurasi Azure CLI dengan registri default bernama "myregistry":

az config set defaults.acr=myregistry

Properti tugas

Properti tugas biasanya muncul di bagian atas file acr-task.yaml, dan merupakan properti global yang berlaku selama seluruh pelaksanaan langkah-langkah tugas. Beberapa properti global ini dapat diganti dalam satu langkah individual.

Properti Jenis Opsional Deskripsi Pengambil alihan didukung Nilai default
version string Ya Versi file acr-task.yaml seperti yang diurai oleh layanan Tugas ACR. Sementara Tugas ACR berusaha untuk mempertahankan kompatibilitas mundur, nilai ini memungkinkan Tugas ACR untuk mempertahankan kompatibilitas dalam versi yang ditentukan. Jika tidak ditentukan, default ke versi terbaru. Tidak Tidak ada
stepTimeout int (detik) Ya Jumlah detik maksimum sebuah langkah dapat dijalankan. Jika properti stepTimeout ditentukan pada tugas, tugas akan menetapkan properti timeout default dari semua langkah. Jika properti timeout ditentukan pada suatu langkah, properti stepTimeout akan menggantikan properti yang disediakan oleh tugas.

Jumlah nilai batas waktu langkah untuk tugas harus sama dengan nilai properti timeout yang dijalankan tugas (sebagai contoh, ditetapkan dengan melewatkan --timeout ke perintah az acr task create). Jika nilai timeout menjalankan tugas yang kecil, tugas akan diprioritaskan.
Ya 600 (10 menit)
workingDirectory string Ya Direktori kerja kontainer selama runtime. Jika properti ditentukan pada tugas, maka akan menetapkan properti workingDirectory default dari semua langkah. Jika ditentukan pada langkah, maka akan menimpa properti yang disediakan oleh tugas. Ya c:\workspace di Windows atau /workspace di Linux
env [string, string, ...] Ya Larik string dalam format key=value yang mendefinisikan variabel lingkungan untuk tugas. Jika properti ditentukan pada tugas, maka akan menetapkan properti env default dari semua langkah. Jika ditentukan pada suatu langkah, itu menimpa variabel lingkungan apa pun yang diwarisi dari tugas. Ya Tidak ada
secrets [rahasia, rahasia, ...] Ya Larik objek rahasia. Tidak Tidak ada
networks [jaringan, jaringan, ...] Ya Larik objek jaringan. Tidak Tidak ada
volumes [volume, volume, ...] Ya Larik objek volume. Menentukan volume dengan konten sumber untuk dipasang ke suatu langkah. Tidak Tidak ada

rahasia

Objek rahasia memiliki properti berikut.

Properti Jenis Opsional Deskripsi Nilai default
id string Tidak Pengidentifikasi rahasia. Tidak ada
keyvault string Ya URL Rahasia Azure Key Vault. Tidak ada
clientID string Ya ID klien dari identitas terkelola yang ditetapkan pengguna untuk sumber daya Azure. Tidak ada

jaringan

Objek jaringan memiliki properti berikut.

Properti Jenis Opsional Deskripsi Nilai default
name string Tidak Nama jaringan. Tidak ada
driver string Ya Driver untuk mengelola jaringan. Tidak ada
ipv6 bool Ya Apakah jaringan IPv6 diaktifkan. false
skipCreation bool Ya Apakah akan melewati pembuatan jaringan. false
isDefault bool Ya Apakah jaringan tersebut merupakan jaringan default yang disediakan dengan Azure Container Registry. false

volume

Objek volume memiliki properti berikut.

Properti Jenis Opsional Deskripsi Nilai default
name string Tidak Nama volume yang akan dipasang. Hanya boleh berisi karakter alfanumerik, '-', dan '_'. Tidak ada
secret peta[string]string Tidak Setiap kunci peta adalah nama file yang dibuat dan diisi dalam volume. Setiap nilai adalah versi string dari rahasia tersebut. Nilai rahasia harus dikodekan Base64. Tidak ada

Jenis langkah tugas

Tugas ACR mendukung tiga jenis langkah. Setiap jenis langkah mendukung beberapa properti, yang dirinci di bagian untuk setiap jenis langkah.

Jenis langkah Deskripsi
build Membuat gambar kontainer menggunakan sintaks docker build yang sudah dikenal.
push Menjalankan docker push gambar yang baru dibuat atau diberi tag ulang ke registri penampung. Azure Container Registry, registri pribadi lainnya, dan Docker Hub publik didukung.
cmd Menjalankan penampung sebagai perintah, dengan parameter yang diteruskan ke [ENTRYPOINT] penampung. Jenis langkah cmd mendukung parameter seperti env, detach, dan opsi perintah docker run yang sudah dikenal lainnya, mengaktifkan unit dan pengujian fungsional dengan eksekusi kontainer bersamaan.

build

Buat gambar kontainer. Jenis langkah build mewakili cara multi-penyewa dan aman untuk menjalankan docker build di cloud sebagai primitif kelas satu.

Sintaks: build

version: v1.1.0
steps:
  - [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
    [property]: [value]

Jalankan perintah az acr rununtuk mendapatkan versi docker.

az acr run -r $ACR_NAME --cmd "docker version" /dev/null

Tambahkan variabel DOCKER_BUILDKIT=1 lingkungan dalam file yaml untuk mengaktifkan buildkit dan menggunakan secret dengan buildkit.

Jenis langkah build mendukung parameter dalam tabel berikut. Jenis langkah build juga mendukung semua opsi versi dari perintah pembuat galangan kapal , seperti --build-arg untuk menyetel variabel waktu pembuatan.

Parameter Deskripsi Opsional
-t | --image Mendefinisikan sepenuhnya image:tag citra yang dibangun.

Karena citra dapat digunakan untuk validasi tugas internal, seperti pengujian fungsional, tidak semua gambar memerlukan push ke registri. Namun, untuk membuat instans citra dalam eksekusi Tugas, citra tersebut membutuhkan nama untuk referensi.

Tidak seperti az acr build, menjalankan Tugas ACR tidak menyediakan perilaku push default. Dengan Tugas ACR, skenario default mengasumsikan kemampuan untuk membangun, memvalidasi, lalu mendorong citra. Lihat dorong untuk mengetahui cara mendorong citra bawaan secara opsional.
Ya
-f | --file Menentukan Dockerfile yang diteruskan ke docker build. Jika tidak ditentukan, Dockerfile default di root konteks diasumsikan. Untuk menentukan Dockerfile, berikan nama file relatif ke akar konteks. Ya
context Direktori akar diteruskan ke docker build. Direktori root dari setiap tugas disetel ke workingDirectory bersama, dan menyertakan root dari direktori kloning Git terkait. Tidak

Properti: build

Jenis langkah build mendukung properti berikut. Temukan detail properti ini di bagian Properti langkah tugas artikel ini.

Properti Jenis Diperlukan
detach bool Opsional
disableWorkingDirectoryOverride bool Opsional
entryPoint string Opsional
env [string, string, ...] Opsional
expose [string, string, ...] Opsional
id string Opsional
ignoreErrors bool Opsional
isolation string Opsional
keep bool Opsional
network objek Opsional
ports [string, string, ...] Opsional
pull bool Opsional
repeat int Opsional
retries int Opsional
retryDelay int (detik) Opsional
secret objek Opsional
startDelay int (detik) Opsional
timeout int (detik) Opsional
volumeMount objek Opsional
when [string, string, ...] Opsional
workingDirectory string Opsional

Contoh: build

Citra build - konteks di akar

az acr run -f build-hello-world.yaml https://github.com/AzureCR/acr-tasks-sample.git
version: v1.1.0
steps:
  - build: -t $Registry/hello-world -f hello-world.dockerfile .

Citra build - konteks dalam subdirektori

version: v1.1.0
steps:
  - build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory

push

Dorong satu atau beberapa gambar yang dibuat atau diberi tag ulang ke registri kontainer. Mendukung mendorong ke registri pribadi seperti Azure Container Registry, atau ke Docker Hub publik.

Sintaks: push

Jenis langkah push mendukung kumpulan citra. Sintaks koleksi YAML mendukung format inline dan nested. Mendorong satu citra biasanya diwakili menggunakan sintaks sebaris:

version: v1.1.0
steps:
  # Inline YAML collection syntax
  - push: ["$Registry/hello-world:$ID"]

Untuk meningkatkan keterbacaan, gunakan sintaks bersarang saat mendorong banyak citra:

version: v1.1.0
steps:
  # Nested YAML collection syntax
  - push:
    - $Registry/hello-world:$ID
    - $Registry/hello-world:latest

Properti: push

Jenis langkah push mendukung properti berikut. Temukan detail properti ini di bagian Properti langkah tugas artikel ini.

Properti Jenis Diperlukan
env [string, string, ...] Opsional
id string Opsional
ignoreErrors bool Opsional
startDelay int (detik) Opsional
timeout int (detik) Opsional
when [string, string, ...] Opsional

Contoh: push

Dorong beberapa citra

az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  - build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
  - push: 
    - $Registry/hello-world:$ID

Bangun, dorong, dan jalankan

az acr run -f build-run-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  - build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
  - push:
    - $Registry/hello-world:$ID
  - cmd: $Registry/hello-world:$ID

cmd

Jenis langkah cmd menjalankan penampung.

Sintaks: cmd

version: v1.1.0
steps:
  - [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]

Properti: cmd

Jenis langkah cmd mendukung properti berikut:

Properti Jenis Diperlukan
detach bool Opsional
disableWorkingDirectoryOverride bool Opsional
entryPoint string Opsional
env [string, string, ...] Opsional
expose [string, string, ...] Opsional
id string Opsional
ignoreErrors bool Opsional
isolation string Opsional
keep bool Opsional
network objek Opsional
ports [string, string, ...] Opsional
pull bool Opsional
repeat int Opsional
retries int Opsional
retryDelay int (detik) Opsional
secret objek Opsional
startDelay int (detik) Opsional
timeout int (detik) Opsional
volumeMount objek Opsional
when [string, string, ...] Opsional
workingDirectory string Opsional

Anda dapat menemukan detail properti ini di bagian Properti langkah tugas pada artikel ini.

Contoh: cmd

Jalankan citra hello-world

Perintah ini mengeksekusi file tugas hello-world.yaml, yang mereferensikan citra hello-world di Docker Hub.

az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  - cmd: mcr.microsoft.com/hello-world

Jalankan bash image dan gema "hello world"

Perintah ini mengeksekusi file tugas bash-echo.yaml, yang mereferensikan gambar bash di Docker Hub.

az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  - cmd: bash echo hello world

Jalankan tag gambar bash tertentu

Untuk menjalankan versi gambar tertentu, tentukan tag di cmd.

Perintah ini mengeksekusi file tugas bash-echo-3.yaml, yang merujuk pada gambar bash:3.0 di Docker Hub.

az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  - cmd: bash:3.0 echo hello world

Jalankan gambar kustom

Jenis langkah cmd mereferensikan gambar menggunakan format docker run standar. Gambar yang tidak diawali dengan registri dianggap berasal dari docker.io. Contoh sebelumnya dapat direpresentasikan sama sebagai:

version: v1.1.0
steps:
  - cmd: docker.io/bash:3.0 echo hello world

Dengan menggunakan konvensi referensi gambar docker run standar, cmd dapat menjalankan gambar dari registri pribadi mana pun atau Docker Hub publik. Jika Anda mereferensikan gambar di registri yang sama tempat Tugas ACR dijalankan, Anda tidak perlu menentukan kredensial registri apa pun.

  • Jalankan citra yang berasal dari registri kontainer Azure. Contoh berikut mengasumsikan Anda memiliki registri bernama myregistry, dan citra khusus myimage:mytag.

    version: v1.1.0
    steps:
        - cmd: myregistry.azurecr.io/myimage:mytag
    
  • Menggeneralisasi referensi registri dengan variabel Jalankan atau alias

    Alih-alih melakukan hard-coding nama registri Anda dalam file acr-task.yaml, Anda dapat membuatnya lebih portabel dengan menggunakan variabel Jalankan atau alias. Variabel Run.Registry atau $Registry alias diperluas saat runtime ke nama registri tempat tugas dijalankan.

    Misalnya, untuk menggeneralisasi tugas sebelumnya sehingga berfungsi di registri wadah Azure apa pun, rujuk variabel $Registry dalam nama citra:

    version: v1.1.0
    steps:
      - cmd: $Registry/myimage:mytag
    

Akses volume rahasia

Properti volumes memungkinkan volume dan konten rahasianya ditentukan untuk langkah build dan cmd dalam tugas. Di dalam setiap langkah, properti volumeMounts opsional mencantumkan volume dan jalur penampung yang sesuai untuk dipasang ke penampung pada langkah itu. Rahasia disediakan sebagai file di setiap jalur pemasangan volume.

Jalankan tugas dan pasang dua rahasia ke satu langkah: satu disimpan di brankas kunci dan satu lagi ditentukan di baris perintah:

az acr run -f mounts-secrets.yaml --set-secret mysecret=abcdefg123456 https://github.com/Azure-Samples/acr-tasks.git
# This template demonstrates mounting a custom volume into a container at a CMD step
secrets:
  - id: sampleSecret
    keyvault: https://myacbvault2.vault.azure.net/secrets/SampleSecret # Replace with valid keyvault with access

volumes:
  - name: mysecrets
    secret:
      mysecret1: {{.Secrets.sampleSecret | b64enc}}
      mysecret2: {{.Values.mysecret | b64enc}}

steps:
  - cmd: bash cat /run/test/mysecret1 /run/test/mysecret2
    volumeMounts:
      - name: mysecrets
        mountPath: /run/test

Properti langkah tugas

Setiap jenis langkah mendukung beberapa properti yang sesuai untuk jenisnya. Tabel berikut mendefinisikan semua properti langkah yang tersedia. Tidak semua jenis langkah mendukung semua properti. Untuk melihat properti mana yang tersedia untuk setiap jenis langkah, lihat bagian referensi jenis langkah cmd, build, dan push.

Properti Jenis Opsional Deskripsi Nilai default
detach bool Ya Apakah kontainer harus dilepas saat berjalan. false
disableWorkingDirectoryOverride bool Ya Apakah akan menonaktifkan workingDirectory fungsi penggantian. Gunakan ini bersama dengan workingDirectory untuk memiliki kendali penuh atas direktori kerja kontainer. false
entryPoint string Ya Mengambil alih [ENTRYPOINT] kontainer langkah. Tidak ada
env [string, string, ...] Ya Larik string dalam format key=value yang menentukan variabel lingkungan untuk langkah tersebut. Tidak ada
expose [string, string, ...] Ya Larik port yang diekspos dari kontainer. Tidak ada
id string Ya Secara unik mengidentifikasi langkah dalam tugas. Langkah-langkah lain dalam tugas dapat mereferensikan id langkah, seperti untuk pemeriksaan ketergantungan dengan when.

id juga merupakan nama penampung yang sedang berjalan. Proses yang berjalan di kontainer lain dalam tugas dapat merujuk ke id sebagai nama host DNS-nya, atau untuk mengaksesnya dengan log buruh pelabuhan [id], misalnya.
acb_step_%d, dengan %d adalah indeks yang berbasis 0 dari step top-down dalam file YAML
ignoreErrors bool Ya Apakah akan menandai langkah sebagai berhasil terlepas dari apakah terjadi kesalahan selama eksekusi penampung. false
isolation string Ya Tingkat isolasi kontainer. default
keep bool Ya Apakah kontainer langkah harus disimpan setelah eksekusi. false
network objek Ya Mengidentifikasi jaringan tempat kontainer berjalan. Tidak ada
ports [string, string, ...] Ya Larik port yang dipublikasikan dari kontainer ke host. Tidak ada
pull bool Ya Apakah akan memaksa penarikan kontainer sebelum menjalankannya untuk mencegah perilaku caching apa pun. false
privileged bool Ya Apakah akan menjalankan kontainer dalam mode hak istimewa. false
repeat int Ya Jumlah percobaan ulang untuk mengulang eksekusi kontainer. 0
retries int Ya Jumlah percobaan ulang untuk dicoba jika kontainer gagal dieksekusi. Percobaan ulang hanya dilakukan jika kode keluar kontainer bukan nol. 0
retryDelay int (detik) Ya Penundaan dalam hitungan detik antara percobaan ulang eksekusi kontainer. 0
secret objek Ya Mengidentifikasi rahasia Azure Key Vault atau identitas terkelola untuk sumber daya Azure. Tidak ada
startDelay int (detik) Ya Jumlah detik untuk menunda eksekusi kontainer. 0
timeout int (detik) Ya Jumlah detik maksimum yang dapat dijalankan suatu langkah sebelum dihentikan. 600
when [string, string, ...] Ya Mengonfigurasi ketergantungan langkah pada satu atau beberapa langkah lain dalam tugas. Tidak ada
user string Ya Nama pengguna atau UID kontainer Tidak ada
workingDirectory string Ya Mengatur direktori kerja untuk langkah. Secara default, Tugas ACR membuat direktori akar sebagai direktori kerja. Namun, jika build Anda memiliki beberapa langkah, langkah sebelumnya dapat berbagi artefak dengan langkah selanjutnya dengan menentukan direktori kerja yang sama. c:\workspace di Windows atau /workspace di Linux

volumeMount

Objek volumeMount memiliki properti berikut.

Properti Jenis Opsional Deskripsi Nilai default
name string Tidak Nama volume yang akan dipasang. Harus cocok dengan nama dari properti volumes. Tidak ada
mountPath string tidak Jalur absolut untuk memasang file dalam kontainer. Tidak ada

Contoh: Properti langkah tugas

Contoh: id

Bangun dua citra, buat contoh citra uji fungsional. Setiap langkah diidentifikasi oleh id unik yang langkah-langkah lain dalam referensi tugas di properti when mereka.

az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  # build website and func-test images, concurrently
  - id: build-hello-world
    build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
    when: ["-"]
  - id: build-hello-world-test
    build: -t hello-world-test -f hello-world.dockerfile .
    when: ["-"]
  # run built images to be tested
  - id: hello-world
    cmd: $Registry/hello-world:$ID
    when: ["build-hello-world"]
  - id: func-tests
    cmd: hello-world-test
    env:
      - TEST_TARGET_URL=hello-world
    when: ["hello-world"]
  # push hello-world if func-tests are successful  
  - push: ["$Registry/hello-world:$ID"]
    when: ["func-tests"]

Contoh: kapan

Properti when menentukan dependensi langkah pada langkah lain dalam tugas. Properti ini mendukung dua nilai parameter:

  • when: ["-"] - Menunjukkan tidak ada dependensi pada langkah lain. Langkah yang menetapkan when: ["-"] akan segera memulai eksekusi, dan mengaktifkan eksekusi langkah bersamaan.
  • when: ["id1", "id2"] - Menunjukkan langkah bergantung pada langkah dengan id "id1" dan id "id2". Langkah ini tidak akan dijalankan hingga langkah "id1" dan "id2" selesai.

Jika when tidak ditentukan dalam satu langkah, langkah itu bergantung pada penyelesaian langkah sebelumnya dalam file acr-task.yaml.

Eksekusi langkah berurutan tanpa when:

az acr run -f when-sequential-default.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
    - cmd: bash echo one
    - cmd: bash echo two
    - cmd: bash echo three

Eksekusi langkah berurutan dengan when:

az acr run -f when-sequential-id.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
    - id: step1
      cmd: bash echo one
    - id: step2
      cmd: bash echo two
      when: ["step1"]
    - id: step3
      cmd: bash echo three
      when: ["step2"]

Build citra paralel:

az acr run -f when-parallel.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  # build website and func-test images, concurrently
  - id: build-hello-world
    build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
    when: ["-"]
  - id: build-hello-world-test
    build: -t hello-world-test -f hello-world.dockerfile .
    when: ["-"]

Build citra paralel dan pengujian dependen:

az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
  # build website and func-test images, concurrently
  - id: build-hello-world
    build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
    when: ["-"]
  - id: build-hello-world-test
    build: -t hello-world-test -f hello-world.dockerfile .
    when: ["-"]
  # run built images to be tested
  - id: hello-world
    cmd: $Registry/hello-world:$ID
    when: ["build-hello-world"]
  - id: func-tests
    cmd: hello-world-test
    env:
      - TEST_TARGET_URL=hello-world
    when: ["hello-world"]
  # push hello-world if func-tests are successful  
  - push: ["$Registry/hello-world:$ID"]
    when: ["func-tests"]

Jalankan variabel

Tugas ACR menyertakan serangkaian variabel default yang tersedia untuk langkah tugas saat dijalankan. Variabel ini dapat diakses dengan menggunakan format {{.Run.VariableName}}, di mana VariableName adalah salah satu dari berikut ini:

  • Run.ID
  • Run.SharedVolume
  • Run.Registry
  • Run.RegistryName
  • Run.Date
  • Run.OS
  • Run.Architecture
  • Run.Commit
  • Run.Branch
  • Run.TaskName

Nama-nama variabel umumnya cukup jelas. Detail mengikuti untuk variabel yang umum digunakan. Pada versi YAML v1.1.0, Anda dapat menggunakan alias tugas yang telah ditentukan sebelumnya sebagai pengganti sebagian besar variabel yang dijalankan. Misalnya, sebagai ganti {{.Run.Registry}}, gunakan $Registry alias.

Run.ID

Setiap Eksekusi, melalui az acr run, atau eksekusi berbasis pemicu dari tugas yang dibuat melalui az acr task create, memiliki ID unik. ID mewakili Eksekusi yang sedang dijalankan.

Biasanya digunakan untuk pemberian tag pada citra yang unik:

version: v1.1.0
steps:
    - build: -t $Registry/hello-world:$ID .

Run.SharedVolume

Pengidentifikasi unik untuk volume bersama yang dapat diakses oleh semua langkah tugas. Volume dipasang ke c:\workspace di Windows atau /workspace di Linux.

Run.Registry

Nama server registri yang sepenuhnya memenuhi syarat. Biasanya digunakan untuk mereferensikan registri secara umum tempat tugas dijalankan.

version: v1.1.0
steps:
  - build: -t $Registry/hello-world:$ID .

Run.RegistryName

Nama registri kontainer. Biasanya digunakan dalam langkah tugas yang tidak memerlukan nama server yang sepenuhnya memenuhi syarat, misalnya, cmd langkah yang menjalankan perintah Azure CLI pada pendaftar.

version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName

Run.Date

Waktu UTC saat ini dimulai.

Run.Commit

Untuk tugas yang dipicu oleh komit ke repositori GitHub, pengidentifikasi komit.

Run.Branch

Untuk tugas yang dipicu oleh komit ke repositori GitHub, nama cabangnya.

Aliases

Mulai dari v1.1.0, Tugas ACR mendukung alias yang tersedia untuk langkah tugas saat dijalankan. Alias memiliki konsep yang mirip dengan alias (pintasan perintah) yang didukung di bash dan beberapa shell perintah lainnya.

Dengan alias, Anda dapat meluncurkan perintah atau grup perintah apa pun (termasuk opsi dan nama file) dengan memasukkan satu kata.

Tugas ACR mendukung beberapa alias yang telah ditentukan sebelumnya dan juga alias khusus yang Anda buat.

Alias ​​yang telah ditentukan sebelumnya

Alias tugas berikut tersedia untuk digunakan sebagai pengganti variabel eksekusi:

Alias Jalankan variabel
ID Run.ID
SharedVolume Run.SharedVolume
Registry Run.Registry
RegistryName Run.RegistryName
Date Run.Date
OS Run.OS
Architecture Run.Architecture
Commit Run.Commit
Branch Run.Branch

Dalam langkah tugas, awali alias dengan direktif $, seperti dalam contoh ini:

version: v1.1.0
steps:
  - build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .

Alias citra

Masing-masing alias berikut menunjukkan gambar stabil di Microsoft Container Registry (MCR). Anda dapat merujuk ke masing-masing dari mereka di bagian cmd dari file Tugas tanpa menggunakan arahan.

Alias Gambar
acr mcr.microsoft.com/acr/acr-cli:0.5
az mcr.microsoft.com/acr/azure-cli:7ee1d7f
bash mcr.microsoft.com/acr/bash:7ee1d7f
curl mcr.microsoft.com/acr/curl:7ee1d7f

Contoh tugas berikut menggunakan beberapa alias untuk membersihkan tag citra yang lebih lama dari 7 hari dalam repo samples/hello-world di registri yang dijalankan:

version: v1.1.0
steps:
  - cmd: acr tag list --registry $RegistryName --repository samples/hello-world
  - cmd: acr purge --registry $RegistryName --filter samples/hello-world:.* --ago 7d

Alias kustom

Tentukan alias kustom di file YAML Anda dan gunakan seperti yang ditunjukkan pada contoh berikut. Alias ​​hanya dapat berisi karakter alfanumerik. Arahan default untuk memperluas alias adalah karakter $.

version: v1.1.0
alias:
  values:
    repo: myrepo
steps:
  - build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .

Anda dapat menautkan ke file YAML jarak jauh atau lokal untuk definisi alias khusus. Contoh berikut menautkan ke file YAML di penyimpanan blob Azure:

version: v1.1.0
alias:
  src:  # link to local or remote custom alias files
    - 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]

Langkah berikutnya

Untuk ikhtisar tugas multi-langkah, lihat Jalankan tugas pembuatan, pengujian, dan patch multi-langkah di Tugas ACR.

Untuk pembuatan satu langkah, lihat ikhtisar Tugas ACR.