قائمة مصغرة لإجراءات GitHub Actions - الهيكل القياسي وقائمة بأهم الإجراءات المفيدة
بعض المعلومات حول الإجراءات الشائعة في GitHub وبنائها.
GitHub Actions هي منصة تلقائية وCI/CD ضمن GitHub، تُستخدم لبناء، اختبار، ونشر الكود بناءً على الأحداث مثل الدفعات، طلبات الدمج، أو حسب الجدول.
بالإضافة إلى GitHub القياسي، يمكنك استخدام GitHub Actions في خادم Gitea المضيف الذاتي.
يغطي هذا الملخص هيكل 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” هي أيضًا مفيدة للإلهام والاكتشاف.
روابط مفيدة
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- قائمة Git
- Gitea - تثبيت وتقييم
- نسخ احتياطي واستعادة خادم Gitea
- استخدام Gitea Actions لنشر موقع Hugo إلى AWS S3
- Gitflow: الخطوات، البديلة، المزايا، والعيوب
- DevOps مع GitOps - Argo CD، Flux، Jenkins X، Weave GitOps وغيرها