البرنامج التعليمي: قم بتشغيل مهمة ACR وفقاً لجدول زمني محدد

يوضح لك هذا البرنامج التعليمي كيفية تشغيل ACR Tas وفقاً لجدول زمني. جدولة مهمة عن طريق إعداد واحد أو أكثر من مشغلات المؤقت. يمكن استخدام مشغلات المؤقت بمفردها، أو بالاشتراك مع مشغلات المهام الأخرى.

في هذا البرنامج التعليمي، تعرف على جدولة المهام و:

  • قم بإنشاء مهمة باستخدام مشغل مؤقت
  • إدارة مشغلات الموقت

جدولة مهمة مفيدة لسيناريوهات مثل ما يلي:

  • قم بتشغيل حمل حاوية لعمليات الصيانة المجدولة. على سبيل المثال، قم بتشغيل تطبيق حاوية لإزالة الصور غير الضرورية من السجل الخاص بك.
  • قم بإجراء مجموعة من الاختبارات على صورة إنتاج أثناء يوم العمل كجزء من مراقبة الموقع المباشر.

المتطلبات الأساسية

حول جدولة مهمة

  • المشغل باستخدام تعبير cron - يستخدم مشغل المؤقت لمهمة تعبير cron. التعبير عبارة عن سلسلة بها خمسة حقول تحدد الدقيقة والساعة واليوم والشهر ويوم الأسبوع لتشغيل المهمة. ترددات تصل إلى مرة واحدة في الدقيقة مدعومة.

    على سبيل المثال، يؤدي التعبير "0 12 * * Mon-Fri" إلى تشغيل مهمة عند الظهر بالتوقيت العالمي المتفق عليه من كل يوم من أيام الأسبوع. راجع التفاصيل لاحقاً في هذه المقالة.

  • مشغلات متعددة بالمؤقت - يُسمح بإضافة عدة مؤقتات إلى مهمة ما، طالما تختلف الجداول الزمنية.

    • حدد عدة مشغلات للمؤقت عند إنشاء المهمة، أو قم بإضافتها لاحقاً.
    • اختياريّاً، قم بتسمية المشغلات لإدارة أسهل، أو ستوفر مهام ACR أسماء المشغلات الافتراضية.
    • إذا تداخلت جداول المؤقت في وقت واحد، فإن ACR Tasks تبدأ المهمة في الوقت المجدول لكل مؤقت.
  • مشغلات مهمة أخرى - في مهمة تم تشغيلها بمؤقت، يمكنك أيضاً تمكين المشغلات استناداً إلى التزام شفرة المصدر أو تحديثات الصورة الأساسية. مثل مهام ACR الأخرى، يمكنك أيضاً manually run مهمة مجدولة يدوياً.

قم بإنشاء مهمة باستخدام مشغل مؤقت

أمر المهمة

أولاً، قم بتعبئة متغير بيئة shell التالي بقيمة مناسبة لبيئتك. هذه الخطوة غير مطلوبة بالضرورة، ولكن يجعل تنفيذ أوامر Azure CLI متعددة الخطوط في هذا البرنامج التعليمي أسهل قليلاً. إذا لم تقم بتعبئة متغير البيئة، فيجب عليك استبدال كل قيمة يدويّاً أينما ظهرت في أوامر الأمثلة.

ACR_NAME=<registry-name>        # The name of your Azure container registry

عند إنشاء مهمة باستخدام الأمر إaz acr task create، يمكنك اختيارياً إضافة مشغل مؤقت. أضف المعلمة --schedule وقم بتمرير تعبير cron للمؤقت.

كمثال بسيط، تبدأ المهمة التالية بتشغيل صورة hello-world من Microsoft Container Registry يوميّاً الساعة 21:00 بالتوقيت العالمي المتفق عليه. يتم تشغيل المهمة دون سياق التعليمات البرمجية المصدر.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --cmd mcr.microsoft.com/hello-world \
  --schedule "0 21 * * *" \
  --context /dev/null

قم بتشغيل الأمر az acr task show للتأكد من تكوين مشغل المؤقت. بشكل افتراضي، يتم أيضاً تمكين مشغل تحديث الصورة الأساسية.

