0%
النشر دون تدخل يدوي

النشر

شرط الفرع، والصورة المنشورة، والتراجع المُعَدّ مسبقًا.

10-15 دقيقة

نادرًا ما يفشل النشر اليدوي في المرة الأولى. إنه يفشل في المرة الثانية عشرة، في مساء يوم خميس، حين يكون الشخص الذي يعرف الترتيب الدقيق للأوامر في إجازة، ويقلب من حلّ محله خطوتين. والإجراء المكتوب في ملف DEPLOIEMENT.md ينتهي دائمًا إلى الاختلاف عمّا يُفعل فعلًا، لأن شيئًا لا يتحقق من أنه محدَّث. أما الـ workflow فهو الإجراء نفسه: إن كان خاطئًا فشل، وعرفتم ذلك.

غير أن أتمتة النشر لا تقتصر على إضافة job أخير إلى سلسلة الاختبارات. هناك ثلاثة أسئلة يجب حسمها قبل كتابة أي سطر: ما الشرط الدقيق الذي ينطلق عنده النشر، وما الـ artifact المحدد الذي يُنشر، وكيف نعود إلى الحالة السابقة. السؤال الثالث هو الأكثر تأجيلًا، وهو الأغلى ثمنًا في اليوم الذي يغيب فيه جوابه. إن النشر الآلي بلا تراجع مُعَدّ مسبقًا لا يفعل سوى تسريع وصول الحوادث إلى الإنتاج.

شرط التشغيل

يجب أن ينطلق النشر في حالة واحدة فقط: commit مدموج في الفرع الرئيسي وجميع فحوصاته خضراء.

name: Deploiement

on:
  push:
    branches: [main]

concurrency:
  group: deploiement-production
  cancel-in-progress: false

permissions:
  contents: read

jobs:
  tests:
    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 test

  deployer:
    needs: tests
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest
    environment:
      name: production
      url: https://exemple.com
    steps:
      - run: echo "Deploiement en cours"

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!