0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · درس

تطوير GitHub Actions مخصصة

تعلّموا إنشاء إجراءات مخصصة قابلة لإعادة الاستخدام باستخدام JavaScript أو Docker لتوسيع وظائف GitHub Actions.

تطوير GitHub Actions مخصصة درس مجاني في CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CI/CD with GitHub Actions & DevOps Pipelines، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.

توسيع GitHub Actions

ماذا لو احتجتم إلى مهمة محددة في سير عملكم لا يوفرها GitHub Actions مباشرةً؟ أو ربما لديكم منطق معقد تريدون إعادة استخدامه؟

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

قوة التخصيص

توفر Actions المخصصة عدة فوائد لمسارات CI/CD لديكم:

  • إعادة الاستخدام: اكتبوا الكود مرة واحدة واستخدموه في العديد من مسارات العمل والمستودعات.
  • التوحيد القياسي: ضمان اتساق العمليات عبر مؤسستكم.
  • التغليف: إخفاء المنطق المعقد خلف واجهة بسيطة.
  • التكامل: التفاعل مع أدوات أو واجهات API داخلية محددة.

JavaScript أم Docker؟

يدعم GitHub Actions طريقتين أساسيتين لإنشاء Actions مخصصة:

  • Actions بلغة JavaScript: تُكتب بلغة JavaScript (أو TypeScript)، وتعمل مباشرةً على جهاز runner. وهي سريعة وسهلة للمهام البسيطة.
  • Actions في حاويات Docker: تغلّف بيئتكم والتعليمات البرمجية داخل صورة Docker. وهي مثالية للـ Actions التي تتطلب تبعيات أو لغات محددة.

تعريف الـ Action الخاص بكم

تحتاج كل Action مخصصة إلى ملف action.yml في دليلها الجذر. ويشبه ملف YAML هذا بيانًا يعرّف GitHub Actions بالـ Action الخاصة بكم:

  • name وdescription: ما الذي تنفذه الـ Action الخاصة بكم.
  • inputs: البيانات التي تقبلها الـ Action الخاصة بكم.
  • outputs: البيانات التي تنتجها الـ Action الخاصة بكم.
  • runs: كيفية تنفيذ الـ Action الخاصة بكم (مثل ملف JavaScript أو صورة Docker).

مثال بسيط على Action بلغة JS

لنلقِ نظرة على Action أساسية بلغة JavaScript. ستحتاجون إلى ملفي action.yml وindex.js. يعرّف ملف action.yml البيانات الوصفية للـ Action وبيئة تنفيذها.

# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'World'
outputs:
  greeting-message:
    description: 'The greeting message generated'
runs:
  using: 'node16'
  main: 'index.js'

كتابة JavaScript

يحتوي ملف index.js على المنطق الفعلي. ونستخدم مجموعة الأدوات @actions/core للحصول على المدخلات وتعيين المخرجات.

جرّبوا تشغيل مقطع JavaScript البسيط هذا لفهم كيفية عمل المدخلات والمخرجات من حيث المبدأ، حتى خارج سير عمل كامل:

// index.js (simplified for demonstration)
const core = require('@actions/core');

try {
  const name = core.getInput('who-to-greet');
  const message = `Hello, ${name}!`;
  console.log(message);
  core.setOutput('greeting-message', message);
} catch (error) {
  core.setFailed(error.message);
}

// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
  const name = inputName || 'World';
  const message = `Hello from runnable JS, ${name}!`;
  return message;
}

console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());

أساسيات Actions في Docker

تُعد Actions في حاويات Docker قوية للبيئات الأكثر تعقيدًا. وهي تتضمن ملف Dockerfile يعرّف صورة الحاوية ويضمّن جميع التبعيات اللازمة.

وسيشير ملف action.yml لديكم إلى هذه الصورة، ليخبر GitHub Actions بإنشائها وتشغيلها.

# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'Docker'
outputs:
  greeting-message:
    description: 'The greeting message from Docker'
runs:
  using: 'docker'
  image: 'Dockerfile'

بيئة الـ Action الخاصة بكم

يحدد ملف Dockerfile الصورة الأساسية، ويثبّت التبعيات، ويعرّف نقطة الدخول للـ Action الخاصة بكم. ويضمن ذلك تشغيل الـ Action في بيئة متسقة ومضبوطة.

# Dockerfile
FROM alpine:3.16

LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"

# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

كتابة البرامج النصية لـ Actions في Docker

داخل حاوية Docker، يستقبل البرنامج النصي لنقطة الدخول لديكم (مثل entrypoint.sh) المدخلات باعتبارها متغيرات بيئية (تبدأ بالبادئة INPUT_). ويعيّن المخرجات عبر الكتابة إلى الملف المحدد بواسطة متغير البيئة $GITHUB_OUTPUT.

#!/bin/sh -l

# entrypoint.sh

echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"

أفضل الممارسات لـ Actions

عند تطوير Actions مخصصة، ضعوا النصائح التالية في الحسبان لإنشاء أدوات قوية وسهلة الصيانة:

  • إدارة الإصدارات: استخدموا إدارة الإصدارات الدلالية (مثل v1 وv2) لتحقيق الاستقرار.
  • الاختبار: اختبروا الـ Action الخاصة بكم بدقة محليًا وضمن مسارات العمل.
  • معالجة الأخطاء: نفّذوا رسائل خطأ واضحة وحالات فشل سلسة.
  • الأمان: نظّفوا المدخلات وتجنبوا كشف البيانات الحساسة.
  • التوثيق: قدموا تعليمات استخدام واضحة في ملف README لديكم.

اختبار نوع الـ Action

تحتاجون إلى إنشاء GitHub Action مخصصة تتطلب مكتبة Python محددة غير مثبتة مسبقًا في GitHub Actions runners القياسية. ما نوع الـ Action الأنسب عمومًا لهذا السيناريو؟

ملخص Actions المخصصة

استكشفنا كيفية توسيع GitHub Actions من خلال إنشاء Actions مخصصة خاصة بكم. وتعلّمتم النوعين الرئيسيين: Actions بلغة JavaScript وActions في حاويات Docker، بالإضافة إلى الدور المحوري لملف action.yml. كما تناولنا كيفية تعريف المدخلات والمخرجات والمنطق الأساسي لكل نوع، إلى جانب أفضل ممارسات التطوير.

تُعد Actions المخصصة قوية لإعادة الاستخدام والتوحيد القياسي في مسارات CI/CD لديكم!

الأسئلة الشائعة

هل درس «تطوير GitHub Actions مخصصة» مجاني؟

نعم — نص درس «تطوير GitHub Actions مخصصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.

ماذا ستتعلم في «تطوير GitHub Actions مخصصة»؟

تعلّموا إنشاء إجراءات مخصصة قابلة لإعادة الاستخدام باستخدام JavaScript أو Docker لتوسيع وظائف GitHub Actions. تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟

لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تطوير GitHub Actions مخصصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟

نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تطوير GitHub Actions مخصصة
  2. المنفّذات المستضافة ذاتيًا للبيئات المحلية
  3. التكامل مع أنظمة المؤسسات
  4. الإجراءات المركبة والنشر في Marketplace
← العودة إلى CI/CD with GitHub Actions & DevOps Pipelines