ACR Görevleri başvurusu: YAML

ACR Görevleri'ndeki çok adımlı görev tanımı, kapsayıcı oluşturmaya, test etmeye ve kapsayıcılara düzeltme eki uygulamaya odaklanan kapsayıcı merkezli bir işlem temel öğesi sağlar. Bu makalede, çok adımlı görevlerinizi tanımlayan YAML dosyalarının komutları, parametreleri, özellikleri ve söz dizimi yer alır.

Bu makale, ACR Görevleri için çok adımlı görev YAML dosyaları oluşturmaya yönelik başvuru içerir. ACR Görevleri'ne giriş yapmak isterseniz bkz. ACR Görevlerine genel bakış.

acr-task.yaml dosya biçimi

ACR Görevleri, standart YAML söz diziminde çok adımlı görev bildirimini destekler. YaML dosyasında bir görevin adımlarını tanımlarsınız. Ardından, dosyayı az acr run komutuna geçirerek görevi el ile çalıştırabilirsiniz . Alternatif olarak dosyayı kullanarak az acr task create ile git işlemesinde, temel görüntü güncelleştirmesinde veya zamanlamada otomatik olarak tetiklenen bir görev oluşturabilirsiniz. Bu makale adımları içeren dosya olarak ifade acr-task.yaml etmekle birlikte, ACR Görevleri desteklenen bir uzantıya sahip tüm geçerli dosya adlarını destekler.

Üst düzey acr-task.yaml temel öğeler görev özellikleri, adım türleri ve adım özellikleridir:

  • Görev özellikleri , görev yürütme boyunca tüm adımlara uygulanır. Aşağıdakiler de dahil olmak üzere çeşitli genel görev özellikleri vardır:
    • version
    • stepTimeout
    • workingDirectory
  • Görev adımı türleri , bir görevde gerçekleştirilebilecek eylem türlerini temsil edebilir. Üç adım türü vardır:
    • build
    • push
    • cmd
  • Görev adımı özellikleri , tek bir adıma uygulanan parametrelerdir. Aşağıdakiler de dahil olmak üzere birkaç adım özelliği vardır:
    • startDelay
    • timeout
    • when
    • ... ve daha fazlası.

Bazı yaygın adım özellikleri de dahil olmak üzere dosyanın acr-task.yaml temel biçimi aşağıdadır. Tüm kullanılabilir adım özelliklerinin veya adım türü kullanımının kapsamlı bir gösterimi olmasa da, temel dosya biçimine hızlı bir genel bakış sağlar.

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.

Desteklenen görev dosya adı uzantıları

ACR Görevleri, görev dosyası olarak işleyecekleri, dahil olmak üzere .yamlbirkaç dosya adı uzantısı ayırmıştır. Aşağıdaki listede bulunmayan uzantılar ACR Görevleri tarafından Dockerfile olarak kabul edilir: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua

YAML, şu anda ACR Görevleri tarafından desteklenen tek dosya biçimidir. Diğer dosya adı uzantıları gelecekteki olası destek için ayrılmıştır.

Örnek görevleri çalıştırma

Bu makalenin aşağıdaki bölümlerinde başvuruda bulunan birkaç örnek görev dosyası vardır. Örnek görevler, azure-samples/acr-tasks adlı genel bir GitHub deposunda yer alır. Bunları az acr run Azure CLI komutuyla çalıştırabilirsiniz. Örnek komutlar şuna benzer:

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

Örnek komutların biçimlendirmesi, Azure CLI'da varsayılan bir kayıt defteri yapılandırdığınız varsayıldığından parametreyi --registry atlarlar. Varsayılan kayıt defterini yapılandırmak için az config komutunu kullanarak anahtar değer çiftini set kabul eden defaults.acr=REGISTRY_NAME komutunu kullanın.

Örneğin, Azure CLI'yi "myregistry" adlı varsayılan kayıt defteriyle yapılandırmak için:

az config set defaults.acr=myregistry

Görev özellikleri

Görev özellikleri genellikle bir acr-task.yaml dosyanın en üstünde görünür ve görev adımlarının tam yürütülmesi boyunca geçerli olan genel özelliklerdir. Bu genel özelliklerden bazıları tek bir adımda geçersiz kılınabilir.

