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ı ve çok Kapsayıcılı iş akışlarıyla ACR görevlerinin tek görüntü derleme ve gönderim yeteneklerini genişletir. Birden çok adımlı görevleri kullanarak, seriler veya paralel olarak birden çok görüntü oluşturun ve gönderin. Sonra 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ü oluşturma veya itme işlemini tanımlar ve bir kapsayıcının yürütülmesini de tanımlayabilir. Çok adımlı bir görevdeki her bir 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ığı otomatikleştiren adımlarla bir görevi ç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ırın
- Testler başarılı olursa bir Helu grafik arşiv paketi oluşturun
helm upgradeYeni helmchart arşiv paketini kullanarak bir gerçekleştir
Tüm adımlar Azure 'da gerçekleştirilir, iş yükünü Azure 'un işlem kaynaklarına devrederek ve altyapıyı altyapı yönetiminden serbest bırakır. Azure Container Registry 'nizin yanı sıra, yalnızca kullandığınız kaynaklar için ödeme yaparsınız. Fiyatlandırma hakkında daha fazla bilgi için Azure Container Registry fiyatlandırmasıIçindeki kapsayıcı derlemesi bölümüne bakın.
Ortak görev senaryoları
Çok adımlı görevler aşağıdaki mantık gibi senaryoları etkinleştirir:
- Dizide 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ırma ve yakalama. ACR görevleri birden fazla kapsayıcıyı çalıştırmayı, aralarında bir dizi isteği 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.
- En sevdiğiniz dağıtım altyapısından hedef ortamınıza bir veya daha fazla kapsayıcı dağıtın.
Çok adımlı görev tanımı
ACR görevlerinde ç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ına ilişkin bağımlılıkları belirtebilir. Aşağıdaki görev adımı türleri kullanılabilir:
build: Tanıdık sözdizimini kullanarak veya paralel olarak bir veya daha fazla kapsayıcı görüntüsü oluşturundocker build.push: Bir kapsayıcı kayıt defterine oluşturulan görüntüleri gönderin. Azure Container Registry gibi özel kayıt defterleri, genel Docker Hub olduğu gibi desteklenir.cmd: Çalışan görevin bağlamı içinde işlev olarak çalışabilme gibi bir kapsayıcı çalıştırın. Parametreleri kapsayıcıya geçirebilir[ENTRYPOINT]ve env, detach ve diğer tanıdık parametreler gibi özellikleri belirtebilirsinizdocker run.cmdAdım türü, eşzamanlı kapsayıcı yürütmesi ile birim ve işlevsel teste olanak tanıyor.
Aşağıdaki kod parçacıkları, bu görev adımı türlerinin nasıl birleştirileceğini gösterir. Çok adımlı görevler, bir Dockerfile 'dan tek bir görüntü oluşturup kayıt defterinize, aşağıdakine benzer bir YAML dosyası ile göndermek kadar basit olabilir:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Ya da daha karmaşık olan bu kurgusal çok adımlı tanım, derleme, test, helmpackage ve Held dağıtımı (kapsayıcı kayıt defteri ve Held depo yapılandırması gösterilmez) için adımları içerir:
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 bkz. çok adımlı görev YAML dosyaları ve Dockerfiles için görev örnekleri .
Örnek görev çalıştırma
Görevler, "hızlı çalışma" adı verilen ve git işlemesinde veya temel görüntü güncelleştirmesinde otomatik yürütme olarak adlandırılan el ile yürütmeyi destekler.
Bir görevi çalıştırmak için önce görevin adımlarını bir YAML dosyasında tanımlamanız, sonra da az ACR RunAzure CLI komutunu yürütmeniz gerekir.
Örnek bir görev YAML dosyası kullanarak bir görevi çalıştıran örnek bir Azure CLı komutu aşağıda verilmiştir. Adımları bir görüntü oluşturur ve ardından gönderir. \<acrName\>Komutunu çalıştırmadan önce kendi Azure Container Registry 'nizin adıyla güncelleştirin.
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, çıktıda YAML dosyasında tanımlanan her adımın ilerleme durumu gösterilmelidir. Aşağıdaki çıktıda, adımlar ve olarak görünür acb_step_0 acb_step_1 .
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şlemesinde veya temel görüntü güncelleştirmesinde otomatik yapılar hakkında daha fazla bilgi için bkz. Otomatik görüntü yapıları ve temel görüntü güncelleştirme derleme öğreticisi makaleleri.
Sonraki adımlar
Çok adımlı görev başvurusunu ve örnekleri buradan bulabilirsiniz:
- Görev başvurusu -görev adımı türleri, özellikleri ve kullanımı.
- Görev örnekleri -
task.yamlçok çeşitli senaryolar Için örnek ve Docker dosyaları, basit-karmaşık. - Cmd deposu -ACR görevleri için komut olarak kapsayıcı koleksiyonu.