Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ACR Görevleri, hızlı bir göreve ek olarak, bir Git deposuna kaynak kodu kaydettiğinizde bulutta otomatik Docker kapsayıcı görüntüsü derlemelerini destekler. ACR Görevleri için desteklenen Git bağlamları genel veya özel GitHub veya Azure Depoları'dır.
Note
ACR Görevleri şu anda GitHub Enterprise depolarında commit ya da pull request tetikleyicilerini desteklememektedir.
Bu öğreticide, ACR göreviniz bir Git deposuna kaynak kodu kaydettiğinizde Dockerfile'da belirtilen tek bir kapsayıcı görüntüsü oluşturur ve yayar. Kod işlemede birden çok kapsayıcı oluşturma, gönderme ve isteğe bağlı olarak test etme adımlarını tanımlamak üzere YAML dosyası kullanan çok adımlı bir görev oluşturmak için bkz . Öğretici: Kaynak kodu işlerken bulutta çok adımlı kapsayıcı iş akışı çalıştırma. ACR Görevlerine genel bir bakış için bkz. ACR Görevleri ile işletim sistemi ve framework yamalarını otomatikleştirme
Bu öğreticide şu konular ele alınacaktır:
- Görev oluştur
- Görevi test edin
- Görev durumunu görüntüleme
- Görevi bir kod işleme ile tetikleme
Bu öğreticide , önceki öğreticideki adımları zaten tamamladığınız varsayılır. Henüz yapmadıysanız, devam etmeden önce önceki öğreticinin Önkoşullar bölümündeki adımları tamamlayın.
Prerequisites
Örnek kodu alma
Önceki öğreticideki adımları tamamladığınız ve örnek havuzu fork'layıp klonladığınız varsayılmaktadır. Henüz yapmadıysanız, devam etmeden önce önceki öğreticinin Önkoşullar bölümündeki adımları tamamlayın.
Container kayıt defteri
Bu kılavuzu tamamlamak için, Azure aboneliğinizde bir Azure container kayıt defteri bulunmalıdır. Kayıt defterine ihtiyacınız varsa önceki öğreticiye veya Hızlı Başlangıç: Azure CLI kullanarak kapsayıcı kayıt defteri oluşturma bölümüne bakın.
GitHub kişisel erişim belirteci oluşturma
Git deposuna yönelik bir işlemedeki bir görevi tetikleyebilmek için, ACR Görevlerinin depoya erişmek için kişisel erişim belirtecine (PAT) sahip olması gerekir. Henüz bir PAT'niz yoksa GitHub'da bir pat oluşturmak için şu adımları izleyin:
GitHub'da kişisel erişim belirteci oluşturma sayfasına gidin.
Belirteç için kısa bir açıklama girin; örneğin, "ACR Görevleri Tanıtımı"
ACR'nin depoya erişmesi için kapsamları seçin. Bir genel depoya erişmek için bu öğreticide olduğu gibi, depo altında repo:status ve public_repo ayarlarını etkinleştirin.
Note
Özel depoya erişmek üzere pat oluşturmak için tam depo denetiminin kapsamını seçin.
Belirteç oluştur düğmesini seçin (parolanızı onaylamanız istenebilir)
Oluşturulan belirteci kopyalayıp güvenli bir konuma kaydedin (aşağıdaki bölümde bir görev tanımlarken bu belirteci kullanırsınız)
Azure CLI için ortamınızı hazırlayın
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Derleme görevini oluşturma
ACR Görevlerinin taahhüt durumunu okumasını ve depoda web kancaları oluşturmasını sağlamak için gereken adımları tamamladığınıza göre, depoya yapılan taahhütler üzerinde konteyner imajı derlemesini tetikleyen bir görev oluşturabilirsiniz.
İlk olarak, bu kabuk ortam değişkenlerini ortamınıza uygun değerlerle doldurun. Bu adım kesinlikle gerekli değildir, ancak bu öğreticideki çok satırlı Azure CLI komutlarını yürütmeyi biraz daha kolaylaştırır. Bu ortam değişkenlerini doldurmazsanız, her değeri örnek komutlarda göründüğü her yerde el ile değiştirmeniz gerekir.
ACR_NAME=<registry-name> # The name of your Azure container registry
GIT_USER=<github-username> # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the previous section
Şimdi aşağıdaki az acr task create komutunu yürüterek görevi oluşturun.
Note
Aşağıdaki örnekte kullanılan Dockerfile, Docker Hub'daki bir genel temel kapsayıcı görüntüsüne bağlıdır. Genel içerik kullanırken güvenilirliği artırmak için, görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin ve Dockerfile'ınızı özel olarak yönetilen temel görüntünüzü kullanacak şekilde güncelleştirin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.
az acr task create \
--registry $ACR_NAME \
--name taskhelloworld \
--image helloworld:{{.Run.ID}} \
--context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
--file Dockerfile \
--git-access-token $GIT_PAT
Bu görev, belirtilen depodaki --context dalına kod işlendiğinde, ACR Görevleri'nin bu daldaki koddan kapsayıcı görüntüsünü oluşturacağını belirtir. Depo kökünden --file tarafından belirtilen Dockerfile, imajı derlemek için kullanılır. bağımsız değişkeni, --image görüntünün etiketinin {{.Run.ID}} sürüm bölümü için parametreli bir değer belirtir, bu da yerleşik görüntünün belirli bir derlemeyle ilişkili olmasını ve benzersiz bir şekilde etiketlenmesini sağlar.
Başarılı bir az acr task create komutunun çıktısı aşağıdakine benzer:
{
"agentConfiguration": {
"cpu": 2
},
"creationDate": "2010-11-19T22:42:32.972298+00:00",
"id": "/subscriptions/<Subscription ID>/resourceGroups/myregistry/providers/Microsoft.ContainerRegistry/registries/myregistry/tasks/taskhelloworld",
"location": "westcentralus",
"name": "taskhelloworld",
"platform": {
"architecture": "amd64",
"os": "Linux",
"variant": null
},
"provisioningState": "Succeeded",
"resourceGroup": "myregistry",
"status": "Enabled",
"step": {
"arguments": [],
"baseImageDependencies": null,
"contextPath": "https://github.com/gituser/acr-build-helloworld-node#main",
"dockerFilePath": "Dockerfile",
"imageNames": [
"helloworld:{{.Run.ID}}"
],
"isPushEnabled": true,
"noCache": false,
"type": "Docker"
},
"tags": null,
"timeout": 3600,
"trigger": {
"baseImageTrigger": {
"baseImageTriggerType": "Runtime",
"name": "defaultBaseimageTriggerName",
"status": "Enabled"
},
"sourceTriggers": [
{
"name": "defaultSourceTriggerName",
"sourceRepository": {
"branch": "main",
"repositoryUrl": "https://github.com/gituser/acr-build-helloworld-node#main",
"sourceControlAuthProperties": null,
"sourceControlType": "GitHub"
},
"sourceTriggerEvents": [
"commit"
],
"status": "Enabled"
}
]
},
"type": "Microsoft.ContainerRegistry/registries/tasks"
}
Derleme görevini test etme
Artık yapınızı tanımlayan bir göreviniz var. Derleme işlem hattını test etmek için az acr task run komutunu yürüterek derlemeyi el ile tetikleyin:
az acr task run --registry $ACR_NAME --name taskhelloworld
Varsayılan olarak, az acr task run komutu yürüttüğünüzde komut günlük çıkışını konsolunuza akışla aktarır. Çıkış, önemli adımları gösterecek şekilde özetlenir.
2023/11/19 22:51:00 Using acb_vol_9ee1f28c-4fd4-43c8-a651-f0ed027bbf0e as the home volume
2023/11/19 22:51:00 Setting up Docker configuration...
2023/11/19 22:51:02 Successfully set up Docker configuration
2023/11/19 22:51:02 Logging in to registry: myregistry.azurecr.io
2023/11/19 22:51:03 Successfully logged in
2023/11/19 22:51:03 Executing step: build
2023/11/19 22:51:03 Obtaining source code and scanning for dependencies...
2023/11/19 22:51:05 Successfully obtained source code and scanned for dependencies
Sending build context to Docker daemon 23.04kB
Step 1/5 : FROM node:15-alpine
[...]
Step 5/5 : CMD ["node", "/src/server.js"]
---> Running in 7382eea2a56a
Removing intermediate container 7382eea2a56a
---> e33cd684027b
Successfully built e33cd684027b
Successfully tagged myregistry.azurecr.io/helloworld:da2
2023/11/19 22:51:11 Executing step: push
2023/11/19 22:51:11 Pushing image: myregistry.azurecr.io/helloworld:da2, attempt 1
The push refers to repository [myregistry.azurecr.io/helloworld]
4a853682c993: Preparing
[...]
4a853682c993: Pushed
[...]
da2: digest: sha256:c24e62fd848544a5a87f06ea60109dbef9624d03b1124bfe03e1d2c11fd62419 size: 1366
2023/11/19 22:51:21 Successfully pushed image: myregistry.azurecr.io/helloworld:da2
2023/11/19 22:51:21 Step id: build marked as successful (elapsed time in seconds: 7.198937)
2023/11/19 22:51:21 Populating digests for step id: build...
2023/11/19 22:51:22 Successfully populated digests for step id: build
2023/11/19 22:51:22 Step id: push marked as successful (elapsed time in seconds: 10.180456)
The following dependencies were found:
- image:
registry: myregistry.azurecr.io
repository: helloworld
tag: da2
digest: sha256:c24e62fd848544a5a87f06ea60109dbef9624d03b1124bfe03e1d2c11fd62419
runtime-dependency:
registry: registry.hub.docker.com
repository: library/node
tag: 9-alpine
digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
git:
git-head-revision: 68cdf2a37cdae0873b8e2f1c4d80ca60541029bf
Run ID: ca6 was successful after 27s
Bir taahhüt ile derleme tetiklemek
Görevi el ile çalıştırarak test etmiş olduğunuza göre, bir kaynak kodu değişikliğiyle otomatik olarak tetikleyin.
İlk olarak, deponun yerel kopyanızı içeren dizinde olduğunuzdan emin olun:
cd acr-build-helloworld-node
Ardından, GitHub'da depo çatalınıza yeni bir dosya oluşturmak, işlemek ve göndermek için aşağıdaki komutları yürütebilirsiniz:
echo "Hello World!" > hello.txt
git add hello.txt
git commit -m "Testing ACR Tasks"
git push origin main
Komutu yürütürken git push GitHub kimlik bilgilerinizi sağlamanız istenebilir. GitHub kullanıcı adınızı girin ve parola için daha önce oluşturduğunuz kişisel erişim belirtecini (PAT) girin.
Username for 'https://github.com': <github-username>
Password for 'https://githubuser@github.com': <personal-access-token>
Depoya bir commit gönderdiğinizde, ACR Görevleri tarafından oluşturulan web kancası tetiklenir ve Azure Container Registry'de bir derleme başlatılır. Yapı ilerlemesini doğrulamak ve izlemek için mevcut görevin günlüklerini görüntüleyin.
az acr task logs --registry $ACR_NAME
Çıktı, şu anda yürütülmekte olan (veya en son yürütülmüş) görevi gösteren aşağıdaki biçime benzerdir:
Showing logs of the last created run.
Run ID: ca7
[...]
Run ID: ca7 was successful after 38s
Derlemeleri listeleme
ACR Görevlerinin kayıt defterinizde tamamlamış olduğu görev çalıştırmalarının listesini görmek için az acr task list-runs komutunu çalıştırın:
az acr task list-runs --registry $ACR_NAME --output table
Komutun çıktısı aşağıdakine benzer şekilde görünmelidir. ACR Görevlerinin yürüttüğü çalıştırmalar görüntülenir ve en son görevin TRIGGER sütununda "Git Commit" görünür:
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- --------- -------------------- ----------
ca7 taskhelloworld linux Succeeded Commit 2023-11-19T22:54:34Z 00:00:29
ca6 taskhelloworld linux Succeeded Manual 2023-11-19T22:51:47Z 00:00:24
ca5 linux Succeeded Manual 2023-11-19T22:23:42Z 00:00:23
Sonraki Adımlar
Bu öğreticide, kaynak kodu bir Git deposuna işlerken Azure'da kapsayıcı görüntüsü derlemelerini otomatik olarak tetikleyen bir görevin nasıl kullanılacağını öğrendiniz. Kapsayıcı görüntüsünün temel görüntüsü güncellendiğinde derlemeleri tetikleyen görevlerin nasıl oluşturulacağını öğrenmek için bir sonraki eğitime geçin.