فهم «GitHub Actions»

مكتمل

يمكنك أتمتة الخطوات في عملية التوزيع باستخدام سير عمل. في كل مرة تقوم فيها بإجراء تغيير على التعليمة البرمجية وتثبيت التغيير على مستودع Git، يقوم سير العمل بتشغيل العملية المعرَّفة مسبقًا. يمكن لسير العمل التحقق مما إذا كانت تعليمات Bicep البرمجية تفي بمعايير الجودة الخاصة بك، ثم أتمتة الإجراءات لتوزيع مواردك إلى Azure. يتم تعريف العملية في تعريف سير العمل الذي تعمل على إنشائه.

«GitHub Actions» هي إحدى ميزات «GitHub». يتضمن «GitHub » أيضًا مستودعات Git التي تستخدمها لتخزين التعليمة البرمجية الخاصة بك ومشاركتها مع المتعاونين معك. عندما تخزّن تعليمة Bicep البرمجية في «GitHub»، يمكن لخدمة «GitHub Actions» الوصول إلى التعليمة البرمجية لأتمتة عمليات التوزيع. في هذه الوحدة، ستتعرف على «GitHub Actions».

ما هو سير العمل؟

سير العمل هو عملية قابلة للتكوين قابلة للتكرار يتم تعريفها في ملف يستخدم لاختبار التعليمات البرمجية ونشرها. يتكون سير العمل من جميع الخطوات، بالترتيب المناسب، التي تحتاج إلى تنفيذها.

عند العمل باستخدام GitHub Actions، يمكنك تعريف تكوين سير العمل الخاص بك في ملف YAML. لأن ملف YAML لسير العمل هو ملف تعليمات برمجية، يتم تخزينه مع تعليمة Bicep البرمجية في مستودع Git في مجلد باسم .github/workflows. ملف YAML هو ملف نصي منظم، مشابه لملف نص Bicep منظم. يمكنك إنشاء ملف YAML وتحريره باستخدام أي محرر نص. في تلك الوحدة النمطية، سوف تستخدم Visual Studio Code ليكون المحرر. توفر واجهة الويب GitHub أدوات يمكنك استخدامها لعرض ملف YAML لسير العمل وتحريره، والتعاون في تعريف سير العمل لديك، وإدارة إصدارات مختلفة من ملف سير العمل باستخدام عمليات التثبيت والفروع.

المشغّلات

حتى الآن، قمت بتوزيع ملفات Bicep من الكمبيوتر المحلي الخاص بك. بعد كتابة قالب Bicep، يمكنك توزيعه إلى Azure باستخدام Azure CLI أو Azure PowerShell. تستخدم هذه الأدوات موارد الكمبيوتر لإرسال القالب إلى Azure. وتستخدم هويتك الشخصية لمصادقتك على Azure والتحقق من أن لديك الأذونات لتوزيع الموارد.

يحتاج سير العمل أيضا إلى الوصول إلى جهاز كمبيوتر أو وحدة معالجة الرسومات مع نظام التشغيل الصحيح والنظام الأساسي للأجهزة حتى يتمكن من تنفيذ إجراءات التوزيع. تستخدم GitHub Actions المشغلات، وهي أجهزة كمبيوتر يتم تكوينها لتشغيل خطوات التوزيع لأي سير عمل. كل مشغّل لديه بالفعل أدوات Bicep وAzure التي استخدمتها في الوحدات السابقة، لذلك فهو قادر على القيام بالأشياء ذاتها التي تقوم بها من الكمبيوتر. بدلاً من التنفيذ اليدوي للأوامر، ترشد خدمة GitHub Actions المشغّل إلى تشغيل الخطوات التي عرّفتها في ملف YAML لسير العمل.

توفر خدمة GitHub Actions أنواعًا متعددة من المشغّلات لأنظمة التشغيل المختلفة، مثل Linux أو Windows، ومجموعات أدوات مختلفة. يدير GitHub هذه المشغّلات حتى لا تضطر إلى الحفاظ على أي بنية حساب أساسية للمشغّلات. يطلق على المشغّلات أحيانا اسم المشغّلات المستضافة على «GitHub» أو المشغّلات المستضافة لأنها مستضافة بالنيابة عنك. عند تشغيل سير العمل، يتم إنشاء مشغّل مستضاف تلقائيًا. عند انتهاء تشغيل سير العمل، يتم حذف المشغّل المستضاف تلقائيًا. لا يمكنك الوصول إلى المشغّلات المستضافة مباشرة، لذا من المهم أن يحتوي سير العمل على جميع الخطوات اللازمة لتوزيع الحل الخاص بك.

Diagram that shows a workflow that runs on a runner.

إشعار

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

المشغلات

لاستخدام مشغل لإرشاد GitHub Actions إلى وقت تشغيل سير العمل لديك. يمكنك الاختيار من بين أنواع متعددة من المشغلات. خلال الوقت الحاضر، ستقوم باستخدام مشغل يدوي لإخبار GitHub Actions بالوقت المناسب لبدء تشغيل سير العمل لديك. لاحقًا في هذه الوحدة، ستتعرف على المزيد عن أنواع المشغلات الأخرى.

Diagram that shows a trigger initiating a workflow.

