ديف أوبس

استخدام GitHub Actions للتكامل والنشر

استخدام GitHub Actions لتحقيق التكامل المستمر والنشر المستمر

مقدمة

أصبح التكامل المستمر (Continuous Integration – CI) والنشر المستمر (Continuous Deployment – CD) جزءًا أساسيًا من سير العمل في تطوير البرمجيات الحديثة. مع تزايد تعقيد التطبيقات والبرمجيات، أصبح من الضروري أن ندمج أساليب وأدوات تتيح لنا العمل بفعالية أكبر وتؤدي إلى تحسين جودة البرمجيات وسرعة إصدارها. من بين الأدوات التي ظهرت حديثًا والتي أصبحت واحدة من الحلول الرائدة في هذا المجال هي GitHub Actions. تعتبر GitHub Actions أداة قوية لإدارة العمليات التلقائية المتعلقة بالتكامل المستمر والنشر المستمر، وهي تقدم إمكانية أتمتة مختلف جوانب سير العمل في تطوير البرمجيات من خلال إنشاء إجراءات مخصصة وقابلة للتنفيذ داخل مستودعات GitHub.

ما هو GitHub Actions؟

GitHub Actions هي أداة من أدوات GitHub التي تتيح للمطورين أتمتة المهام المختلفة مثل البناء، الاختبار، والنشر. يتم ذلك عبر ما يعرف بـ “الإجراءات” (Actions)، وهي خطوات محددة يمكن تنفيذها في بيئات معينة (مثل بيئات الإنتاج أو الاختبار). يمكن لمطوري البرمجيات بناء وتنفيذ سير العمل (Workflow) الخاص بهم باستخدام هذه الأداة.

من خلال استخدام GitHub Actions، يمكننا أتمتة العديد من العمليات، مثل:

  • التكامل المستمر (CI): وهي عملية دمج تغييرات الشيفرة البرمجية في مستودع مركزي بشكل مستمر.

  • النشر المستمر (CD): وهي عملية نشر الشيفرة البرمجية تلقائيًا إلى بيئات الإنتاج أو الاختبار بعد اجتياز اختبارات التكامل المستمر.

كيفية استخدام GitHub Actions في التكامل المستمر

1. إعداد مستودع GitHub لتمكين GitHub Actions

لبدء استخدام GitHub Actions، يجب أولًا أن يكون لديك مستودع على GitHub. بعد إنشاء مستودعك، يمكنك إعداد GitHub Actions بسهولة من خلال الخطوات التالية:

  • إنشاء مجلد Workflow: داخل المستودع، يجب أن تحتوي الشجرة البرمجية على مجلد مخصص للـ workflows، والذي يُسمى عادةً .github/workflows.

  • إضافة ملف تكوين Workflow: داخل هذا المجلد، يمكنك إضافة ملف YAML يحتوي على إجراءات سير العمل الخاصة بك.

مثال على ملف YAML لتعريف سير العمل:

yaml
name: CI Workflow on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test

في هذا المثال، سيتم تشغيل سير العمل عند حدوث push أو pull request على فرع main. ستقوم الخطوات التالية بالتنفيذ:

  1. التحقق من الكود (Checkout).

  2. إعداد بيئة Node.js.

  3. تثبيت الاعتماديات.

  4. تشغيل اختبارات الوحدة.

2. تنفيذ البناء والاختبارات التلقائية

من الأمور الأساسية في التكامل المستمر هو تنفيذ اختبارات الوحدة والبناء التلقائي للشيفرة البرمجية بمجرد إجراء تغييرات. باستخدام GitHub Actions، يمكن أتمتة هذه العملية بحيث يتم إجراء الاختبارات والتأكد من أن الكود يعمل بشكل صحيح قبل دمجه في الفرع الرئيسي.

إليك مثال آخر يستخدم Python لتنفيذ اختبار للتطبيق:

yaml
name: Python CI on: push: branches: - main jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Run tests run: | pytest

هنا، يقوم GitHub Actions بتثبيت بيئة Python، ثم يثبت الاعتماديات الخاصة بالمشروع، وأخيرًا يقوم بتشغيل اختبارات الوحدة باستخدام pytest.

3. نشر الشيفرة البرمجية تلقائيًا

إحدى الفوائد العظيمة للتكامل المستمر هو أنه يسمح بإجراء النشر المستمر إلى بيئات متعددة مثل بيئة الإنتاج أو الاختبار. يمكن تكوين GitHub Actions لنشر التطبيق تلقائيًا بعد اجتياز جميع الاختبارات بنجاح.

