
إجراءات جيثبهي منصة CI/CD الأكثر استخدامًا على نطاق واسع في عام 2026. وهي مجانية لعمليات إعادة الشراء العامة و2000 دقيقة شهريًا للقطاعات الخاصة، وتقوم بأتمتة الاختبار والبناء والنشر مباشرةً من مستودع GitHub الخاص بك. يغطي هذا الدليل كل شيء بدءًا من سير العمل الأول وحتى نشر الإنتاج.
📋 Table of Contents
المفاهيم الأساسية
- سير العمل:ملف YAML في
.github/workflows/ - الحدث:الزناد (الدفع، العلاقات العامة، الجدول الزمني، دليل)
- الوظيفة:مجموعة من الخطوات التي تعمل على عداء
- الخطوة:أمر أو إجراء فردي
- عداء:جهاز افتراضي حيث يتم تشغيل مهمتك (Ubuntu، Windows، macOS)
سير العمل الأول: اختبار الدفع
# .github/workflows/test.yml
name: Test
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Run tests
run: pytest --cov=. --cov-report=xml
- name: Upload coverage
uses: codecov/codecov-action@v4
بناءات المصفوفة (اختبار الإصدارات المتعددة)
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: pip install -r requirements.txt && pytest
النشر إلى الإنتاج على العلامة
name: Deploy
on:
push:
tags: ['v*']
jobs:
deploy:
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: |
docker build -t myapp:${{ github.ref_name }} .
docker tag myapp:${{ github.ref_name }} registry.example.com/myapp:latest
- name: Push to registry
run: |
echo ${{ secrets.REGISTRY_TOKEN }} | docker login registry.example.com -u ci --password-stdin
docker push registry.example.com/myapp:latest
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
docker pull registry.example.com/myapp:latest
docker compose up -d
تبعيات التخزين المؤقت (إنشاءات أسرع)
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
- name: Cache node_modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
استخدام الأسرار
قم بتخزين مفاتيح واجهة برمجة التطبيقات في إعدادات GitHub > الأسرار والمتغيرات > الإجراءات. الوصول إلى سير العمل باستخدام${{ secrets.MY_KEY }}. لا تتم طباعة الأسرار أبدًا في السجلات.
- name: Send deploy notification
run: |
curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
-H 'Content-type: application/json' \
--data '{"text": "Deployed ${{ github.ref_name }}"}'
الخلاصة
تلغي إجراءات GitHub الحاجة إلى بنية تحتية منفصلة لـ CI/CD. ابدأ بسير عمل اختباري بسيط، وأضف تصميمات المصفوفة، ثم قم بالترقية إلى النشر التلقائي الذي يتم تشغيله بواسطة العلامات. تعمل تخفيضات التخزين المؤقت على إنشاء أوقات بنسبة 50-80٪.
🔗 Share this article
✍️ Leave a Comment