Özellik Tür İsteğe bağlı Açıklama Geçersiz kılma desteği Default value
version string Yes ACR Görevleri hizmeti tarafından ayrıştırılan dosyanın sürümü acr-task.yaml . ACR Görevleri geriye dönük uyumluluğu korumaya çalışırken, bu değer ACR Görevlerinin tanımlı bir sürüm içinde uyumluluğu korumasına olanak tanır. Belirtilmezse, varsayılan olarak olur v1.0.0. Yok v1.0.0
stepTimeout int (saniye) Yes Bir adımın çalıştırabileceği en fazla saniye sayısı. stepTimeout Özellik bir görevde belirtilirse, tüm adımların varsayılan timeout özelliğini ayarlar. timeout Özellik bir adımda belirtilirse, görev tarafından sağlanan özelliği geçersiz kılarstepTimeout.

Görevin adım zaman aşımı değerlerinin toplamı, görevin çalıştırma timeout özelliğinin değerine eşit olmalıdır (örneğin, komutuna az acr task create geçirilerek --timeout ayarlanır). Görevlerin çalıştırma timeout değeri daha küçükse öncelik alır.
Yes 600 (10 dakika)
workingDirectory string Yes Çalışma zamanı sırasında kapsayıcının çalışma dizini. Özellik bir görevde belirtilirse, tüm adımların varsayılan workingDirectory özelliğini ayarlar. Bir adımda belirtilirse, görev tarafından sağlanan özelliği geçersiz kılar. Yes c:\workspace Windows veya /workspace Linux'ta
env [dize, dize, ...] Yes Görevin ortam değişkenlerini key=value tanımlayan biçimdeki dize dizisi. Özellik bir görevde belirtilirse, tüm adımların varsayılan env özelliğini ayarlar. Bir adımda belirtilirse, görevden devralınan ortam değişkenlerini geçersiz kılar. Yes Hiçbiri
secrets [gizli, gizli, ...] Yes Gizli nesne dizisi. Hayır None
networks [ağ, ağ, ...] Yes nesneleri dizisi. Hayır None
volumes [volume, volume, ...] Yes Birim nesneleri dizisi. Bir adıma bağlanacak kaynak içeriği olan birimleri belirtir. Hayır None

gizli dizi

Gizli nesne aşağıdaki özelliklere sahiptir.

Özellik Tür İsteğe bağlı Açıklama Default value
id Dize Hayır Gizli dizi tanımlayıcısı. Hiçbiri
keyvault string Yes Azure Key Vault Gizli Dizi URL'si. Hiçbiri
clientID string Yes Azure kaynakları için kullanıcı tarafından atanan yönetilen kimliğin istemci kimliği . Hiçbiri

network

Ağ nesnesi aşağıdaki özelliklere sahiptir.

Özellik Tür İsteğe bağlı Açıklama Default value
name Dize Hayır Ağın adı. Hiçbiri
driver string Yes Ağı yönetmek için sürücü. Hiçbiri
ipv6 ikili Yes IPv6 ağının etkinleştirilip etkinleştirilmediği. false
skipCreation ikili Yes Ağ oluşturma işleminin atlanıp atlanmayacağı. false
isDefault ikili Yes Ağın Azure Container Registry ile sağlanan varsayılan bir ağ olup olmadığı. false

hacim

Birim nesnesi aşağıdaki özelliklere sahiptir.

Özellik Tür İsteğe bağlı Açıklama Default value
name Dize Hayır Bağlanacak birimin adı. Yalnızca '-' ve '_' alfasayısal karakterler içerebilir. Hiçbiri
secret map[string]string Hayır Eşlemenin her anahtarı, birimde oluşturulan ve doldurulan bir dosyanın adıdır. Her değer, gizli dizinin dize sürümüdür. Gizli dizi değerleri Base64 kodlanmış olmalıdır. Hiçbiri

Görev adımı türleri

ACR Görevleri üç adım türünü destekler. Her adım türü, her adım türü için bölümünde ayrıntılı olarak belirtilen çeşitli özellikleri destekler.

