قائمة مصغرة لإجراءات GitHub Actions - الهيكل القياسي وقائمة بأهم الإجراءات المفيدة

بعض المعلومات حول الإجراءات الشائعة في GitHub وبنائها.

Page content

GitHub Actions هي منصة تلقائية وCI/CD ضمن GitHub، تُستخدم لبناء، اختبار، ونشر الكود بناءً على الأحداث مثل الدفعات، طلبات الدمج، أو حسب الجدول.

بالإضافة إلى GitHub القياسي، يمكنك استخدام GitHub Actions في خادم Gitea المضيف الذاتي.

github actions flow

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

هيكل التكوين الأساسي

يتم تعريف سير عمل GitHub Actions في ملفات YAML تقع في الدليل .github/workflows داخل المستودع.

name: اسم السير
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: إعداد Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: تشغيل الاختبارات
        run: npm test
  • يحدد on كتلة الأحداث المُحفزة.
  • كل job يُنفذ على مُشغله الخاص.
  • يمكن أن تُنفذ steps أوامر نمطية أو تُستدعي أفعال قابلة لإعادة الاستخدام.

مكونات السير الأساسية

المكون الوصف
السير عملية تلقائية (YAML) تُحفزها حدث
الحدث نشاط يُحفز سير العمل (دفع، pull_request، إلخ)
المهمة سلسلة من الخطوات التي تُنفذ على مُشغل، يمكن أن تُنفذ تسلسلية أو بالتوازي
الخطوة كل أمر أو فعالية في مهمة
المُشغل جهاز افتراضي أو حاوية حيث تُنفذ المهام
الفعل ملحق قابل لإعادة الاستخدام يُحوي مهمة معينة

أحداث التحفيز

  • push
  • pull_request
  • schedule (باستخدام تركيب cron)
  • workflow_dispatch (التحفيز اليدوي، يسمح بتحديد المعلمات)
  • release, issue، إلخ.

مثال:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'بيئة النشر'
        required: true
        default: 'production'
        type: string

أفعال مفيدة مدمجة

الفعل الغرض المعلمات الشائعة
actions/checkout فك تشفير كود المستودع ref، token، submodules، persist-credentials
actions/setup-node إعداد بيئة Node.js node-version، cache، architecture، check-latest
actions/setup-python إعداد Python python-version، architecture
actions/cache تخزين التبعيات path، key، restore-keys
docker/build-push-action بناء ونشر صور Docker context، file، platforms، tags، push، build-args
actions/upload-artifact رفع مخرجات البناء name، path، if-no-files-found
actions/download-artifact تنزيل الملفات name، path
github/email-actions إرسال إشعارات بريد إلكتروني إلى، موضوع، محتوى، المرفقات
peter-evans/create-pull-request إنشاء طلبات دمج عبر سير العمل فرع، عنوان، جسم، العلامات، القاعدة
actions/github-script تشغيل JavaScript عشوائي في سير العمل نص، github-token

معلمات الفعل

معلمات عامة لاستدعاء أي فعالية:

- name: بعض الفعل أو الخطوة
  uses: owner/repo@ref
  with:
    param1: قيمة
    param2: قيمة
  env:
    ENV_VAR: قيمة
  if: ${{ حالة }}
  run: أمر_لتشغيل
  shell: bash|pwsh|python|sh
  continue-on-error: true|false
  • with: المعلمات المرسلة إلى الفعل (انظر وثائق الفعل للحصول على جميع الخيارات)
  • env: المتغيرات البيئية للمهمة
  • if: تنفيذ شرطي
  • run: أوامر نمطية (إذا لم تستخدم فعالية)
  • shell: النمط المستخدم لتشغيل الخطوة
  • continue-on-error: المتابعة حتى لو فشلت الخطوة

تعريف المدخلات الخاصة بالفعل

في معلومات الفعل الخاصة بك (action.yml):

inputs:
  example-input:
    description: 'مثال على المدخل'
    required: false
    default: 'القيمة الافتراضية'

عند استخدامه في سير العمل:

- uses: my/action@v1
  with:
    example-input: 'قيمة مخصصة'

تُستخدم كمتغير بيئة INPUT_EXAMPLE_INPUT عند تشغيل الفعل.

مثال: سير عمل مع معلمات يدوية

name: النشر
on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'بيئة النشر'
        required: true
        default: 'production'
        type: string
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: فك تشفير الكود
        uses: actions/checkout@v4
      - name: النشر إلى البيئة
        run: echo "النشر إلى ${{ github.event.inputs.environment }}"

سوق الفعاليات

  • تتوفر آلاف الفعاليات القابلة لإعادة الاستخدام في سوق GitHub.
  • تشمل الفئات: نشر السحابة، أدوات الإشعارات، الإطارات الاختبارية، تحليل الكود، وغيرها.
  • استكشاف: actions/checkout، actions/setup-node، docker/build-push-action، actions/cache، actions/upload-artifact، وغيرها الكثير.