على سبيل المثال، إذا كنت تستخدم خدمات مثل Heroku أو AWS للنشر، يمكن تكوين GitHub Actions للتفاعل مع هذه الخدمات. إليك مثال على كيفية نشر تطبيق إلى Heroku باستخدام GitHub Actions:

yaml
name: Deploy to Heroku on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Heroku CLI run: curl https://cli-assets.heroku.com/install.sh | sh - name: Login to Heroku run: echo ${{ secrets.HEROKU_API_KEY }} | heroku auth:token - name: Deploy to Heroku run: git remote add heroku https://git.heroku.com/${{ secrets.HEROKU_APP_NAME }}.git && git push heroku main

في هذا المثال، يتم نشر التطبيق إلى Heroku بعد دفع التحديثات إلى الفرع الرئيسي، ويعتمد هذا على متغيرات سرية (HEROKU_API_KEY و HEROKU_APP_NAME) المخزنة في إعدادات المستودع.

الاستفادة من GitHub Actions في النشر المستمر

1. تحسين أوقات النشر

من خلال أتمتة عمليات النشر باستخدام GitHub Actions، يمكن تقليل الوقت الذي يستغرقه نقل الشيفرة البرمجية من بيئة التطوير إلى بيئة الإنتاج. هذه الأتمتة تؤدي أيضًا إلى تقليل الأخطاء البشرية التي يمكن أن تحدث أثناء عمليات النشر اليدوية.

2. تنفيذ التحقق المستمر

يسمح GitHub Actions بتطبيق اختبارات شاملة على الشيفرة البرمجية قبل النشر. هذه الاختبارات تضمن أن جميع الوظائف تعمل كما هو متوقع في بيئات مختلفة. يمكن إضافة اختبارات مثل اختبار الأداء أو اختبارات الأمان للكود قبل أن يصبح جاهزًا للنشر.

3. النشر في بيئات متعددة

يمكن تكوين GitHub Actions للتعامل مع بيئات متعددة مثل التطوير والاختبار والإنتاج. يمكن إعداد سير العمل بحيث يوجه التحديثات إلى بيئة معينة بناءً على معايير محددة. على سبيل المثال، يمكن إجراء النشر إلى بيئة الاختبار أولًا، ثم إلى الإنتاج بعد اجتياز اختبارات معينة.

تحسين سير العمل باستخدام GitHub Actions

1. استخدام الأفعال (Actions) الجاهزة

توفر GitHub العديد من الأفعال الجاهزة التي يمكن استخدامها لتنفيذ المهام المختلفة، مثل نشر الكود إلى AWS أو Azure، تشغيل Docker، أو حتى نشر تطبيقات إلى Firebase. يمكن البحث في مكتبة الأفعال على GitHub لاكتشاف الأفعال التي قد تناسب احتياجاتك.

2. تخصيص سير العمل

تتيح GitHub Actions تخصيص سير العمل باستخدام معايير مختلفة مثل:

  • الفروع: يمكنك تخصيص سير العمل ليتم تنفيذه فقط عندما يتم الدفع إلى فرع معين، مثل main أو develop.

  • المؤشرات: يمكنك تحديد سير العمل ليعمل فقط عندما تتغير ملفات معينة.

  • المتغيرات السرية: يمكنك استخدام المتغيرات السرية لتخزين مفاتيح API أو معلومات حساسة أخرى دون تعرضها للعلن.

3. التوزيع التلقائي في بيئات متعددة

من خلال الاستفادة من أداة GitHub Actions، يمكن توزيع الإصدارات على خوادم متعددة تلقائيًا، مثل خوادم الاختبار، الإنتاج، أو حتى منصات الحوسبة السحابية مثل Google Cloud أو Microsoft Azure. هذا يضمن نشر الشيفرة البرمجية بأسرع وقت ممكن إلى البيئة المناسبة.

الخاتمة

في النهاية، يعتبر GitHub Actions أداة قوية تساعد المطورين على أتمتة عمليات التكامل المستمر والنشر المستمر. من خلال إعداد سير العمل الصحيح، يمكن تحسين كفاءة سير العمل، تقليل الأخطاء البشرية، وتسريع عملية نشر البرمجيات. تتيح GitHub Actions للمطورين إمكانية العمل على تطبيقاتهم بشكل أسرع وأكثر أمانًا، مما يجعلها أداة أساسية في معظم بيئات تطوير البرمجيات الحديثة.