Adım türü Açıklama
build Tanıdık docker build söz dizimlerini kullanarak bir kapsayıcı görüntüsü oluşturur.
push docker push Kapsayıcı kayıt defterinde yeni oluşturulan veya yeniden etiketlenen görüntüleri yürütür. Azure Container Registry, diğer özel kayıt defterleri ve genel Docker Hub desteklenir.
cmd Bir kapsayıcıyı komutu olarak çalıştırır ve parametreleri kapsayıcının [ENTRYPOINT]öğesine geçirilir. Adım cmd türü, , detachve diğer tanıdık docker run komut seçenekleri gibi envparametreleri destekler ve eşzamanlı kapsayıcı yürütme ile birim ve işlevsel testi etkinleştirir.

derleme

Kapsayıcı görüntüsü oluşturma. Adım build türü, bulutta birinci sınıf bir temel öğe olarak çalıştırmanın docker build çok kiracılı, güvenli bir araçlarını temsil eder.

Söz dizimi: derleme

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

Docker sürümünü almak için az acr runkomutunu çalıştırın.

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

ile buildkitetkinleştirmek buildkit ve kullanmak secret için yaml dosyasına ortam değişkeni DOCKER_BUILDKIT=1 ekleyin.

Adım build türü aşağıdaki tabloda yer alan parametreleri destekler. Adım build türü, derleme zamanı değişkenlerini ayarlamak gibi --build-arg docker build komutunun tüm derleme seçeneklerini de destekler.

Parametre Açıklama İsteğe bağlı
-t | --image Yerleşik görüntünün tam nitelemini image:tag tanımlar.

İşlevsel testler gibi iç görev doğrulamaları için resimler kullanılabildiğinden, tüm görüntülerin kayıt defterine ihtiyacı push olmaz. Ancak, bir Görev yürütmesi içindeki bir görüntüyü örnek olarak görüntülemek için, görüntünün başvurulacak bir ada ihtiyacı vardır.

'nin aksine az acr build, ACR Görevlerini çalıştırmak varsayılan gönderme davranışını sağlamaz. ACR Görevleri ile varsayılan senaryoda görüntü oluşturma, doğrulama ve gönderme özelliği varsayılır. İsteğe bağlı olarak oluşturulan görüntüleri gönderme hakkında bilgi için bkz. gönderme.
Yes
-f | --file öğesine geçirilen docker buildDockerfile dosyasını belirtir. Belirtilmezse, bağlamın kökündeki varsayılan Dockerfile varsayılır. Dockerfile belirtmek için dosya adını bağlamın köküne göre geçirin. Yes
context Kök dizin öğesine docker buildgeçirildi. Her görevin kök dizini paylaşılan bir workingDirectory olarak ayarlanır ve ilişkili Git kopyalanmış dizininin kökünü içerir. Hayır

Özellikler: derleme

Adım build türü aşağıdaki özellikleri destekler. Bu özelliklerin ayrıntılarını bu makalenin Görev adımı özellikleri bölümünde bulabilirsiniz.

Properties Type Zorunlu
detach bool İsteğe bağlı
disableWorkingDirectoryOverride bool İsteğe bağlı
entryPoint Dize İsteğe bağlı
env [dize, dize, ...] İsteğe bağlı
expose [dize, dize, ...] İsteğe bağlı
id Dize İsteğe bağlı
ignoreErrors bool İsteğe bağlı
isolation Dize İsteğe bağlı
keep bool İsteğe bağlı
network nesne İsteğe bağlı
ports [dize, dize, ...] İsteğe bağlı
pull bool İsteğe bağlı
repeat int İsteğe bağlı
retries int İsteğe bağlı
retryDelay int (saniye) İsteğe bağlı
secret nesne İsteğe bağlı
startDelay int (saniye) İsteğe bağlı
timeout int (saniye) İsteğe bağlı
volumeMount nesne İsteğe bağlı
when [dize, dize, ...] İsteğe bağlı
workingDirectory Dize İsteğe bağlı

Örnekler: derleme

Derleme görüntüsü - kökte bağlam

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 .

Derleme görüntüsü - alt dizindeki bağlam

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

ACR Görevlerinde dinamik değişken geçirme

Azure kapsayıcı kayıt defteri (ACR) görevleriyle çalışırken, komutuyla az acr task run bayrağını kullanarak --set görev tanımını değiştirmeden derleme işleminize farklı değerler geçirmeniz gerektiğini fark edebilirsiniz.