الخطوات

تمثل الخطوة عملية واحدة يجريها سير العمل. خطوة مشابهة لأمر فردي يتم تشغيله في «Bash» أو «PowerShell». بالنسبة لمعظم عمليات التوزيع، يمكنك تنفيذ عدة خطوات في تسلسل. يمكنك تحديد التسلسل، وكافة التفاصيل عن كل خطوة، في ملف YAML لسير العمل.

تقدم «GitHub Actions» نوعين من الخطوات:

  • خطوات التشغيل: يمكنك استخدام خطوة تشغيل لتشغيل أمر واحد أو سلسلة من الأوامر في Bash أو PowerShell أو غلاف أوامر Windows.
  • خطوات الإجراء: خطوة الإجراء هي طريقة ملائمة للوصول إلى العديد من القدرات المختلفة دون كتابة عبارات البرنامج النصي. على سبيل المثال، هناك مهمة مضمنة لنشر ملفات Bicep إلى Azure. يمكن لأي شخص كتابة إجراء ومشاركته مع مستخدمين آخرين. تتوفر مجموعة كبيرة من المهام التجارية مفتوحة المصدر.

يفضل بعض الأشخاص استخدام عبارات البرنامج النصي بدلاً من الإجراءات، لأنها توفر المزيد من التحكم في ما يتم تنفيذه. بينما يفضل آخرون استخدام الإجراءات حتى لا يضطروا إلى كتابة البرامج النصية وإدارتها. في هذه الوحدة، سنستخدم مزيجا من كلا النهجين.

المهام

في «GitHub Actions»، تمثل الوظيفة مجموعة مرتبة من الخطوات. لديك دائما مهمة واحدة على الأقل في سير العمل، ومن الشائع أن يكون لديك أكثر من مهمة واحدة عند إنشاء عمليات نشر معقدة.

إشعار

يمكنك تعيين كل وظيفة لتشغيلها على مشغّل مختلف. تشغيل الوظائف على مشغّلات مختلفة مفيد عند إنشاء وتوزيع الحلول التي تحتاج إلى استخدام أنظمة تشغيل مختلفة في أجزاء مختلفة من سير عمل الوظيفة.

على سبيل المثال، افترض أنك تبني تطبيق «iOS» وخدمة التطبيق الخلفية. قد يكون لديك وظيفة واحدة يتم تشغيلها على مشغّل «macOS» لبناء تطبيق «iOS» ووظيفة أخرى يتم تشغيلها على مشغّل «Ubuntu» أو «Windows» لبناء الخلفية. قد تخبر سير العمل لتشغيل الوظيفتين في وقت واحد، مما يسرع تنفيذ سير العمل.

Diagram that shows a workflow with two steps, both within one job.

مثال سير العمل الأساسي

الآن بعد أن تعرفت على مفاهيم إجراءات GitHub الأساسية، دعنا ننظر إلى تعريف سير عمل بسيط في YAML:

name: learn-github-actions

on: [workflow_dispatch]

jobs:
  say-hello:
    runs-on: ubuntu-latest
    steps:
      - name: 'Run a one-line command'
        run: echo "hello from GitHub Actions"
      - name: 'Run a multi-line command'
        run: |
          echo "We'll add more steps soon."
          echo "For example, we'll add our Bicep deployment step."

دعونا نلقي نظرة على كل جزء من الملف بالتفصيل:

  • name هو اسم سير العمل الخاص بك. يظهر الاسم على واجهة الويب في «GitHub».
  • يخبر on سير العمل الخاص بك متى يتم التنفيذ. في هذه الحالة، يخبر on: [workflow_dispatch] «GitHub Actions» بأنك تريد تشغيل سير العمل يدويًا.
  • يجمع jobs كل الوظائف في سير العمل.
  • say-hello هو اسم الوظيفة الأولى والوحيدة في سير العمل هذا.
  • يرشد runs-on سير العمل أي مشغّل سيستخدم عند تشغيله الوظيفة. في هذا المثال، يعمل سير العمل على نظام التشغيل Ubuntu، الذي يأتي من مجموعة المشغّلات المستضافة على GitHub.
  • يسرد steps تسلسل الإجراءات التي يتم تشغيلها في الوظيفة. هناك خطوتان للمثال YAML. تشغّل كلتا الخطوتين برنامجًا نصيًا بسيطًا لترديد بعض النصوص. كل خطوة لها قيمة name، ويمكن للإنسان قراءته. سترى الاسم في سجلات سير العمل. لإنشاء خطوة برنامج نصي متعدد الأسطر، استخدم حرف التوجيه (|) كما هو موضح في المثال. بعد تنفيذ الخطوة الخاصة بك، سترى المخرجات في سجل سير العمل.

هام

في ملفات YAML، المسافة البادئة مهمة. ألقِ نظرة على نموذج YAML. بعض الأسطر في YAML لها مسافة بادئة مكونة من مسافتين أو أربع مسافات. إذا لم تستخدم المسافات البادئة في ملفك بشكل صحيح، فلن تتمكن «GitHub Actions» من تفسيرها. يساعدك «Visual Studio Code» على العثور على الأخطاء في المسافة البادئة لملف YAML وتصحيحها.