النشر
شرط الفرع، والصورة المنشورة، والتراجع المُعَدّ مسبقًا.
نادرًا ما يفشل النشر اليدوي في المرة الأولى. إنه يفشل في المرة الثانية عشرة، في مساء يوم خميس، حين يكون الشخص الذي يعرف الترتيب الدقيق للأوامر في إجازة، ويقلب من حلّ محله خطوتين. والإجراء المكتوب في ملف 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 للمشاركة في النقاش