Örnek: Çalışma zamanında görüntü etiketini ayarlama

Görüntü etiketi için yer tutucusu olan bir acr-task.yml dosyada tanımlanmış bir ACR göreviniz olduğunu varsayalım:

steps:
  - build: -t $Registry/hello-world:{{.Values.tag}}

Aşağıdaki Azure CLI komutunu kullanarak görevi tetikleyebilir ve değişkeni v2 çalışma zamanında olarak ayarlayabilirsiniztag:

az acr task run --registry myregistry --name mytask --set tag=v2

Bu komut adlı mytask ACR görevini başlatır ve etiketi kullanarak v2 görüntüyü oluşturur ve dosyadaki acr-task.yml yer tutucuyu geçersiz kılır.

Bu yaklaşım CI/CD işlem hatlarınızda özelleştirmeye olanak sağlayarak, görev tanımlarını değiştirmeden parametreleri geçerli gereksinimlerinize göre dinamik olarak ayarlamanıza olanak tanır.

push

Kapsayıcı kayıt defterine bir veya daha fazla yerleşik veya yeniden etiketlenmiş görüntü gönderin. Azure Container Registry gibi özel kayıt defterlerine veya genel Docker Hub'a göndermeyi destekler.

Söz dizimi: gönderme

Adım push türü bir görüntü koleksiyonunu destekler. YAML koleksiyonu söz dizimi satır içi ve iç içe biçimleri destekler. Tek bir görüntü gönderme genellikle satır içi söz dizimi kullanılarak temsil edilir:

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

Daha fazla okunabilirlik için, birden çok görüntü gönderdiğinizde iç içe sözdizimini kullanın:

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

Özellikler: gönderme

Adım push türü aşağıdaki özellikleri destekler. Bu özelliklerin ayrıntılarını bu makalenin Görev adımı özellikleri bölümünde bulabilirsiniz.

Özellik Type Zorunlu
env [dize, dize, ...] İsteğe bağlı
id Dize İsteğe bağlı
ignoreErrors bool İsteğe bağlı
startDelay int (saniye) İsteğe bağlı
timeout int (saniye) İsteğe bağlı
when [dize, dize, ...] İsteğe bağlı

Örnekler: gönderme

Birden çok görüntü gönderme

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

Derleme, gönderme ve çalıştırma

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

Adım cmd türü bir kapsayıcı çalıştırır.

Sözdizimi: cmd

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

Özellikler: cmd

Adım cmd türü aşağıdaki özellikleri destekler:

Özellik Type Zorunlu
detach bool İsteğe bağlı
disableWorkingDirectoryOverride bool İsteğe bağlı
entryPoint Dize İsteğe bağlı
env [dize, dize, ...] İsteğe bağlı
expose [dize, dize, ...] İsteğe bağlı
id Dize İsteğe bağlı
ignoreErrors bool İsteğe bağlı
isolation Dize İsteğe bağlı
keep bool İsteğe bağlı
network nesne İsteğe bağlı
ports [dize, dize, ...] İsteğe bağlı
pull bool İsteğe bağlı
repeat int İsteğe bağlı
retries int İsteğe bağlı
retryDelay int (saniye) İsteğe bağlı
secret nesne İsteğe bağlı
startDelay int (saniye) İsteğe bağlı
timeout int (saniye) İsteğe bağlı
volumeMount nesne İsteğe bağlı
when [dize, dize, ...] İsteğe bağlı
workingDirectory Dize İsteğe bağlı

Bu özelliklerin ayrıntılarını bu makalenin Görev adımı özellikleri bölümünde bulabilirsiniz.

Örnekler: cmd

Hello-world görüntüsünü çalıştırma

Bu komut, Docker Hub'daki hello-world.yaml hello-world görüntüsüne başvuran görev dosyasını yürütür.

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

Bash görüntüsünü çalıştırın ve "merhaba dünya" ifadesini yankıla

Bu komut, Docker Hub'daki bash-echo.yaml bash görüntüsüne başvuran görev dosyasını yürütür.

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

Belirli bash görüntü etiketini çalıştırma

Belirli bir görüntü sürümünü çalıştırmak için içinde cmdetiketini belirtin.

