إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
بالإضافة إلى مهمة سريعة، يدعم ACR Tasks بناء صور حاويات Docker التلقائية في السحابة عند التزام الشيفرة المصدرية في مستودع Git. تشمل سياقات Git المدعومة لمهام ACR GitHub أو Azure Repos العامة أو الخاصة.
ملاحظة
حاليا، لا يدعم ACR Tasks محفزات الالتزام أو سحب الطلبات في مستودعات GitHub Enterprise.
في هذا الدرس، تقوم مهمة ACR الخاصة بك ببناء ودفع صورة حاوية واحدة محددة في ملف Docker عند التزام كود المصدر في مستودع Git. لإنشاء مهمة متعددة الخطوات تستخدم ملف YAML لتحديد خطوات لبناء ودفع واختبار عدة حاويات على التزام الكود، راجع التعليم: تشغيل سير عمل حاويات متعدد الخطوات في السحابة عند التزام الشيفرة المصدرية. للحصول على نظرة عامة على مهام ACR، راجع أتمتة نظام التشغيل وتصحيح الإطار مع مهام ACR
في هذا البرنامج التعليمي:
- إنشَاء مهمة
- اختبر المهمة
- عرض حالة المهمة
- تفعيل المهمة من خلال التزام كود
يفترض هذا الدرس أنك قد أنهيت بالفعل الخطوات في الدرس السابق. إذا لم تفعل ذلك بعد، أكمل الخطوات في قسم المتطلبات المسبقة في الدرس السابق قبل المتابعة.
المتطلبات الأساسية
الحصول على نموذج التعليمات البرمجية
يفترض هذا الدرس أنك قد أنهيت بالفعل الخطوات في الدرس السابق، وقمت بتفرع ونسخ مستودع العينات. إذا لم تفعل ذلك بعد، أكمل الخطوات في قسم المتطلبات المسبقة في الدرس السابق قبل المتابعة.
سجل الحاوية
يجب أن يكون لديك سجل حاويات Azure ضمن اشتراكك في Azure لإكمال هذا الدرس. إذا كنت بحاجة إلى سجل (ريجلي)، راجع الدرس السابق، أو Quickstart: إنشاء سجل حاوية باستخدام Azure CLI.
إنشاء رمز وصول شخصي ل GitHub
لتفعيل مهمة على التزام في مستودع Git، تحتاج مهام ACR إلى رمز وصول شخصي (PAT) للوصول إلى المستودع. إذا لم يكن لديك PAT بالفعل، اتبع هذه الخطوات لإنشاء نموذج في GitHub:
اذهب إلى صفحة إنشاء رموز الوصول الشخصي على GitHub.
أدخل وصفا قصيرا للرمز، على سبيل المثال: "عرض مهام ACR"
اختر نطاقات ACR للوصول إلى المستودع. للوصول إلى مستودع عام كما في هذا الدرس، تحت الريبو، قم بتمكين repo:status و public_repo
ملاحظة
لإنشاء PAT للوصول إلى مستودع خاص ، اختر النطاق للتحكم الكامل في المستودعات .
اختر زر توليد الرمز (قد يطلب منك تأكيد كلمة المرور الخاصة بك)
انسخ وحفظ الرمز الذي تم إنشاؤه في مكان آمن (تستخدم هذا الرمز عند تحديد مهمة في القسم التالي)
إعداد البيئة الخاصة بك لـ Azure CLI
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
أنشئ مهمة البناء
الآن بعد أن أكملت الخطوات المطلوبة لتمكين مهام ACR لقراءة حالة الالتزام وإنشاء webhooks في المستودع، يمكنك إنشاء مهمة تفعل بناء صورة الحاوية على الالتزامات في المستودع.
أولا، قم بتعبئة هذه المتغيرات البيئية الهيكلية بقيم مناسبة لبيئتك. هذه الخطوة ليست مطلوبة بالضرورة، لكنها تجعل تنفيذ أوامر واجهة Azure متعددة الأسطر في هذا الدرس أسهل قليلا. إذا لم تملأ هذه المتغيرات البيئية، يجب عليك استبدال كل قيمة يدويا أينما ظهرت في أوامر المثال.
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
الآن، أنشئ المهمة بتنفيذ أمر إنشاء مهمة az acr التالية.
ملاحظة
يعتمد ملف Docker المستخدَم في المثال التالي على صورة حاوية قاعدة عامة من Docker Hub. لتحسين الموثوقية عند استخدام المحتوى العام، قم باستيراد الصورة وإدارتها في سجل حاوية Azure خاص، وتحديث Dockerfile الخاص بك لاستخدام الصورة الأساسية المُدارة بشكل خاص. تعرف على المزيد حول العمل مع الصور العامة.
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
تحدد هذه المهمة أن أي كود زمني يلتزم بالفرع الرئيسي في المستودع المحدد بواسطة --context، ستبني مهام ACR صورة الحاوية من الكود في ذلك الفرع. يتم استخدام ملف Dockerfile المحدد بواسطة --file من جذر المستودع لبناء الصورة. تحدد الوسيطة --image قيمة معلمية ل {{.Run.ID}} لجزء الإصدار من وسم الصورة، مما يضمن أن الصورة المبنية ترتبط ببناء محدد، ويتم وسمها بشكل فريد.
الناتج عن أمر إنشاء مهمة az acr الناجح مشابه للأوامر التالية:
{
"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"
}
اختبار مهمة البناء
الآن لديك مهمة تحدد بناء البناء. لاختبار خط أنابيب البناء، قم بتشغيل بناء يدويا عن طريق تنفيذ أمر تشغيل مهمة az acr :
az acr task run --registry $ACR_NAME --name taskhelloworld
افتراضيا، يقوم الأمر az acr task run ببث مخرجات السجل إلى جهازك عند تنفيذ الأمر. يتم اختصار المخرج لعرض الخطوات الرئيسية.
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
تفعيل بناء مع التزام
الآن بعد أن اختبرت المهمة بتشغيلها يدويا، قم بتفعيلها تلقائيا عند تغيير شفرة المصدر.
أولا، تأكد من وجودك في الدليل الذي يحتوي على نسختك المحلية من المستودع:
cd acr-build-helloworld-node
بعد ذلك، نفذ الأوامر التالية لإنشاء والتزام ودفع ملف جديد إلى فرع المستودع على GitHub:
echo "Hello World!" > hello.txt
git add hello.txt
git commit -m "Testing ACR Tasks"
git push origin main
قد يطلب منك تقديم بيانات اعتماد GitHub الخاصة بك عند تنفيذ الأمر git push . أدخل اسم المستخدم الخاص بك على GitHub، وأدخل رمز الوصول الشخصي (PAT) الذي أنشأته سابقا لكلمة المرور.
Username for 'https://github.com': <github-username>
Password for 'https://githubuser@github.com': <personal-access-token>
بمجرد أن تدفع التزاما إلى مستودعك، يقوم الرابط الذي أنشأه ACR Tasks بتشغيل ويبدأ بناء في Azure Container Registry. عرض السجلات الخاصة بالمهمة الجارية حاليا للتحقق من تقدم البناء ومراقبته:
az acr task logs --registry $ACR_NAME
الإخراج مشابه للمهمة التالية، حيث تظهر المهمة المنفذة حاليا (أو آخر مهمة تم تنفيذها):
Showing logs of the last created run.
Run ID: ca7
[...]
Run ID: ca7 was successful after 38s
بناءات القوائم
لرؤية قائمة بالمهام التي أكملها ACR Tasks لسجل السجل الخاص بك، قم بتشغيل أمر az acr task list-run :
az acr task list-runs --registry $ACR_NAME --output table
يجب أن يظهر الناتج من الأمر مشابها لما يلي. يتم عرض التشغيلات التي نفذها ACR Tasks، ويظهر "Git Commit" في عمود TRIGGER لأحدث مهمة:
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
الخطوات التالية
في هذا الدرس، تعلمت كيفية استخدام مهمة لتفعيل بناءات صور الحاوية تلقائيا في Azure عند التزام كود المصدر في مستودع Git. انتقل إلى الدرس التالي لتتعلم كيفية إنشاء مهام تفعل بناء البناء عند تحديث صورة الحاوية الأساسية.