az acr task show --name timertask --registry $ACR_NAME --output table
NAME      PLATFORM    STATUS    SOURCE REPOSITORY       TRIGGERS
--------  ----------  --------  -------------------     -----------------
timertask linux       Enabled                           BASE_IMAGE, TIMER

أيضا، مثال بسيط للمهمة التي تعمل مع سياق التعليمات البرمجية المصدر. تشغل المهمة التالية تشغيل hello-world الصورة من Microsoft Container Registry كل يوم في الساعة 21:00 بالتوقيت العالمي المتفق عليه.

اتبع المتطلبات الأساسية لإنشاء سياق التعليمات البرمجية المصدر ثم إنشاء مهمة مجدولة بالسياق.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
  --file Dockerfile \
  --image timertask:{{.Run.ID}} \
  --git-access-token $GIT_PAT \
  --schedule "0 21 * * *"

قم بتشغيل الأمر az acr task show للتأكد من تكوين مشغل المؤقت. بشكل افتراضي، يتم أيضاً تمكين مشغل تحديث الصورة الأساسية.

az acr task show --name timertask --registry $ACR_NAME --output table

قم بتشغيل الأمر az acr task run لتشغيل المهمة يدويا.

az acr task run --name timertask --registry $ACR_NAME

ابدأ المهمة

قم بتشغيل المهمة يدوياً باستخدام تaz acr task run للتأكد من إعدادها بشكل صحيح:

az acr task run --name timertask --registry $ACR_NAME

إذا تم تشغيل الحاوية بنجاح، فسيكون الإخراج مشابهاً لما يلي. يتم تكثيف الإخراج لإظهار الخطوات الرئيسية

Queued a run with ID: cf2a
Waiting for an agent...
2020/11/20 21:03:36 Using acb_vol_2ca23c46-a9ac-4224-b0c6-9fde44eb42d2 as the home volume
2020/11/20 21:03:36 Creating Docker network: acb_default_network, driver: 'bridge'
[...]
2020/11/20 21:03:38 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

بعد الوقت المجدول، قم بتشغيل الأمر az acr task list-run للتحقق من أن المؤقت قام بتشغيل المهمة كما هو متوقع:

az acr task list-runs --name timertask --registry $ACR_NAME --output table

عندما ينجح الموقت، يكون الإخراج مشابهاً لما يلي:

RUN ID    TASK       PLATFORM    STATUS     TRIGGER    STARTED               DURATION
--------  ---------  ----------  ---------  ---------  --------------------  ----------
ca15      timertask  linux       Succeeded  Timer      2020-11-20T21:00:23Z  00:00:06
ca14      timertask  linux       Succeeded  Manual     2020-11-20T20:53:35Z  00:00:06

إدارة مشغلات الموقت

استخدم أوامر az acr task timer لإدارة مشغلات المؤقت لمهمة ACR.

إضافة أو تحديث مشغل عداد الوقت

بعد إنشاء مهمة، أضف مؤقتاً مشغل مؤقت باستخدام الأمر az acr task timer add. يضيف المثال التالي اسم مشغل المؤقت timer2 to timertask الذي تم إنشاؤه مسبقاً. يقوم هذا المؤقت بتشغيل المهمة كل يوم في الساعة 10:30 بالتوقيت العالمي المتفق عليه.

az acr task timer add \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 10 * * *"

قم بتحديث الجدول الزمني لمشغل موجود، أو غيّر حالته، باستخدام الأمر az acr task timer update. على سبيل المثال، قم بتحديث المشغل المسمى timer2 لتشغيل المهمة في الساعة 11:30 بالتوقيت العالمي المتفق عليه:

az acr task timer update \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 11 * * *"

قائمة مشغلات الموقت

يعرض الأمر az acr task timer list مشغلات المؤقت التي تم إعدادها لمهمة:

az acr task timer list --name timertask --registry $ACR_NAME

مثال على الإخراج:

[
  {
    "name": "timer2",
    "schedule": "30 11 * * *",
    "status": "Enabled"
  },
  {
    "name": "t1",
    "schedule": "0 21 * * *",
    "status": "Enabled"
  }
]

إزالة الزناد المؤقت