Bu komut, Docker Hub'daki bash-echo-3.yaml bash:3.0 görüntüsüne başvuran görev dosyasını yürütür.

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

Özel görüntüleri çalıştırma

Adım cmd türü, standart docker run biçimi kullanarak görüntülere başvurur. Kayıt defteriyle önceden oluşturulmuş olmayan görüntülerin docker.io kaynaklandığı varsayılır. Önceki örnek eşit olarak şu şekilde gösterilebilir:

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

Standart docker run görüntü başvuru kuralını kullanarak herhangi cmd bir özel kayıt defterinden veya genel Docker Hub'dan görüntü çalıştırabilirsiniz. ACR Görevinin yürütülmekte olduğu kayıt defterindeki görüntülere başvuruyorsanız, herhangi bir kayıt defteri kimlik bilgisi belirtmeniz gerekmez.

  • Azure kapsayıcı kayıt defterinden bir görüntü çalıştırın. Aşağıdaki örnekte adlı myregistrybir kayıt defteriniz ve özel bir görüntüniz myimage:mytagolduğu varsayılır.

    version: v1.1.0
    steps:
        - cmd: myregistry.azurecr.io/myimage:mytag
    
  • Kayıt defteri başvurusunu Run değişkeni veya diğer adıyla genelleştirme

    Kayıt defteri adınızı bir acr-task.yaml dosyada sabit kodlamak yerine, Bir Çalıştırma değişkeni veya diğer ad kullanarak daha taşınabilir hale getirebilirsiniz. Değişken Run.Registry veya $Registry diğer ad çalışma zamanında görevin yürütülmekte olduğu kayıt defterinin adına genişletilir.

    Örneğin, önceki görevi herhangi bir Azure kapsayıcı kayıt defterinde çalışacak şekilde genelleştirmek için görüntü adındaki $Registry değişkenine başvurun:

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

Gizli dizi birimlerine erişme

özelliği, volumes birimlerin ve gizli dizi içeriklerinin bir görevde ve cmd adımları için build belirtilmesine izin verir. Her adımın içinde isteğe bağlı volumeMounts bir özellik, bu adımda kapsayıcıya bağlanacak birimleri ve ilgili kapsayıcı yollarını listeler. Gizli diziler, her birimin bağlama yolunda dosya olarak sağlanır.

Bir görevi yürütür ve iki gizli diziyi bir adıma bağlar: biri anahtar kasasında depolanır ve biri komut satırında belirtilir:

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

Görev adımı özellikleri

Her adım türü, türüne uygun çeşitli özellikleri destekler. Aşağıdaki tablo tüm kullanılabilir adım özelliklerini tanımlar. Tüm adım türleri tüm özellikleri desteklemez. Her adım türü için bu özelliklerden hangilerinin kullanılabilir olduğunu görmek için cmd, build ve push step type başvuru bölümlerine bakın.

Özellik Tür İsteğe bağlı Açıklama Default value
detach ikili Yes Çalıştırılırken kapsayıcının ayrılması gerekip gerekmediği. false
disableWorkingDirectoryOverride ikili Yes Geçersiz kılma işlevinin devre dışı bırakılıp devre dışı bırakılmayacağı workingDirectory . Kapsayıcının çalışma dizini üzerinde tam denetim sahibi olmak için bunu ile workingDirectory birlikte kullanın. false
entryPoint string Yes Bir adımın [ENTRYPOINT] kapsayıcısını geçersiz kılar. Hiçbiri
env [dize, dize, ...] Yes Adım için ortam değişkenlerini key=value tanımlayan biçimdeki dize dizisi. Hiçbiri
expose [dize, dize, ...] Yes Kapsayıcıdan kullanıma sunulan bağlantı noktaları dizisi. Hiçbiri
id string Yes Görev içindeki adımı benzersiz olarak tanımlar. Görevdeki diğer adımlar, ile whenbağımlılık denetimi gibi bir adıma idbaşvurabilir.

