
تعلم GitHub Actions خطوة بخطوة
M. Zakyuddin Munziri
@zakiego
كتب أصلاً بـ Bahasa Indonesia.
الخلفية
هناك العديد من الأشياء التي يمكنك القيام بها مع GitHub Actions. من بينها، يمكنني تشغيل سكريبت لجمع البيانات من موقع KPU (لجنة الانتخابات الإندونيسية)، كل يوم، تلقائياً، دون الحاجة إلى تشغيله يدوياً (zakiego/data-pemilu-2024). شيء آخر يمكنك القيام به هو نشر موقع ويب في كل مرة يتم فيها دفع الكود إلى المستودع (cloudflare/pages-action).
المتطلبات الأساسية
الافتراض لقراء هذا المقال هو أنهم يفهمون بالفعل git، لإنشاء مستودع والدفع إلى مستودع. سيكون من المفيد جداً أيضاً إذا كنت تستخدم الطرفية بشكل متكرر.
المقدمة
ببساطة شديدة، GitHub Actions هو خادم مملوك لـ GitHub يمكننا استعارته لتشغيل الكود. يمكننا تشغيل الكود في أي وقت، على سبيل المثال، نريد تشغيله مرة كل ساعة. أو يمكننا أيضاً تشغيله في كل مرة يكون هناك دفع إلى مستودع GitHub.
بمعنى أكثر تعقيداً، GitHub Actions هو منصة لتشغيل التكامل المستمر والتسليم المستمر (CI/CD) لأتمتة عملية البناء والاختبار والنشر.
الهيكل
أولاً، نحتاج إلى إعداد مجلد مشروع محلياً، على سبيل المثال، لنسميه belajar-github-action. لإنشاء سكريبت GitHub Actions، نحتاج إلى وضعه داخل المجلد /belajar-github-action/.github/workflows/{ضعه هنا}.
لنقم بإنشاء ملف يسمى run.yml، هذا الملف له تنسيق yml. يمكننا تسمية الملف بأي اسم بحرية، ويمكننا حتى إنشاء عدة ملفات GitHub Actions في مستودع واحد.
├── README.md
├── .github
│ └── workflows
│ └── run.ymlهناك 3 مكونات مهمة في ملف GitHub Actions:
- ما هو اسم سير العمل؟
- متى يجب تشغيل سير العمل؟
- ما الأشياء التي يجب تشغيلها؟
يتم بعد ذلك توضيح هذه الأسئلة في ملف GitHub Actions بسيط كما يلي:
name: Belajar Github Action
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "Hello, world!"
- run: echo "This is my first Github Action"
- run: echo "I'm learning how to use Github Action"يمكن رؤية كيفية تشغيل الإجراء في zakiego/belajar-github-action/actions.
يمكن رؤية الكود المصدري للإجراء في zakiego/belajar-github-action/.github/workflows/run.yml
اسم سير العمل هذا هو "Belajar Github Action".
متى سيتم تشغيل سير العمل هذا؟ عندما يكون هناك "push". ببساطة، هذا يعني عندما يتم دفع الكود إلى المستودع، سيتم تشغيل سير العمل هذا.
jobs هي مجموعة من الوظائف التي نقوم بإنشائها. في مجموعة واحدة، يمكننا إنشاء عدة وظائف فرعية، لكن في هذا المثال، نقوم بإنشاء وظيفة فرعية واحدة فقط، وهي 'build'.
داخل build يوجد runs-on و steps.
runs-on هو الجهاز المستخدم لتشغيل سير العمل، يوفر GitHub نظام Ubuntu Linux و Microsoft Windows و macOS. بالإضافة إلى ذلك، يمكننا أيضاً تشغيل GitHub Actions على خادمنا الخاص باستخدام وضع الاستضافة الذاتية (docs).
أخيراً، steps هي الخطوات أو جوهر السكريبت الذي نريد تشغيله.
على سبيل المثال، إذا أردنا تشغيل سكريبت index.ts باستخدام bun، سيبدو سير العمل هكذا (source):
name: my-workflow
jobs:
my-job:
name: my-job
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bun install
- run: bun index.ts
- run: bun run buildأو مثال آخر، إذا أردنا تشغيل عملية البناء والاختبار لكود Golang، في كل مرة يتم فيها دفع الكود إلى المستودع (source):
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: "1.21.x"
- name: Install dependencies
run: go get .
- name: Build
run: go build -v ./...
- name: Test with the Go CLI
run: go testملاحظات إضافية
إذا لاحظت، هناك استخدام لـ
actions/checkout@v4oven-sh/setup-bun@v1actions/setup-go@v4
ما هي وظائفها؟
باختصار، uses هي عملية نستخدم فيها نوعاً من المكتبات الجاهزة للاستخدام لتبسيط عملية العمل.
oven-sh/setup-bun@v1 يعمل على إعداد bun و actions/setup-go@v4 يعمل على إعداد Golang تلقائياً، لذلك لا نحتاج إلى القلق بشأن curl أو خطوات طويلة لتثبيتها.
في هذه الأثناء، actions/checkout@v4 مثير للاهتمام.
على سبيل المثال، إذا كان لدينا ملف index.ts في المستودع. إذا أردنا تشغيل هذا الكود، نحتاج إلى عمل checkout باستخدام actions/checkout@v4، ثم يمكننا تشغيله. إذا لم نستخدم actions/checkout@v4، فإن GitHub Actions لا يملك حق الوصول إلى مستودعنا، مما يعني أنه لا يعرف ما هو ملف index.ts الذي نريد تشغيله.
الخاتمة
لا يزال هناك الكثير لنتعلمه. على سبيل المثال، schedule (#schedule) للتشغيل في فترات زمنية معينة. أو pull_request (#pull_request) للتشغيل في كل مرة يكون هناك طلب سحب. يمكننا حتى تشغيل GitHub Actions عبر API، وهو repository_dispatch (#repository_dispatch).
المراجع
كُتب في الأصل في 14 مارس 2024 في بنجرماسين
اكتمل في 30 مارس 2024 م/19 رمضان 1445 هـ في بيلايهاري، 7:53 صباحاً
تم التحرير في 1 أبريل 2024 في بنجرماسين، 16:22


