ACR Görevlerinde ç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 çeşitli görüntüler 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 bir 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ştirilerek işi Azure'ın işlem kaynaklarına devrederek 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ırmasının 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:
- Bir veya daha fazla kapsayıcı görüntüsünü seri veya paralel olarak derleyin, 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, aralarında bir dizi istek yürüterek birden fazla kapsayıcı çalıştırmayı destekler.
- 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çinde bir dizi adım olarak tanımlanır. Her adım, önceki bir veya daha fazla 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 tanıdıkdocker 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. Azure Container Registry gibi özel kayıt defterleri, genel Docker Hub'ı gibi desteklenir.cmd
: Çalışan görev bağlamında işlev olarak çalışabilecek şekilde 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ütme ile birim ve işlevsel test sağlar.
Aşağıdaki kod parçacıklarında bu görev adımı türlerinin nasıl birleştirildiği gösterilmektedir. Çok adımlı görevler, bir Dockerfile'dan tek bir görüntü oluşturmak ve kayıt defterinize göndermek kadar basit olabilir ve şuna benzer bir YAML dosyasıyla:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Derleme, test, 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" olarak adlandırılan 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ürsunuz.
Örnek görev YAML dosyası kullanarak görev çalıştıran örnek bir Azure CLI komutu aşağıda verilmiştir. Adımları oluşturulur ve ardından bir görüntü gönderebilirsiniz. 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ışta YAML dosyasında tanımlanan her adımın ilerleme durumu gösterilmelidir. 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ştirme derlemeleri öğretici makalelerine bakın.
Sonraki adımlar
Çok adımlı görev başvurusu ve örnekleri 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.