id aynı zamanda çalışan kapsayıcının adıdır. Görevdeki diğer kapsayıcılarda çalıştırılan işlemler, örneğin DNS ana bilgisayar adı olarak veya [id] docker günlükleriyle buna erişmek için öğesine başvurabilir id .
acb_step_%d, burada %d YAML dosyasındaki yukarıdan aşağı adımın 0 tabanlı dizinidir
ignoreErrors ikili Yes Kapsayıcı yürütme sırasında bir hata oluşup oluşmadığına bakılmaksızın adımın başarılı olarak işaretlenip işaretlenmeyeceği. false
isolation string Yes Kapsayıcının yalıtım düzeyi. default
keep ikili Yes Adım kapsayıcısının yürütmeden sonra saklanması gerekip gerekmediği. false
network nesne Yes Kapsayıcının çalıştığı bir ağı tanımlar. Hiçbiri
ports [dize, dize, ...] Yes Kapsayıcıdan konağa yayımlanan bağlantı noktaları dizisi. Hiçbiri
pull ikili Yes Herhangi bir önbelleğe alma davranışını önlemek için kapsayıcıyı yürütmeden önce çekmenin zorlanıp zorlanmayacağı. false
privileged ikili Yes Kapsayıcının ayrıcalıklı modda çalıştırılıp çalıştırılmayacağı. false
repeat int Yes Bir kapsayıcının yürütülmesini yinelemek için yeniden deneme sayısı. 0
retries int Yes Bir kapsayıcının yürütülememesi durumunda denenecek yeniden deneme sayısı. Yeniden deneme yalnızca kapsayıcının çıkış kodu sıfır değilse denenmiştir. 0
retryDelay int (saniye) Yes Bir kapsayıcının yürütülmesinin yeniden denenmesi arasındaki saniye cinsinden gecikme. 0
secret nesne Yes Azure kaynakları için bir Azure Key Vault gizli anahtarı veya yönetilen kimliği tanımlar. Hiçbiri
startDelay int (saniye) Yes Kapsayıcının yürütülmesini geciktirmek için saniye sayısı. 0
timeout int (saniye) Yes Bir adımın sonlandırılmadan önce yürütülebileceği en fazla saniye sayısı. 600
when [dize, dize, ...] Yes Bir adımın görev içindeki bir veya daha fazla adıma bağımlılığını yapılandırılır. Hiçbiri
user string Yes Kapsayıcının kullanıcı adı veya UID'si Hiçbiri
workingDirectory string Yes Bir adım için çalışma dizinini ayarlar. Varsayılan olarak, ACR Görevleri çalışma dizini olarak bir kök dizin oluşturur. Ancak, derlemenizde birkaç adım varsa, önceki adımlar aynı çalışma dizinini belirterek yapıtları sonraki adımlarla paylaşabilir. c:\workspace Windows veya /workspace Linux'ta

volumeMount

volumeMount nesnesi aşağıdaki özelliklere sahiptir.

Özellik Tür İsteğe bağlı Açıklama Default value
name Dize Hayır Bağlanacak birimin adı. Bir özelliğin adıyla volumes tam olarak eşleşmelidir. Hiçbiri
mountPath Dize hayır Kapsayıcıya dosya bağlamanın mutlak yolu. Hiçbiri

Örnekler: Görev adımı özellikleri

Örnek: kimlik

İşlevsel bir test görüntüsü oluşturarak iki görüntü oluşturun. Her adım, kendi özelliğinde görev başvurusundaki when diğer adımların benzersiz id bir tarafından tanımlanır.

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"]

Örnek: ne zaman

when özelliği, bir adımın görev içindeki diğer adımlara bağımlılığını belirtir. İki parametre değerini destekler:

  • when: ["-"] - Diğer adımlara bağımlılık olmadığını gösterir. Belirten when: ["-"] bir adım hemen yürütülmeye başlar ve eşzamanlı adım yürütmeyi etkinleştirir.
  • when: ["id1", "id2"]- Adımın "id1" ve id "id2" içeren id adımlara bağlı olduğunu gösterir. Bu adım hem "id1" hem de "id2" adımları tamamlanana kadar yürütülmeyecek.

Bir adımda belirtilmezse when , bu adım dosyadaki önceki adımın tamamlanmasına acr-task.yaml bağlıdır.

olmadan whensıralı adım yürütme:

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

ile whensıralı adım yürütme:

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"]

Paralel görüntüler derlemesi:

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: ["-"]

Paralel görüntü derlemesi ve bağımlı test:

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"]

Değişkenleri çalıştırma

