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. Ada 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, termasuk:
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 set
perintah , yang menerima defaults.acr=REGISTRY_NAME
pasangan nilai kunci.
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 | Tipe | 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 v1.0.0 . |
T/A | v1.0.0 |
stepTimeout |
int (detik) | Ya | Jumlah detik maksimum sebuah langkah dapat dijalankan. stepTimeout Jika properti ditentukan pada tugas, properti default timeout akan diatur 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, hal ini 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, hal ini 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 |
secrets |
[rahasia, rahasia, ...] | Ya | Larik objek rahasia. | No | Tidak |
networks |
[jaringan, jaringan, ...] | Ya | Larik objek jaringan. | No | Tidak |
volumes |
[volume, volume, ...] | Ya | Larik objek volume. Menentukan volume dengan konten sumber untuk dipasang ke suatu langkah. | No | Tidak |
rahasia
Objek rahasia memiliki properti berikut.
Properti | Tipe | Opsional | Deskripsi | Nilai default |
---|---|---|---|---|
id |
string | No | Pengidentifikasi rahasia. | Tidak |
keyvault |
string | Ya | URL Rahasia Azure Key Vault. | Tidak |
clientID |
string | Ya | ID klien dari identitas terkelola yang ditetapkan pengguna untuk sumber daya Azure. | Tidak |
jaringan
Objek jaringan memiliki properti berikut.
Properti | Tipe | Opsional | Deskripsi | Nilai default |
---|---|---|---|---|
name |
string | No | Nama jaringan. | Tidak |
driver |
string | Ya | Driver untuk mengelola jaringan. | Tidak |
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 | Tipe | Opsional | Deskripsi | Nilai default |
---|---|---|---|---|
name |
string | No | Nama volume yang akan dipasang. Hanya boleh berisi karakter alfanumerik, '-', dan '_'. | Tidak |
secret |
peta[string]string | No | 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 |
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. |
No |
Properti: build
Jenis langkah build
mendukung properti berikut. Temukan detail properti ini di bagian Properti langkah tugas artikel ini.
Properti | Jenis | Wajib |
---|---|---|
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 |
object | Opsional |
ports |
[string, string, ...] | Opsional |
pull |
bool | Opsional |
repeat |
int | Opsional |
retries |
int | Opsional |
retryDelay |
int (detik) | Opsional |
secret |
object | Opsional |
startDelay |
int (detik) | Opsional |
timeout |
int (detik) | Opsional |
volumeMount |
object | 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
Variabel dinamis yang lolos dalam Tugas ACR
Saat bekerja dengan tugas Azure container registry (ACR), Anda mungkin merasa perlu meneruskan nilai yang berbeda ke proses build Anda tanpa mengubah definisi tugas dengan menggunakan --set
bendera dengan az acr task run
perintah .
Contoh: Mengatur tag gambar saat runtime
Misalkan Anda memiliki tugas ACR yang acr-task.yml
ditentukan dalam file dengan tempat penampung untuk tag gambar:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
Anda dapat memicu tugas dan mengatur tag
variabel ke v2
pada runtime menggunakan perintah Azure CLI berikut:
az acr task run --registry myregistry --name mytask --set tag=v2
Perintah ini akan memulai tugas ACR bernama mytask
dan membangun gambar menggunakan v2
tag, menimpa tempat penampung dalam acr-task.yml
file.
Pendekatan ini memungkinkan penyesuaian dalam alur CI/CD Anda, memungkinkan Anda menyesuaikan parameter secara dinamis berdasarkan kebutuhan Anda saat ini tanpa mengubah definisi tugas.
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 | Tipe | Wajib |
---|---|---|
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 | Tipe | Wajib |
---|---|---|
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 |
object | Opsional |
ports |
[string, string, ...] | Opsional |
pull |
bool | Opsional |
repeat |
int | Opsional |
retries |
int | Opsional |
retryDelay |
int (detik) | Opsional |
secret |
object | Opsional |
startDelay |
int (detik) | Opsional |
timeout |
int (detik) | Opsional |
volumeMount |
object | 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 khususmyimage: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. VariabelRun.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 | Tipe | 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 |
env |
[string, string, ...] | Ya | Larik string dalam format key=value yang menentukan variabel lingkungan untuk langkah tersebut. |
Tidak |
expose |
[string, string, ...] | Ya | Larik port yang diekspos dari kontainer. | Tidak |
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 |
object | Ya | Mengidentifikasi jaringan tempat kontainer berjalan. | Tidak |
ports |
[string, string, ...] | Ya | Larik port yang dipublikasikan dari kontainer ke host. | Tidak |
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 |
object | Ya | Mengidentifikasi rahasia Azure Key Vault atau identitas terkelola untuk sumber daya Azure. | Tidak |
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 |
user |
string | Ya | Nama pengguna atau UID kontainer | Tidak |
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 | Tipe | Opsional | Deskripsi | Nilai default |
---|---|---|---|---|
name |
string | No | Nama volume yang akan dipasang. Harus cocok dengan nama dari properti volumes . |
Tidak |
mountPath |
string | no | Jalur absolut untuk memasang file dalam kontainer. | Tidak |
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 menetapkanwhen: ["-"]
akan segera memulai eksekusi, dan mengaktifkan eksekusi langkah bersamaan.when: ["id1", "id2"]
- Menunjukkan langkah bergantung pada langkah denganid
"id1" danid
"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.
Alias
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.