استخدم الأمر az acr task timer remove لإزالة مشغل مؤقت من مهمة. يزيل المثال التالي مشغل timer2 trigger from timertask:

az acr task timer remove \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2

تعابير كرون

يستخدم ACR Tasks مكتبة NCronTab لتفسير تعبيرات cron. تحتوي التعبيرات المدعومة في مهام ACR على خمسة حقول مطلوبة مفصولة بمسافة بيضاء:

{minute} {hour} {day} {month} {day-of-week}

المنطقة الزمنية المستخدمة مع تعبيرات cron هي التوقيت العالمي (UTC). الساعات بتنسيق 24 ساعة.

إشعار

لا تدعم مهام ACR الحقل {second} or {year} في تعبيرات cron. إذا قمت بنسخ تعبير cron مستخدم في نظام آخر، فتأكد من إزالة هذه الحقول، إذا تم استخدامها.

يمكن أن يحتوي كل حقل على أحد أنواع القيم التالية:

نوع مثال وقت التشغيل
قيمة محددة "5 * * * *" كل ساعة عند 5 دقائق بعد الساعة
كل القيم (*) "* 5 * * *" كل دقيقة من الساعة بدءاً من الساعة 5:00 بالتوقيت العالمي المتفق عليه (60 مرة في اليوم)
نطاق (عامل تشغيل- ) "0 1-3 * * *" 3 مرات في اليوم، الساعة 1:00 و2:00 و3:00 بالتوقيت العالمي المتفق عليه
مجموعة من القيم (عامل تشغيل, ) "20,30,40 * * * *" 3 مرات في الساعة، في 20 دقيقة و30 دقيقة و40 دقيقة بعد الساعة
قيمة الفاصل الزمني (عامل التشغيل/ ) "*/10 * * * *" 6 مرات في الساعة، في 10 دقائق، و20 دقيقة، وهكذا، بعد الساعة

لتحديد الأشهر أو الأيام، يمكنك استخدام القيم الرقمية أو الأسماء أو اختصارات الأسماء:

  • بالنسبة للأيام، تتراوح القيم الرقمية من 0 إلى 6 حيث يبدأ 0 بيوم الأحد.
  • الأسماء باللغة الإنجليزية. على سبيل المثال: Monday، January.
  • الأسماء غير حساسة لحالة الأحرف.
  • يمكن اختصار الأسماء. ثلاثة أحرف هي طول الاختصار الموصى به. على سبيل المثال: Mon، Jan.

أمثلة كرون

مثال وقت التشغيل
"*/5 * * * *" مرة كل خمس دقائق
"0 * * * *" مرة واحدة في بداية كل ساعة
"0 */2 * * *" مرة كل ساعتين
"0 9-17 * * *" مرة كل ساعة من 9:00 حتي 17:00 بالتوقيت العالمي المتفق عليه
"30 9 * * *" الساعة 9:30 بالتوقيت العالمي المتفق عليه كل يوم
"30 9 * * 1-5" الساعة 9:30 بالتوقيت العالمي المتفق عليه كل يوم من أيام الأسبوع
"30 9 * Jan Mon" الساعة 9:30 بالتوقيت العالمي المتفق عليه كل يوم اثنين من شهر يناير

تنظيف الموارد

لإزالة جميع الموارد التي قمت بإنشائها في سلسلة البرامج التعليمية هذه، بما في ذلك سجل الحاوية أو السجلات، ومثال الحاوية، وخزينة المفاتيح، ومدير الخدمة، قم بإصدار الأوامر التالية:

az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull

الخطوات التالية

في هذا البرنامج التعليمي، تعلمت كيفية إنشاء مهام Azure Container Registry التي يتم تشغيلها تلقائيّاً بواسطة جهاز ضبط الوقت.

للحصول على مثال لاستخدام مهمة مجدولة لتنظيف المستودعات في سجل، راجع مسح الصور تلقائيّاً من سجل حاوية Azure.

للحصول على أمثلة للمهام التي تم تشغيلها بواسطة تعليمات التعليمات البرمجية المصدر أو تحديثات الصورة الأساسية، راجع المقالات الأخرى في سلسلة البرامج التعليمية لمهام ACR.