إجراءات جيثب هي منصة CI/CD الأكثر شهرة في عام 2026 — وهي مدمجة في GitHub، مع سوق ضخم من الإجراءات المعدة مسبقًا. يبني هذا الدليل مسارًا كاملاً من الاختبار إلى النشر، بالكامل في ملفات YAML الموجودة في الريبو الخاص بك.
📋 Table of Contents
كيف تعمل إجراءات جيثب
سير العمل موجود في.github/workflows/*.yml. يتم تشغيل كل سير عمل على الأحداث (طلب الدفع والسحب والجدول الزمني) ويحتوي علىوظائف التي تعمل علىالعدائين (الأجهزة الافتراضية المستضافة على GitHub). وظائف تحتوي علىالخطوات — إما أوامر shell أو قابلة لإعادة الاستخدامافعال.
سير عمل CI الأساسي
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
بناءات المصفوفة (اختبار الإصدارات المتعددة)
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm test
# Runs 9 combinations (3 OS x 3 Node versions) in parallel
تبعيات التخزين المؤقت
steps:
- uses: actions/checkout@v4
# setup-node has built-in caching
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm' # caches ~/.npm automatically
# Or cache manually for other tools
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
.venv
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
بناء ودفع صور دوكر
name: Build and Push
on:
push:
branches: [main]
jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
النشر مع البيئات والموافقات
jobs:
deploy:
runs-on: ubuntu-latest
needs: [test] # only deploy if tests pass
environment:
name: production # can require manual approval in repo settings
url: https://example.com
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /app
docker compose pull
docker compose up -d
إدارة الأسرار
مخزن الأسرار فيإعدادات الريبو، ثم الأسرار والمتغيرات، ثم الإجراءات. قم بالإشارة إليها كـ${{ secrets.NAME }}. إنهم ملثمون في جذوع الأشجار ولم يتم كشفهم أبدًا. استخدم الأسرار الخاصة بالبيئة للتدريج مقابل الإنتاج.
steps:
- run: ./deploy.sh
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
سير العمل القابل لإعادة الاستخدام والإجراءات المركبة
# Call a reusable workflow to avoid duplication
jobs:
call-shared:
uses: ./.github/workflows/shared-test.yml
with:
node-version: '20'
secrets: inherit
# shared-test.yml declares:
# on:
# workflow_call:
# inputs:
# node-version:
# type: string
نصائح التحسين
- استخدم
needs:للتحكم في ترتيب الوظائف وتشغيل الوظائف المستقلة بالتوازي - تبعيات ذاكرة التخزين المؤقت – أكبر تسريع لمعظم خطوط الأنابيب
- إلغاء عمليات التشغيل القديمة:
concurrency: { group: ${{ github.ref }}, cancel-in-progress: true } - استخدم مرشحات المسار: قم بتشغيل سير العمل فقط عندما تتغير الملفات ذات الصلة
- إصدارات إجراء التثبيت (
@v4) للاستقرار والأمان
الأسئلة المتداولة
س: GitHub Actions vs GitLab CI vs Jenkins؟
ج: إجراءات GitHub إذا كانت التعليمات البرمجية الخاصة بك موجودة على GitHub – تكامل عميق وسوق ضخم. GitLab CI للتعليمات البرمجية المستضافة على GitLab. Jenkins لتحقيق أقصى قدر من التحكم/الاستضافة الذاتية أو احتياجات المؤسسة المعقدة. الإجراءات هي الأسهل لمشاريع GitHub.
س: هل إجراءات GitHub مجانية؟
ج: تحصل عمليات إعادة الشراء العامة على دقائق مجانية غير محدودة. تحصل اتفاقيات إعادة الشراء الخاصة على حصة مجانية شهرية، ثم تدفع بالدقيقة. بالنسبة لمعظم المشاريع الصغيرة ومفتوحة المصدر، فهي مجانية بشكل فعال.
س: كيف يمكنني تسريع سير العمل البطيء؟
ج: تبعيات ذاكرة التخزين المؤقت (الفوز الأكبر)، تشغيل المهام بالتوازي معneeds:، استخدم مرشحات المسار لتخطي عمليات التشغيل غير ذات الصلة، وإلغاء عمليات التشغيل القديمة مع مجموعات التزامن. الملف التعريفي للخطوات الأبطأ أولاً.
س: كيف أطلب الموافقة قبل نشر الإنتاج؟
ج: استخدم بيئات GitHub مع المراجعين المطلوبين. تكوينproduction البيئة في إعدادات الريبو للمطالبة بالموافقة اليدوية – تتوقف مهمة النشر مؤقتًا حتى يؤكد المراجع المعتمد.
س: هل يمكنني تشغيل مهام سير العمل وفقًا لجدول زمني؟
ج: نعم – استخدمon: schedule: - cron: '0 0 * * *' لعمليات التشغيل المجدولة (الإنشاءات الليلية، ومهام التنظيف، والفحوصات الدورية). يتحكم بناء جملة Cron في التوقيت.
الخلاصة
تتيح إجراءات GitHub إمكانية الوصول إلى CI/CD مع كل ما هو محدد في YAML في الريبو الخاص بك. يغطي هذا الدليل الأساسيات — سير عمل CI مع إنشاءات المصفوفة، والتخزين المؤقت للتبعية، وبناء صور Docker، والنشر مع موافقات البيئة. إن السوق الضخم للإجراءات المعدة مسبقًا يعني أنك نادرًا ما تكتب الأشياء من الصفر. ابدأ بسير عمل اختباري بسيط، وأضف مهام البناء والنشر بشكل متزايد، وقم بالتخزين المؤقت بقوة لتحقيق السرعة، واستخدم البيئات لبوابة عمليات نشر الإنتاج. إنه أسرع طريق للحصول على CI/CD احترافي للمشروعات التي تستضيفها GitHub.
🔗 Share this article
✍️ Leave a Comment