نصائح سريعة

  • ضع ملفات السير في .github/workflows.
  • استخدم workflow_dispatch مع inputs للتشغيل اليدوي والمُعلَّم.
  • استخدم فعالية cache لتسريع تثبيت التبعيات.
  • استخدم مصفوفة المهام matrix لاختبار إصدارات OS/التشغيل المختلفة.
  • استخدم السرّيات للبيانات الحساسة، ويرجع إليها كـ ${{ secrets.SECRET_NAME }}.

تغطي هذه الملاحظات المهمة أساسيات استخدام، تكوين، وتوسيع GitHub Actions للتلقائية، CI/CD، وغيرها. للحصول على تفاصيل إضافية وتحديثات، تحقق دائمًا من الوثائق الرسمية لـ GitHub ومواقع الفعاليات.

أفعال GitHub الشائعة

إليك قائمة عملية من الأفعال الشائعة المستخدمة لتحسين CI/CD، الاختبار، البناء، النشر، والمهام المتعلقة بالسير:

الأفعال الرسمية الأساسية

الفعل الغرض المعلمات الرئيسية
actions/checkout فك تشفير كود المستودع ref، submodules
actions/setup-node إعداد بيئة Node.js node-version، cache
actions/setup-python إعداد بيئة Python python-version
actions/setup-java إعداد JDK Java distribution، java-version
actions/cache تخزين التبعيات ومخرجات البناء path، key، restore-keys
actions/upload-artifact رفع مخرجات البناء name، path
actions/download-artifact تنزيل الملفات من السير name، path
actions/github-script تشغيل JavaScript باستخدام سياق GitHub وواجهة API script
actions/create-release إنشاء إصدار GitHub tag_name، release_name
actions/upload-release-asset رفع الأصول إلى الإصدار upload_url، asset_path
actions/labeler تطبيق العلامات تلقائيًا على القضايا/طلبات الدمج repo-token، configuration-path

الأفعال المجتمعية والطرف الثالث الشائعة

الفعل الغرض
docker/build-push-action بناء ونشر صور Docker
actions/setup-go إعداد بيئة Go
super-linter/super-linter تحليل الكود تلقائيًا
trufflesecurity/trufflehog مسح السرّيات والهويات
peaceiris/actions-gh-pages نشر المواقع الثابتة إلى GitHub Pages
JamesIves/github-pages-deploy-action نشر المشاريع إلى GitHub Pages
peter-evans/create-pull-request إنشاء طلبات الدمج تلقائيًا
softprops/action-gh-release إنشاء ورفع إصدارات GitHub
ad-m/github-push-action دفع التغييرات مرة أخرى إلى مستودع GitHub
actions/setup-dotnet إعداد .NET SDK
azure/login تسجيل الدخول إلى Azure
google-github-actions/auth تسجيل الدخول إلى Google Cloud

أفعال الاختبار، QA، والรายงาน

الفعل الغرض
actions/setup-ruby إعداد بيئة Ruby
codecov/codecov-action رفع تقارير تغطية الكود إلى Codecov
coverallsapp/github-action رفع نتائج التغطية إلى Coveralls
dorny/test-reporter ربط نتائج الاختبارات بـ GitHub Checks
stefanzweifel/git-auto-commit-action التزام تلقائي ودفع التغييرات في الملفات

أفعال النشر والإشعارات

الفعل الغرض
appleboy/scp-action رفع الملفات باستخدام SCP
SamKirkland/FTP-Deploy-Action نشر الملفات عبر FTP/FTPS
cypress-io/github-action تشغيل اختبارات Cypress end-to-end
slackapi/slack-github-action إرسال رسائل إلى Slack
dawidd6/action-send-mail إرسال بريد إلكتروني أثناء تشغيل السير

أفعال المساعدية وإدارة السير

الفعل الغرض
peter-evans/repository-dispatch تفعيل سير العمل في مستودع خارجي
fregante/setup-git-user إعداد بيانات المستخدم لـ Git للمشاركات
andymckay/labeler تطبيق العلامات على القضايا والطلبات بناءً على المسارات
actions/configure-pages إعداد النشر إلى GitHub Pages
EndBug/add-and-commit إضافة وحفظ الملفات داخل السير
dangoslen/changelog-enforcer التحقق من تحديث سجل التغييرات لطلبات الدمج

كيفية العثور على المزيد

هناك العديد من أفعال GurHub التي تمكن من تلقائية السير مثل الاختبارات التلقائية، النشر إلى الإنتاج، الإشعارات، والتكامل مع خدمات أخرى. يعرض سوق GitHub آلاف الأفعال عبر فئات مثل الاختبار، الأمان، النشر، الإشعارات، جودة الكود، والتكاملات. قوائم مُعدة مثل “Awesome Actions” هي أيضًا مفيدة للإلهام والاكتشاف.

روابط مفيدة