ACR Görevleri, yürütürken görev adımları için kullanılabilen varsayılan bir değişken kümesi içerir. Bu değişkenlere biçimi {{.Run.VariableName}}kullanılarak erişilebilir. Burada VariableName aşağıdakilerden biridir:

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

Değişken adları genellikle kendi kendine açıklayıcıdır. Ayrıntılar, yaygın olarak kullanılan değişkenler için kullanılır. YAML sürümünden v1.1.0itibaren, çoğu çalıştırma değişkeninin yerine kısaltılmış, önceden tanımlanmış bir görev diğer adı kullanabilirsiniz. Örneğin, yerine {{.Run.Registry}}diğer adı kullanın $Registry .

Run.ID

aracılığıyla az acr task createoluşturulan görevlerin her Çalıştırma, aracılığıyla az acr runveya tetikleyici tabanlı yürütmesinin benzersiz bir kimliği vardır. Kimlik, şu anda yürütülmekte olan Çalıştır'ı temsil eder.

Genellikle bir görüntüyü benzersiz olarak etiketlemek için kullanılır:

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

Run.SharedVolume

Tüm görev adımlarının erişebildiği paylaşılan birimin benzersiz tanımlayıcısı. Birim, Windows veya /workspace Linux'a bağlanırc:\workspace.

Run.Registry

Kayıt defterinin tam sunucu adı. Genellikle görevin çalıştırıldığı kayıt defterine genel olarak başvurmak için kullanılır.

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

Run.RegistryName

Kapsayıcı kayıt defterinin adı. Genellikle tam sunucu adı gerektirmeyen görev adımlarında kullanılır. Örneğin, cmd kayıt defterlerinde Azure CLI komutlarını çalıştıran adımlar.

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

Çalıştır.Tarih

Çalıştırmanın başladığı geçerli UTC saati.

Run.Commit

GitHub deposuna yönelik bir işleme tarafından tetiklenen bir görev için işleme tanımlayıcısı.

Run.Branch

GitHub deposuna yönelik bir işleme tarafından tetiklenen bir görev için dal adı.

Diğer adlar

v1.1.0itibarıyla, ACR Görevleri yürütülürken görev adımlarının kullanabilecekleri diğer adları destekler. Diğer adlar kavram olarak bash ve diğer bazı komut kabuklarında desteklenen diğer adlara (komut kısayolları) benzerdir.

Diğer adla, tek bir sözcük girerek herhangi bir komutu veya komut grubunu (seçenekler ve dosya adları dahil) başlatabilirsiniz.

ACR Görevleri, önceden tanımlanmış birkaç diğer adı ve oluşturduğunuz özel diğer adları destekler.

Önceden tanımlanmış diğer adlar

Aşağıdaki görev diğer adları, çalıştırma değişkenleri yerine kullanılabilir:

Diğer ad Değişken çalıştırma
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

Görev adımlarında, aşağıdaki örnekte olduğu gibi yönergesiyle bir diğer adın $ önüne geçin:

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

Görüntü diğer adları

Aşağıdaki diğer adların her biri Microsoft Container Registry'de (MCR) kararlı bir görüntüye işaret eder. Bir yönerge kullanmadan bir Görev dosyasının cmd bölümünde bunların her birine başvurabilirsiniz.

Diğer ad Görsel
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

Aşağıdaki örnek görev, çalıştırma kayıt defterindeki depoda samples/hello-world 7 günden eski görüntü etiketlerini temizlemek için birkaç diğer ad kullanır:

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

Özel diğer ad

YAML dosyanızda özel bir diğer ad tanımlayın ve aşağıdaki örnekte gösterildiği gibi kullanın. Diğer ad yalnızca alfasayısal karakterler içerebilir. Diğer adı genişletmek için varsayılan yönerge karakterdir $ .

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

Özel diğer ad tanımları için uzak veya yerel bir YAML dosyasına bağlanabilirsiniz. Aşağıdaki örnek, Azure blob depolamadaki bir YAML dosyasına bağlantı sağlar:

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

Sonraki adımlar

Çok adımlı görevlere genel bakış için bkz. ACR Görevleri'nde çok adımlı derleme, test ve düzeltme eki görevleri çalıştırma.

Tek adımlı derlemeler için bkz. ACR Görevlerine genel bakış.