ACR Görevleri'nde çok adımlı derleme, test ve düzeltme eki görevleri çalıştırma
Çok adımlı görevler, çok adımlı, çok kapsayıcı tabanlı iş akışlarıyla ACR Görevlerinin tek görüntü derleme ve gönderme özelliğini genişletir. Seri veya paralel olarak birkaç görüntü oluşturmak ve göndermek için çok adımlı görevleri kullanın. Ardından bu görüntüleri tek bir görev çalıştırması içinde komut olarak çalıştırın. Her adım bir kapsayıcı görüntüsü derleme veya gönderme işlemini tanımlar ve kapsayıcının yürütülmesini de tanımlayabilir. Çok adımlı bir görevdeki her adım, yürütme ortamı olarak bir kapsayıcı kullanır.
Önemli
Önizlemede daha önce az acr build-task
komutuyla görev oluşturduysanız az acr task komutuyla bu görevleri yeniden oluşturmanız gerekebilir.
Örneğin, aşağıdaki mantığı otomatik hale getiren adımlarla bir görev çalıştırabilirsiniz:
- Web uygulaması görüntüsü oluşturma
- Web uygulaması kapsayıcısını çalıştırma
- Web uygulaması test görüntüsü oluşturma
- Çalışan uygulama kapsayıcısına karşı testler gerçekleştiren web uygulaması test kapsayıcısını çalıştırma
- Testler başarılı olursa Helm grafiği arşiv paketi oluşturun
- Yeni Helm grafiği arşiv paketini kullanarak bir
helm upgrade
gerçekleştirme
Tüm adımlar Azure'da gerçekleştirilir ve işin yükü Azure'ın işlem kaynaklarına devredilir ve altyapı yönetiminden kurtulabilirsiniz. Azure kapsayıcı kayıt defterinizin yanı sıra yalnızca kullandığınız kaynaklar için ödeme alırsınız. Fiyatlandırma hakkında bilgi için Azure Container Registry fiyatlandırma bölümündeki Kapsayıcı Derlemesi bölümüne bakın.
Yaygın görev senaryoları
Çok adımlı görevler aşağıdaki mantık gibi senaryoları etkinleştirir:
- Seri veya paralel olarak bir veya daha fazla kapsayıcı görüntüsü oluşturun, etiketleyin ve gönderin.
- Birim testi ve kod kapsamı sonuçlarını çalıştırın ve yakalayın.
- İşlevsel testleri çalıştırın ve yakalayın. ACR Görevleri birden fazla kapsayıcı çalıştırmayı ve aralarında bir dizi istek yürütmeyi destekler.
- Bir kapsayıcı görüntüsü derlemesinin ön/son adımları dahil olmak üzere görev tabanlı yürütme gerçekleştirin.
- Sık kullandığınız dağıtım altyapısıyla bir veya daha fazla kapsayıcıyı hedef ortamınıza dağıtın.
Çok adımlı görev tanımı
ACR Görevleri'ndeki çok adımlı bir görev, YAML dosyası içindeki bir dizi adım olarak tanımlanır. Her adım, bir veya daha fazla önceki adımın başarıyla tamamlanmasıyla ilgili bağımlılıkları belirtebilir. Aşağıdaki görev adımı türleri kullanılabilir:
build
: Seri veya paralel olarak bilindikdocker build
söz dizimini kullanarak bir veya daha fazla kapsayıcı görüntüsü oluşturun.push
: Yerleşik görüntüleri bir kapsayıcı kayıt defterine gönderin. genel Docker Hub olduğu gibi Azure Container Registry gibi özel kayıt defterleri de desteklenir.cmd
: Çalışan görev bağlamında işlev olarak çalışabilecek bir kapsayıcı çalıştırın. Parametreleri kapsayıcının[ENTRYPOINT]
öğesine geçirebilir ve env, detach ve diğer tanıdıkdocker run
parametreler gibi özellikleri belirtebilirsiniz. Adımcmd
türü, eşzamanlı kapsayıcı yürütmesi ile birim ve işlevsel test olanağı sağlar.
Aşağıdaki kod parçacıklarında bu görev adımı türlerinin nasıl birleştirildiği gösterilir. Çok adımlı görevler, bir Dockerfile dosyasından tek bir görüntü oluşturmak ve kayıt defterinize göndermek kadar basit olabilir; yaml dosyası şuna benzer:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Derleme, test etme, helm paketi ve helm dağıtımı adımlarını içeren bu kurgusal çok adımlı tanım gibi daha karmaşık da olabilir (kapsayıcı kayıt defteri ve Helm deposu yapılandırması gösterilmez):
version: v1.1.0
steps:
- id: build-web
build: -t $Registry/hello-world:$ID .
when: ["-"]
- id: build-tests
build: -t $Registry/hello-world-tests ./funcTests
when: ["-"]
- id: push
push: ["$Registry/helloworld:$ID"]
when: ["build-web", "build-tests"]
- id: hello-world-web
cmd: $Registry/helloworld:$ID
- id: funcTests
cmd: $Registry/helloworld:$ID
env: ["host=helloworld:80"]
- cmd: $Registry/functions/helm package --app-version $ID -d ./helm ./helm/helloworld/
- cmd: $Registry/functions/helm upgrade helloworld ./helm/helloworld/ --reuse-values --set helloworld.image=$Registry/helloworld:$ID
Çeşitli senaryolar için çok adımlı görev YAML dosyaları ve Dockerfile'lar için görev örneklerine bakın.
Örnek görev çalıştırma
Görevler hem "hızlı çalıştırma" adı verilen el ile yürütmeyi hem de Git işleme veya temel görüntü güncelleştirmesinde otomatik yürütmeyi destekler.
Bir görevi çalıştırmak için, önce görevin adımlarını bir YAML dosyasında tanımlarsınız, ardından az acr run Azure CLI komutunu yürütürsiniz.
Örnek görev YAML dosyası kullanarak görev çalıştıran örnek bir Azure CLI komutu aşağıda verilmiştir. Adımları bir görüntü oluşturur ve ardından iter. komutunu çalıştırmadan önce kendi Azure kapsayıcı kayıt defterinizin adıyla güncelleştirin \<acrName\>
.
az acr run --registry <acrName> -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Görevi çalıştırdığınızda çıkış, YAML dosyasında tanımlanan her adımın ilerleme durumunu göstermelidir. Aşağıdaki çıkışta adımlar ve acb_step_1
olarak acb_step_0
görünür.
az acr run --registry myregistry -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Sending context to registry: myregistry...
Queued a run with ID: yd14
Waiting for an agent...
2018/09/12 20:08:44 Using acb_vol_0467fe58-f6ab-4dbd-a022-1bb487366941 as the home volume
2018/09/12 20:08:44 Creating Docker network: acb_default_network
2018/09/12 20:08:44 Successfully set up Docker network: acb_default_network
2018/09/12 20:08:44 Setting up Docker configuration...
2018/09/12 20:08:45 Successfully set up Docker configuration
2018/09/12 20:08:45 Logging in to registry: myregistry.azurecr-test.io
2018/09/12 20:08:46 Successfully logged in
2018/09/12 20:08:46 Executing step: acb_step_0
2018/09/12 20:08:46 Obtaining source code and scanning for dependencies...
2018/09/12 20:08:47 Successfully obtained source code and scanned for dependencies
Sending build context to Docker daemon 109.6kB
Step 1/1 : FROM hello-world
---> 4ab4c602aa5e
Successfully built 4ab4c602aa5e
Successfully tagged myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:48 Executing step: acb_step_1
2018/09/12 20:08:48 Pushing image: myregistry.azurecr-test.io/hello-world:yd14, attempt 1
The push refers to repository [myregistry.azurecr-test.io/hello-world]
428c97da766c: Preparing
428c97da766c: Layer already exists
yd14: digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812 size: 524
2018/09/12 20:08:55 Successfully pushed image: myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:55 Step id: acb_step_0 marked as successful (elapsed time in seconds: 2.035049)
2018/09/12 20:08:55 Populating digests for step id: acb_step_0...
2018/09/12 20:08:57 Successfully populated digests for step id: acb_step_0
2018/09/12 20:08:57 Step id: acb_step_1 marked as successful (elapsed time in seconds: 6.832391)
The following dependencies were found:
- image:
registry: myregistry.azurecr-test.io
repository: hello-world
tag: yd14
digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812
runtime-dependency:
registry: registry.hub.docker.com
repository: library/hello-world
tag: latest
digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
git: {}
Run ID: yd14 was successful after 19s
Git işleme veya temel görüntü güncelleştirmesinde otomatik derlemeler hakkında daha fazla bilgi için Görüntü derlemelerini otomatikleştirme ve Temel görüntü güncelleştirmesi derlemeleri öğretici makalelerine bakın.
Sonraki adımlar
Çok adımlı görev başvurusu ve örneklerini burada bulabilirsiniz:
- Görev başvurusu - Görev adımı türleri, özellikleri ve kullanımı.
- Görev örnekleri - Basit ve karmaşık olan çeşitli senaryolar için örnek
task.yaml
ve Docker dosyaları. - Cmd deposu - ACR görevleri için komut olarak kapsayıcı koleksiyonu.