6- إنشاء أول Workflow في GitHub Actions

الفصل السادس: إنشاء أول 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 بالتفصيل الاحترافي.