مرجع مهام ACR: YAML
يوفر تعريف المهام متعدد الخطوات في ACR Tasks حساباً بدائياً مرتكزاً على الحاوية، يركز على بناء الحاويات واختبارها وتصحيحها. تغطي هذه المقالة الأوامر والمعلمات والخصائص وبناء الجملة لملفات YAML التي تحدد المهام متعددة الخطوات.
تحتوي هذه المقالة على مرجع لإنشاء ملفات YAML لمهام متعددة الخطوات لـ ACR Tasks. إذا كنت ترغب في مقدمة لـ ACR Tasks، راجع نظرة عامة على ACR Tasks.
تنسيق ملف acr-task.yaml
تدعم ACR Tasks إعلان المهام متعدد الخطوات في بناء جملة YAML القياسية. أنت تحدد خطوات المهمة في ملف YAML. يمكنك بعد ذلك تشغيل المهمة يدوياً عن طريق تمرير الملف إلى الأمر az acr run. أو استخدم الملف لإنشاء مهمة مع az acr task create التي يتم تشغيلها تلقائيا على تثبيت Git أو تحديث صورة أساسية أو جدول زمني. على الرغم من أن هذه المقالة تشير إلى acr-task.yaml
على أنه الملف الذي يحتوي على الخطوات، إلا أن ACR Tasks تدعم أي اسم ملف صالح مع ملحق مدعوم.
العناصر الأساسية acr-task.yaml
ذات المستوى الأعلى هي خصائص المهمة وأنواع الخطوات وخصائص الخطوة:
- تنطبق خصائص المهمة على كافة الخطوات خلال تنفيذ المهمة. هناك العديد من خصائص المهام العمومية، بما في ذلك:
version
stepTimeout
workingDirectory
- تمثل أنواع خطوات المهام أنواع الإجراءات التي يمكن تنفيذها في مهمة. هناك ثلاثة أنواع من الخطوات:
build
push
cmd
- خصائص خطوة المهمة هي المعلمات التي تنطبق على خطوة فردية. هناك العديد من خصائص الخطوات، بما في ذلك:
startDelay
timeout
when
- ...وأكثر من ذلك بكثير.
يتبع التنسيق الأساسي لملف acr-task.yaml
، بما في ذلك بعض خصائص الخطوة الشائعة. على الرغم من أنه لا يمثل تمثيلاً شاملاً لجميع خصائص الخطوة المتاحة أو استخدام نوع الخطوة، إلا أنه يوفر نظرة عامة سريعة على تنسيق الملف الأساسي.
version: # acr-task.yaml format version.
stepTimeout: # Seconds each step may take.
steps: # A collection of image or container actions.
- build: # Equivalent to "docker build," but in a multi-tenant environment
- push: # Push a newly built or retagged image to a registry.
when: # Step property that defines either parallel or dependent step execution.
- cmd: # Executes a container, supports specifying an [ENTRYPOINT] and parameters.
startDelay: # Step property that specifies the number of seconds to wait before starting execution.
ملحقات اسم ملف المهمة المعتمدة
حجزت ACR Tasks عدة ملحقات لاسم الملف، بما في ذلك .yaml
، الذي سيتم معالجته كملف مهمة. يعتبر أي ملحق غير موجود في القائمة التالية من قبل ACR Tasks ملف Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML هو تنسيق الملف الوحيد المعتمد حالياW من قبل ACR Tasks. ملحقات اسم الملف الأخرى محجوزة للدعم المستقبلي المحتمل.
تشغيل مهام العينة
هناك العديد من ملفات مهام العينة المشار إليها في الأقسام التالية من هذه المقالة. مهام العينة في مستودع GitHub العام، Azure-Samples/acr-tasks. يمكنك تشغيلها مع الأمر Azure CLI az acr run. أوامر العينة مشابهة لما يلي:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
يفترض تنسيق أوامر العينة أنك قمت بتكوين سجل افتراضي في Azure CLI، لذلك تم حذف المعلمة --registry
. لتكوين تسجيل افتراضي، استخدم الأمر az config مع الأمر set
الذي يقبل زوج قيم المفاتيح defaults.acr=REGISTRY_NAME
.
على سبيل المثال، لتكوين CLI Azure مع تسجيل افتراضي يسمى "myregistry":
az config set defaults.acr=myregistry
خصائص المهمة
خصائص المهمة عادة تظهر في أعلى ملف acr-task.yaml
، وهي الخصائص العمومية التي تنطبق خلال التنفيذ الكامل لخطوات المهمة. يمكن تجاوز بعض هذه الخصائص العمومية ضمن خطوة فردية.
الخاصية | نوع | اختياري | الوصف | تجاوز معتمد | القيمة الافتراضية |
---|---|---|---|---|---|
version |
سلسلة | نعم | إصدار الملف acr-task.yaml كما تم تحليله بواسطة خدمة ACR Tasks. بينما تسعى ACR Tasks للحفاظ على التوافق مع الإصدارات السابقة، فإن هذه القيمة تسمح لـ ACR Tasks بالحفاظ على التوافق ضمن إصدار محدد. إذا لم يكن محددًا، فسيتم تعيينه افتراضياً على أحدث إصدار. |
لا | بلا |
stepTimeout |
int (ثوانٍ) | نعم | الحد الأقصى لعدد الثواني التي يمكن أن تستغرقها الخطوة. إذا تم تحديد الخاصية stepTimeout على مهمة، فسيتم تعيين الخاصية الافتراضية timeout لجميع الخطوات. إذا تم تحديد الخاصية timeout على خطوة، فسيتم تجاوز الخاصية stepTimeout التي توفرها المهمة.يجب أن يساوي مجموع قيم مهلة الخطوة لمهمة قيمة خاصية تشغيل المهمة timeout (على سبيل المثال، تعيين بواسطة تمرير --timeout إلى الأمر az acr task create ). إذا كانت قيمة تشغيل المهام timeout أصغر، فإنها تأخذ الأولوية. |
نعم | 600 (10 دقائق) |
workingDirectory |
سلسلة | نعم | دليل العمل للحاوية أثناء وقت التشغيل. إذا تم تحديد الخاصية على مهمة، فسيتم تعيين الخاصية الافتراضية workingDirectory لجميع الخطوات. إذا تم تحديدها في خطوة، فسيتم تجاوز الخاصية التي توفرها المهمة. |
نعم | c:\workspace في Windows أو /workspace في Linux |
env |
[سلسلة، سلسلة، ...] | نعم | صفيف سلاسل بتنسيق key=value لتعريف متغيرات البيئة للمهمة. إذا تم تحديد الخاصية على مهمة، فسيتم تعيين الخاصية الافتراضية env لجميع الخطوات. إذا تم تحديدها في خطوة، فسيتم تجاوز أي متغيرات للبيئة موروثة من المهمة. |
نعم | بلا |
secrets |
[سرية، سرية، ...] | نعم | صفيف من الكائنات السرية. | لا | بلا |
networks |
[شبكة، شبكة، ...] | نعم | صفيف من كائنات الشبكة. | لا | بلا |
volumes |
[حجم، حجم، ...] | نعم | صفيف من كائنات وحدة التخزين. تحديد وحدات التخزين ذات المحتوى المصدر التي سيتم إدخالها إلى خطوة. | لا | بلا |
سري
الكائن السري له الخصائص التالية.
الخاصية | نوع | اختياري | الوصف | القيمة الافتراضية |
---|---|---|---|---|
id |
سلسلة | لا | معرّف السر. | بلا |
keyvault |
سلسلة | نعم | عنوان URL السري لـ Azure Key Vault. | بلا |
clientID |
سلسلة | نعم | معرف العميل الخاص بالهوية المدارة التي تم تعيينها من قبل المستخدم لموارد Azure. | بلا |
الشبكة
كائن شبكة الاتصال له الخصائص التالية.
الخاصية | نوع | اختياري | الوصف | القيمة الافتراضية |
---|---|---|---|---|
name |
سلسلة | لا | اسم الشبكة. | بلا |
driver |
سلسلة | نعم | برنامج التشغيل لإدارة الشبكة. | بلا |
ipv6 |
منطقي | نعم | ما إذا تم تمكين شبكة IPv6. | false |
skipCreation |
منطقي | نعم | ما إذا كان سيتم تخطي إنشاء الشبكة. | false |
isDefault |
منطقي | نعم | ما إذا كانت الشبكة شبكة افتراضية تم توفيرها مع Azure Container Registry. | false |
وحدة التخزين
كائن وحدة التخزين له الخصائص التالية.
الخاصية | نوع | اختياري | الوصف | القيمة الافتراضية |
---|---|---|---|---|
name |
سلسلة | لا | اسم وحدة التخزين المُدخلة. يمكن أن تحتوي على أحرف أبجدية رقمية فقط، و'-'، و'_'. | بلا |
secret |
سلسلة الخريطة [سلسلة] | لا | كل مفتاح من مفاتيح الخريطة هو اسم ملف تم إنشاؤه وملئه في وحدة التخزين. كل قيمة هي إصدار السلسلة من السر. يجب أن تكون القيم السرية بترميز Base64. | بلا |
أنواع خطوات المهام
تدعم ACR Tasks ثلاثة أنواع من الخطوات. يدعم كل نوع خطوة خصائص متعددة، مفصلة في المقطع لكل نوع خطوة.
نوع الخطوة | الوصف |
---|---|
build |
إنشاء صورة حاوية باستخدام docker build بناء جملة مألوف. |
push |
ينفذ docker push من الصور المبنية حديثاً أو التي أعيد وضع علامات عليها إلى سجل حاوية. يتم اعتماد Azure Container Registry والسجلات الخاصة الأخرى وDocker Hub العامة. |
cmd |
تشغيل حاوية كأمر، مع تمرير المعلمات إلى [ENTRYPOINT] الخاص بالحاوية. يدعم نوع الخطوة cmd معلمات مثل env ، وdetach وخيارات أوامر مألوفة docker run أخرى، مما يتيح الوحدة والاختبار الوظيفي مع تنفيذ حاوية متزامنة. |
الإنشاء
بناء صورة حاوية. يمثل نوع الخطوة build
وسيلة متعددة المستأجرين وآمنة للتشغيل docker build
في السحابة كخطوة بدائية من الدرجة الأولى.
بناء الجملة: بنية
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
قم بتشغيل الأمر az acr runللحصول على إصدار docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
أضف متغير DOCKER_BUILDKIT=1
البيئة في ملف yaml لتمكينه buildkit
واستخدامه secret
مع buildkit
.
يدعم نوع الخطوة build
المعلمات في الجدول التالي. يدعم نوع الخطوة build
أيضاً جميع خيارات البنية للأمر docker build مثل تعيين متغيرات --build-arg
وقت البنية.
المعلمة | الوصف | اختياري |
---|---|---|
-t | --image |
يحدد المؤهلين تأهيلاً كاملاً image:tag من الصورة المبنية.مع إمكانية استخدام الصور للتحقق من صحة المهام الداخلية، مثل الاختبارات الوظيفية، لا تتطلب كل الصور push للتسجيل. ومع ذلك، للاستفادة من صورة ضمن تنفيذ المهمة، تحتاج الصورة إلى اسم للرجوع إليه.على عكس az acr build ، لا يوفر تشغيل ACR Tasks سلوك الدفع الافتراضي. مع ACR Tasks، يفترض السيناريو الافتراضي القدرة على إنشاء صورة والتحقق من صحتها ثم دفعها. انظر دفع لكيفية دفع الصور المبنية اختيارياً. |
نعم |
-f | --file |
تحديد ملف Dockerfile الذي تم تمريره إلى docker build . إذا لم يتم التحديد، فسيتم افتراض Dockerfile الافتراضي في جذر السياق. لتحديد Dockerfile، قم بتمرير اسم الملف المرتبط بجذر السياق. |
نعم |
context |
الدليل الجذر الذي تم تمريره إلى docker build . يتم تعيين الدليل الجذر لكل مهمة على دليل عمل مشترك، ويتضمن جذر دليل Git المستنسخ المرتبط. |
لا |
الخصائص: البنية
نوع الخطوة build
يدعم الخصائص التالية. ابحث عن تفاصيل هذه الخصائص في قسم خصائص خطوة المهمة بهذه المقالة.
خصائص | النوع | مطلوب |
---|---|---|
detach |
قيمة منطقية | اختياري |
disableWorkingDirectoryOverride |
قيمة منطقية | اختياري |
entryPoint |
سلسلة | اختياري |
env |
[سلسلة، سلسلة، ...] | اختياري |
expose |
[سلسلة، سلسلة، ...] | اختياري |
id |
سلسلة | اختياري |
ignoreErrors |
قيمة منطقية | اختياري |
isolation |
سلسلة | اختياري |
keep |
قيمة منطقية | اختياري |
network |
كائن | اختياري |
ports |
[سلسلة، سلسلة، ...] | اختياري |
pull |
قيمة منطقية | اختياري |
repeat |
العدد الصحيح | اختياري |
retries |
العدد الصحيح | اختياري |
retryDelay |
int (ثوانٍ) | اختياري |
secret |
كائن | اختياري |
startDelay |
int (ثوانٍ) | اختياري |
timeout |
int (ثوانٍ) | اختياري |
volumeMount |
كائن | اختياري |
when |
[سلسلة، سلسلة، ...] | اختياري |
workingDirectory |
سلسلة | اختياري |
أمثلة: البنية
صورة البنية - السياق في الجذر
az acr run -f build-hello-world.yaml https://github.com/AzureCR/acr-tasks-sample.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile .
صورة البنية - السياق في الدليل الفرعي
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
متغير ديناميكي يمر في مهام ACR
عند العمل مع مهام سجل حاوية Azure (ACR)، قد تجد نفسك بحاجة إلى تمرير قيم مختلفة إلى عملية الإنشاء دون تغيير تعريف المهمة باستخدام العلامة --set
az acr task run
مع الأمر .
مثال: تعيين علامة الصورة في وقت التشغيل
لنفترض أن لديك مهمة ACR معرفة في acr-task.yml
ملف مع عنصر نائب لعلامة الصورة:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
يمكنك تشغيل المهمة وتعيين tag
المتغير إلى v2
في وقت التشغيل باستخدام أمر Azure CLI التالي:
az acr task run --registry myregistry --name mytask --set tag=v2
سيبدأ هذا الأمر مهمة ACR المسماة mytask
وينشئ الصورة باستخدام العلامة v2
، ويتجاوز العنصر النائب في acr-task.yml
الملف.
يسمح هذا الأسلوب بتخصيص البنية الأساسية لبرنامج ربط العمليات التجارية CI/CD، مما يتيح لك ضبط المعلمات ديناميكيا بناء على احتياجاتك الحالية دون تغيير تعريفات المهام.
الدفع
دفع واحدة أو أكثر من الصور المبنية أو التي أعيد وضع علامات عليها إلى سجل الحاوية. يدعم الدفع إلى السجلات الخاصة مثل Azure Container Registry، أو إلى Docker Hub العام.
بناء الجملة: دفع
يدعم نوع الخطوة push
مجموعة من الصور. يعتمد بناء جملة مجموعة YAML التنسيقات المضمنة والمتداخلة. عادةً ما يتم تمثيل دفع صورة واحدة باستخدام بناء جملة مضمّن:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
لزيادة قابلية القراءة، استخدم بناء الجملة المتداخل عند دفع صور متعددة:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
الخصائص: دفع
نوع الخطوة push
يدعم الخصائص التالية. ابحث عن تفاصيل هذه الخصائص في قسم خصائص خطوة المهمة بهذه المقالة.
الخاصية | النوع | مطلوب |
---|---|---|
env |
[سلسلة، سلسلة، ...] | اختياري |
id |
سلسلة | اختياري |
ignoreErrors |
قيمة منطقية | اختياري |
startDelay |
int (ثوانٍ) | اختياري |
timeout |
int (ثوانٍ) | اختياري |
when |
[سلسلة، سلسلة، ...] | اختياري |
أمثلة: دفع
دفع صور متعددة
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
إنشاء صورة ودفعها وتشغيلها
az acr run -f build-run-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
- cmd: $Registry/hello-world:$ID
cmd
نوع الخطوة cmd
يشغل حاوية.
بناء الجملة: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
الخصائص: cmd
نوع الخطوة cmd
يدعم الخصائص التالية:
الخاصية | النوع | مطلوب |
---|---|---|
detach |
قيمة منطقية | اختياري |
disableWorkingDirectoryOverride |
قيمة منطقية | اختياري |
entryPoint |
سلسلة | اختياري |
env |
[سلسلة، سلسلة، ...] | اختياري |
expose |
[سلسلة، سلسلة، ...] | اختياري |
id |
سلسلة | اختياري |
ignoreErrors |
قيمة منطقية | اختياري |
isolation |
سلسلة | اختياري |
keep |
قيمة منطقية | اختياري |
network |
كائن | اختياري |
ports |
[سلسلة، سلسلة، ...] | اختياري |
pull |
قيمة منطقية | اختياري |
repeat |
العدد الصحيح | اختياري |
retries |
العدد الصحيح | اختياري |
retryDelay |
int (ثوانٍ) | اختياري |
secret |
كائن | اختياري |
startDelay |
int (ثوانٍ) | اختياري |
timeout |
int (ثوانٍ) | اختياري |
volumeMount |
كائن | اختياري |
when |
[سلسلة، سلسلة، ...] | اختياري |
workingDirectory |
سلسلة | اختياري |
يمكنك العثور على تفاصيل هذه الخصائص في قسم خصائص خطوة المهمة بهذه المقالة.
أمثلة: cmd
تشغيل صورة hello-world
ينفذ هذا الأمر ملف المهمة hello-world.yaml
الذي يشير إلى صورة hello-world على Docker Hub.
az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: mcr.microsoft.com/hello-world
تشغيل صورة bash وصدى "hello world"
ينفذ هذا الأمر ملف المهمة bash-echo.yaml
الذي يشير إلى صورة bash على Docker Hub.
az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo hello world
قم بتشغيل علامة صورة bash محددة
لتشغيل إصدار صورة محدد، حدد العلامة في cmd
.
ينفذ هذا الأمر ملف المهمة bash-echo-3.yaml
الذي يشير إلى صورة bash:3.0 على Docker Hub.
az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash:3.0 echo hello world
تشغيل الصور المخصصة
يشير نوع الخطوة cmd
إلى الصور باستخدام docker run
التنسيق القياسي. يُفترض أن الصور غير المُقدمة بسجل قد نشأت من docker.io. ويمكن تمثيل المثال السابق على قدم المساواة على النحو التالي:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
باستخدام اصطلاح مرجع الصورة القياسي docker run
، يمكن لـ cmd
تشغيل الصور من أي سجل خاص أو Docker Hub العام. إذا كنت تشير إلى الصور في نفس السجل الذي تنفذ فيه ACR Task، فلن تحتاج إلى تحديد أي بيانات اعتماد للتسجيل.
تشغيل صورة من سجل حاوية Azure. يفترض المثال التالي أن لديك سجل باسم
myregistry
، وصورة مخصصةmyimage:mytag
.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
تعميم مرجع السجل باستخدام متغير تشغيل أو اسم مستعار
بدلاً من الترميز المضمن لاسم السجل في ملف
acr-task.yaml
، يمكنك جعله أكثر قابلية للنقل باستخدام متغير تشغيل أو اسم مستعار. يتم توسيع المتغيرRun.Registry
أو الاسم المستعار$Registry
في وقت التشغيل إلى اسم السجل الذي يتم تنفيذ المهمة فيه.على سبيل المثال، لتعميم المهمة السابقة بحيث يعمل في أي Azure Container Registry، قم بالرجوع إلى المتغير $Registry في اسم الصورة:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
الوصول إلى وحدات التخزين السرية
تسمح الخاصية volumes
بتحديد وحدات التخزين ومحتوياتها السرية للخطوات build
وcmd
في المهمة. داخل كل خطوة، تسرد خاصية اختيارية volumeMounts
وحدات التخزين ومسارات الحاوية المطابقة لإدخالها في الحاوية في تلك الخطوة. يتم توفير الأسرار كملفات في مسار إدخال كل وحدة تخزين.
تنفيذ مهمة وإدخال اثنين من الأسرار إلى خطوة: واحدة مخزن رئيسي وواحدة محددة على سطر الأوامر:
az acr run -f mounts-secrets.yaml --set-secret mysecret=abcdefg123456 https://github.com/Azure-Samples/acr-tasks.git
# This template demonstrates mounting a custom volume into a container at a CMD step
secrets:
- id: sampleSecret
keyvault: https://myacbvault2.vault.azure.net/secrets/SampleSecret # Replace with valid keyvault with access
volumes:
- name: mysecrets
secret:
mysecret1: {{.Secrets.sampleSecret | b64enc}}
mysecret2: {{.Values.mysecret | b64enc}}
steps:
- cmd: bash cat /run/test/mysecret1 /run/test/mysecret2
volumeMounts:
- name: mysecrets
mountPath: /run/test
خصائص خطوة المهمة
يدعم كل نوع خطوة خصائص متعددة مناسبة لنوعه. يُعرّف الجدول التالي جميع خصائص الخطوة المتوفرة. لا تدعم جميع أنواع الخطوات كل الخصائص. لمعرفة أيٍّ من هذه الخصائص متوفرة لكل نوع خطوة، راجع الأقسام المرجعية لنوع الخطوة cmd، والبنية، والدفع.
الخاصية | نوع | اختياري | الوصف | القيمة الافتراضية |
---|---|---|---|---|
detach |
منطقي | نعم | ما إذا كان يجب فصل الحاوية عند التشغيل. | false |
disableWorkingDirectoryOverride |
منطقي | نعم | ما إذا كان سيتم تعطيل وظيفة التجاوز workingDirectory أم لا. استخدم هذا في تركيبة مع workingDirectory أن يكون لديك تحكم كامل على دليل عمل الحاوية. |
false |
entryPoint |
سلسلة | نعم | يتجاوز [ENTRYPOINT] لحاوية الخطوة. |
بلا |
env |
[سلسلة، سلسلة، ...] | نعم | صفيف سلاسل بتنسيق key=value لتعريف متغيرات البيئة للخطوة. |
بلا |
expose |
[سلسلة، سلسلة، ...] | نعم | صفيف المنافذ التي يتم كشفها من الحاوية. | بلا |
id |
سلسلة | نعم | يحدد الخطوة داخل المهمة بشكل فريد. يمكن للخطوات الأخرى في المهمة الرجوع إلى id للخطوة، مثل التحقق من التبعية مع when .id هو أيضا اسم الحاوية قيد التشغيل. يمكن أن تشير العمليات التي يتم تشغيلها في حاويات أخرى في المهمة إلى id كاسم مضيف DNS الخاص به، أو للوصول إليه باستخدام سجلات عامل الإرساء [معرف]، على سبيل المثال. |
acb_step_%d ، عندما يكون %d هو الفهرس المستندة إلى 0 للخطوة من أعلى لأسفل في ملف YAML |
ignoreErrors |
منطقي | نعم | ما إذا كان يجب وضع علامة على الخطوة على أنها ناجحة بغض النظر عمّا إذا كان قد حدث خطأ أثناء تنفيذ الحاوية. | false |
isolation |
سلسلة | نعم | مستوى عزل الحاوية. | default |
keep |
منطقي | نعم | ما إذا كان يجب الاحتفاظ بحاوية الخطوة بعد التنفيذ أم لا. | false |
network |
كائن | نعم | يحدد الشبكة التي تعمل فيها الحاوية. | بلا |
ports |
[سلسلة، سلسلة، ...] | نعم | صفيف المنافذ التي يتم نشرها من الحاوية إلى المضيف. | بلا |
pull |
منطقي | نعم | ما إذا كان سيتم فرض سحب الحاوية قبل تنفيذها لمنع أي سلوك خاص بالتخزين المؤقت أم لا. | false |
privileged |
منطقي | نعم | ما إذا كان سيتم تشغيل الحاوية في الوضع المميز أم لا. | false |
repeat |
العدد الصحيح | نعم | عدد مرات إعادة المحاولة لتكرار تنفيذ حاوية. | 0 |
retries |
العدد الصحيح | نعم | عدد مرات إعادة المحاولة إذا فشلت الحاوية في التنفيذ. تتم محاولة إعادة المحاولة فقط إذا كانت التعليمة البرمجية للخروج للحاوية غير صفرية. | 0 |
retryDelay |
int (ثوانٍ) | نعم | التأخير بالثواني بين إعادة محاولة تنفيذ الحاوية. | 0 |
secret |
كائن | نعم | يحدد سر Azure Key Vault أو الهوية المدارة لموارد Azure. | بلا |
startDelay |
int (ثوانٍ) | نعم | عدد الثواني لتأخير تنفيذ حاوية. | 0 |
timeout |
int (ثوانٍ) | نعم | الحد الأقصى لعدد الثواني التي قد تُنفّذ خلالها خطوة قبل إنهائها. | 600 |
when |
[سلسلة، سلسلة، ...] | نعم | تكوين تبعية خطوة على خطوة أخرى أو أكثر داخل المهمة. | بلا |
user |
سلسلة | نعم | اسم المستخدم أو UID للحاوية | بلا |
workingDirectory |
سلسلة | نعم | تعيين الدليل المشغَّل لخطوة. بشكل افتراضي، تقوم ACR Tasks بإنشاء دليل جذر كدليل المشغَّل. ومع ذلك، إذا كان للبنية الخاصة بك عدة خطوات، فيمكن للخطوات السابقة مشاركة البيانات الاصطناعية مع الخطوات اللاحقة عن طريق تحديد دليل العمل نفسه. | c:\workspace في Windows أو /workspace في Linux |
volumeMount
كائن volumeMount له الخصائص التالية.
الخاصية | نوع | اختياري | الوصف | القيمة الافتراضية |
---|---|---|---|---|
name |
سلسلة | لا | اسم وحدة التخزين المُدخلة. يجب أن تتطابق تماماً مع الاسم من خاصية volumes . |
بلا |
mountPath |
سلسلة | no | المسار المطلق لإدخال الملفات في الحاوية. | بلا |
أمثلة: خصائص خطوة المهمة
مثال: معرف
قم ببناء صورتين، مع إنشاء صورة اختبار وظيفية. يتم تحديد كل خطوة من خلال id
فريد وهو ما تشير إليه الخطوات الأخرى في خاصية when
الخاصة بهم.
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
مثال: متى
تحدد الخاصية when
تبعية الخطوة على الخطوات الأخرى داخل المهمة. يدعم قيمتين للمعلمات:
when: ["-"]
- يشير إلى عدم وجود تبعية على الخطوات الأخرى. الخطوة التي تحدد أنwhen: ["-"]
ستبدأ التنفيذ على الفور، وتُمكّن تنفيذ الخطوة المتزامن.when: ["id1", "id2"]
- يشير إلى أن الخطوة تعتمد على الخطوات التي لها المعرفاتid
"id1" وid
"id2". لن يتم تنفيذ هذه الخطوة حتى تكتمل الخطوات "id1" و"id2".
إذا لم يتم تحديد when
في إحدى الخطوات، فإن هذه الخطوة تعتمد على إكمال الخطوة السابقة في ملف acr-task.yaml
.
تنفيذ خطوة تسلسلية دون when
:
az acr run -f when-sequential-default.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo one
- cmd: bash echo two
- cmd: bash echo three
تنفيذ خطوة تسلسلية مع when
:
az acr run -f when-sequential-id.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- id: step1
cmd: bash echo one
- id: step2
cmd: bash echo two
when: ["step1"]
- id: step3
cmd: bash echo three
when: ["step2"]
بنية بصور متوازية:
az acr run -f when-parallel.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
بنية بصورة متوازية واختبار تابع:
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
تشغيل المتغيرات
تتضمن ACR Tasks مجموعة افتراضية من المتغيرات المتوفرة لخطوات المهمة عند تنفيذها. يمكن الوصول إلى هذه المتغيرات باستخدام التنسيق {{.Run.VariableName}}
، حيث يكون VariableName
واحد ما يلي:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
أسماء المتغيرات بشكل عام تشرح نفسها بنفسها. التفاصيل تتبع للمتغيرات شائعة الاستخدام. بدءًا من إصدار YAML v1.1.0
، يمكنك استخدام اسم مستعار للمهمة مختصر ومحدد مسبقاً بدلاً من معظم متغيرات التشغيل. على سبيل المثال، بدلاً من {{.Run.Registry}}
، استخدم الاسم المستعار $Registry
.
Run.ID
كل عملية تشغيل، عبر az acr run
، أو تنفيذ المهام المستند إلى التشغيل التي تم إنشاؤها من خلال az acr task create
، لها معرف فريد. يمثل المعرف التشغيل الجاري تنفيذه حاليًا.
تُستخدم عادةً لوضع علامات على صورة بشكل فريد:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
المعرف الفريد لوحدة تخزين مشتركة يمكن الوصول إليها بواسطة جميع خطوات المهمة. يتم إدخال وحدة التخزين c:\workspace
في Windows أو في /workspace
Linux.
Run.Registry
اسم الخادم المؤهل بالكامل للسجل. تُستخدم عادةً للإشارة إلى السجل بشكل عام حيث يتم تشغيل المهمة.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
اسم سجل الحاوية. تستخدم عادة في خطوات المهام التي لا تتطلب اسم خادم مؤهل بالكامل، على سبيل المثال، الخطوات cmd
التي تقوم بتشغيل أوامر Azure CLI على السجلات.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
وقت بدء التشغيل بالتوقيت العالمي المتفق عليه (UTC) الحالي.
Run.Commit
بالنسبة لمهمة يتم تشغيلها بواسطة تثبيت بمستودع GitHub، معرف التثبيت.
Run.Branch
بالنسبة لمهمة يتم تشغيلها بواسطة تثبيت بمستودع GitHub، اسم الفرع.
الأسماء المستعارة
اعتبارًا من v1.1.0
، تدعم ACR Tasks الأسماء المستعارة المتوفرة لخطوات المهام عند تنفيذها. الأسماء المستعارة مشابهة في المفهوم إلى الأسماء المستعارة (اختصارات الأوامر) المعتمدة في bash وبعض أوامر shells الأخرى.
باستخدام اسم مستعار، يمكنك تشغيل أي أمر أو مجموعة من الأوامر (بما في ذلك الخيارات وأسماء الملفات) عن طريق إدخال كلمة واحدة.
تدعم ACR Tasks العديد من الأسماء المستعارة المحددة مسبقًا وكذلك الأسماء المستعارة المخصصة التي تقوم بإنشائها.
أسماء مستعارة محددة مسبقاً
تتوفر أسماء المهام المستعارة التالية لاستخدامها بدلاً من متغيرات التشغيل:
الاسم المستعار | تشغيل متغير |
---|---|
ID |
Run.ID |
SharedVolume |
Run.SharedVolume |
Registry |
Run.Registry |
RegistryName |
Run.RegistryName |
Date |
Run.Date |
OS |
Run.OS |
Architecture |
Run.Architecture |
Commit |
Run.Commit |
Branch |
Run.Branch |
في خطوات المهمة، اسبق الاسم المستعار بالتوجيه $
، كما في هذا المثال:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
أسماء مستعارة للصور
يشير كل من الأسماء المستعارة التالية إلى صورة ثابتة في Microsoft Container Registry (MCR). يمكنك الرجوع إلى كل منهم في قسم cmd
من ملف المهمة دون استخدام توجيه.
الاسم المستعار | الصورة |
---|---|
acr |
mcr.microsoft.com/acr/acr-cli:0.5 |
az |
mcr.microsoft.com/acr/azure-cli:7ee1d7f |
bash |
mcr.microsoft.com/acr/bash:7ee1d7f |
curl |
mcr.microsoft.com/acr/curl:7ee1d7f |
يستخدم المثال التالي للمهمة العديد من الأسماء المستعارة لمسح علامات الصور الأقدم من 7 أيام في المستودع samples/hello-world
في سجل التشغيل:
version: v1.1.0
steps:
- cmd: acr tag list --registry $RegistryName --repository samples/hello-world
- cmd: acr purge --registry $RegistryName --filter samples/hello-world:.* --ago 7d
الاسم المستعار المخصص
حدد اسماً مستعاراً مخصصاً في ملف YAML الخاص بك واستخدمه كما هو موضح في المثال التالي. يمكن أن يحتوي الاسم المستعار على أحرف أبجدية رقمية فقط. التوجيه الافتراضي لتوسيع اسم مستعار هو الحرف $
.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
يمكنك الارتباط بملف YAML بعيد أو محلي للحصول على تعريفات الاسم المستعار المخصصة. يرتبط المثال التالي بملف YAML في Azure Blob Storage:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
الخطوات التالية
للحصول على نظرة عامة على المهام متعددة الخطوات، راجع تشغيل مهام البناء والاختبار والتصحيح متعددة الخطوات في ACR Tasks.
للحصول على البُنى أحادية الخطوة، راجع نظرة عامة حول ACR Tasks.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