الفصل السادس: إنشاء أول Workflow في GitHub Actions
الآن سننتقل من الجانب النظري إلى أول Workflow حقيقية.
هذه المرحلة مهمة جداً لأنك ستبدأ برؤية كيف تتحول المفاهيم السابقة:
Repository
↓
Event
↓
Workflow
↓
Job
↓
Step
↓
Runner
إلى شيء حقيقي يعمل داخل GitHub.
قبل أن نبدأ
أريدك أن تنسى YAML مؤقتاً.
فكر بهذه الطريقة:
لديك موظف اسمه GitHub.
أنت تقول له:
عندما أرفع الكود
قم بتشغيل مهمة
واذهب إلى جهاز Ubuntu
واكتب Hello World
GitHub Actions هي مجرد طريقة لكتابة هذه التعليمات.
ما الذي سنبنيه؟
سنبني Workflow بسيطة جداً.
عند عمل Push:
Push
↓
GitHub Actions
↓
Ubuntu Runner
↓
echo "Hello World"
↓
Success
الخطوة الأولى: إنشاء Repository
لنفترض أن لديك Repository:
my-first-action
داخل GitHub.
شكل المشروع:
my-first-action
│
├── README.md
└── index.php
حالياً لا يوجد GitHub Actions.
أين يبحث GitHub عن Workflows؟
هنا نقطة مهمة جداً.
GitHub لا يبحث في أي مكان.
بل يبحث داخل مسار محدد فقط.
.github/workflows
احفظه جيداً.
إنشاء مجلد workflows
داخل المشروع:
my-first-action
│
└── .github
│
└── workflows
الاسم يجب أن يكون:
.github
وليس:
❌
github
أو:
❌
.githubs
ثم:
workflows
وليس:
❌
workflow
GitHub يبحث حصراً في:
.github/workflows
إنشاء أول Workflow
داخل:
.github/workflows
أنشئ ملفاً.
مثلاً:
hello.yml
يمكن تسميته:
test.yml
أو:
ci.yml
أو:
laravel.yml
الاسم لا يهم.
المهم أن يكون:
.yml
أو:
.yaml
أول Workflow كاملة
ضع هذا الكود:
name: Hello World Workflow
on:
push:
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Print Message
run: echo "Hello World"
لا تحفظها فقط
سنحللها حرفاً حرفاً.
السطر الأول
name: Hello World Workflow
ماذا يعني؟
اسم الـ Workflow.
GitHub سيعرض:
Hello World Workflow
داخل صفحة Actions.
ليس له أي تأثير على التنفيذ.
فقط اسم وصفي.
مثال:
name: Laravel CI
أو:
name: Deploy Production
الجزء الثاني
on:
push:
هذا يسمى:
Trigger
أو:
Event
معناه:
عند حدوث Push
شغل هذه Workflow
مثال:
git push origin main
فور وصول الكود إلى GitHub:
تبدأ Workflow.
كيف يقرأ GitHub هذا الجزء؟
on:
push:
يفهمها:
إذا حدث Push
ابدأ التنفيذ
الجزء الثالث
jobs:
هنا نقول لـ GitHub:
الآن سأعطيك مجموعة Jobs
تخيلها كصندوق يحتوي مهام.
الجزء الرابع
hello:
هذا اسم Job.
يمكن تسميتها:
test:
أو:
build:
أو:
deploy:
الاسم هنا:
hello:
أي:
اسم المهمة hello
الجزء الخامس
runs-on: ubuntu-latest
هذا من أهم الأسطر في GitHub Actions.
معناه:
أنشئ جهاز Ubuntu
ونفذ عليه المهمة
GitHub يقوم داخلياً بما يلي:
Create Ubuntu VM
↓
Execute Workflow
↓
Destroy VM
هذه الآلة تسمى:
Runner
ما معنى ubuntu-latest؟
يعني:
أحدث إصدار Ubuntu مدعوم
يمكن أيضاً:
runs-on: windows-latest
أو:
runs-on: macos-latest
الجزء السادس
steps:
الآن سنبدأ كتابة الخطوات.
كل Job تحتوي:
Step 1
Step 2
Step 3
...
GitHub ينفذها بالترتيب.
أول Step
- name: Print Message
هذه مجرد تسمية.
ستظهر في الواجهة:
Print Message
حتى تعرف ما الذي يحدث.
ليست مطلوبة.
لكن يفضل دائماً إضافتها.
الجزء الأهم
run: echo "Hello World"
هنا التنفيذ الحقيقي.
معناه:
اذهب إلى Ubuntu
وشغل هذا الأمر
GitHub فعلياً يفتح Terminal داخل Runner.
ثم يكتب:
echo "Hello World"
الناتج:
Hello World
ماذا يحدث بالكامل؟
عند Push:
Push
↓
GitHub
↓
Read Workflow
↓
Create Ubuntu Runner
↓
Execute Job hello
↓
Execute Step Print Message
↓
echo Hello World
↓
Finish
رفع Workflow إلى GitHub
بعد إنشاء الملف:
git add .
git commit -m "add github action"
git push
فور وصول Push:
سيبدأ التنفيذ.
أين أرى التنفيذ؟
داخل GitHub.
اذهب إلى:
Repository
↓
Actions
ستجد:
Hello World Workflow
اضغط عليها.
ستشاهد:
Workflow Run
ثم:
hello
ثم:
Print Message
كيف تبدو الشجرة؟
Workflow
│
└── hello Job
│
└── Print Message Step
مشاهدة Logs
هذه من أهم المهارات.
اضغط على:
Print Message
ستظهر:
Run echo "Hello World"
Hello World
هذا يسمى:
Logs
أي:
سجل التنفيذ
لماذا Logs مهمة؟
لأنها الوسيلة الأساسية لاكتشاف الأخطاء.
مثلاً:
إذا كتبت:
run: composer install
وفشل Composer.
ستجد الخطأ داخل Logs.
مثال عملي أكبر
لنكتب Workflow تحتوي أكثر من Step.
name: Learning Workflow
on:
push:
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Show Date
run: date
- name: Show Directory
run: pwd
- name: Print Message
run: echo "Hello GitHub Actions"
ما الذي سيحدث؟
Step 1
date
يعرض التاريخ.
مثال:
Sun May 31 2026
Step 2
pwd
يعرض المجلد الحالي.
مثال:
/home/runner/work
Step 3
echo "Hello GitHub Actions"
الناتج:
Hello GitHub Actions
كيف ينفذ GitHub هذه الخطوات؟
Create Runner
│
▼
Step 1
│
▼
Step 2
│
▼
Step 3
│
▼
Finish
ماذا يحدث إذا فشلت Step؟
مثال:
- name: Broken Command
run: abcxyz
هذا الأمر غير موجود.
الناتج:
command not found
وسيتحول التنفيذ إلى:
❌ Failed
ويتوقف الـ Job.
أول Workflow حقيقية للمحترفين
هذه أول Workflow أعتبرها حقيقية.
name: First CI
on:
push:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Show Files
run: ls -la
- name: Print Success
run: echo "Workflow Executed Successfully"
هنا ظهر شيء جديد:
uses:
وهذا أول Action حقيقية.
سنشرحها بالتفصيل في الفصل القادم.
لكن حالياً افهم أنها:
تحميل ملفات المشروع
إلى Runner
الصورة الذهنية النهائية
عندما ترى Workflow مثل:
name: Hello World Workflow
on:
push:
jobs:
hello:
runs-on: ubuntu-latest
steps:
- run: echo "Hello World"
يجب أن تراها هكذا:
عند Push
أنشئ Ubuntu Server مؤقت
نفذ Job اسمها hello
داخلها Step واحدة
شغل الأمر:
echo "Hello World"
ثم احذف السيرفر
إذا وصلت لهذه المرحلة فأنت بدأت فعلياً بفهم GitHub Actions، وليس مجرد حفظ YAML. وفي الفصل القادم سندخل إلى Events (Triggers) ونفهم جميع أنواع الأحداث التي يمكن أن تشغل Workflow مثل Push وPull Request وTag وRelease وSchedule وWorkflow Dispatch بالتفصيل الاحترافي.