مواد پر جائیں

GitHub Actions کے ذریعے تعیناتی

اس شخص کو Vercel میں شامل کریں تاکہ تعینات کر سکے۔ یا ایسا نہ کریں۔

ایک تاریخی GitHub Actions ورک فلو نے ہر انجینئر کے لیے Vercel نشست خریدے بغیر مشترک اسٹیجنگ اور مجاز پروڈکشن اجرا کیسے سنبھالے۔

پڑھنے کا وقت: 5 منٹتحریر

ڈیش بورڈ تک رسائی اور تعیناتی کی رسائی ایک چیز نہیں

اس اطلاق کے وقت Vercel Pro کی قیمت ہر نشست کے لیے $20 تھی۔ تین انجینئرز ماہانہ $60 اور پانچ یا چھ $100 سے $120 خرچ کرتے۔ ٹیم نے منصوبے کی ایک $20 نشست رکھی اور Vercel CLI کے ذریعے تعیناتی GitHub Actions میں منتقل کردی۔

ریپوزٹری نے VERCEL_TOKEN، VERCEL_ORG_ID اور VERCEL_PROJECT_ID کو خفیہ قدروں کے طور پر محفوظ کیا۔ ہر انجینئر کو ڈیش بورڈ اسناد دیے بغیر معمول کے ٹرنک پر مبنی مرج راستے سے جائزہ شدہ کام فراہم کیا جاسکتا تھا۔

اسٹیجنگ کو پروڈکشن سے الگ کریں

میں نے تعیناتی کو دو ورک فلوز میں تقسیم کیا۔ main میں ہر مرج اسٹیجنگ کو اپ ڈیٹ کرتا تھا؛ پروڈکشن کے لیے QA کے بعد کسی مجاز GitHub صارف کی دستی ریلیز درکار تھی۔

پل ریکوئسٹ -> جائزہ -> main میں مرج
  -> خودکار اسٹیجنگ بلڈ اور تعیناتی
  -> QA
  -> مجاز پروڈکشن ورک فلو
  -> ٹیگ، اجرا، تعیناتی، Slack اطلاع

ریپوزٹری تک رسائی سے پروڈکشن رسائی خود نہیں ملتی تھی۔ اصل ورک فلو میں Elusive7733 پروڈکشن شروع کرسکتا تھا، جبکہ باقی ٹیم پل ریکوئسٹس اور اسٹیجنگ سے کام فراہم کرتی تھی۔

جائزے کے ماحول کو خودکار بنائیں

main پر ہر پُش نے اسٹیجنگ ماحول پُل کیا، --target=staging کے ساتھ پری بلٹ آرٹیفیکٹ بنایا، اور عین وہی آؤٹ پٹ تعینات کیا۔ مشترک کنکرنسی گروپ نے cancel-in-progress: true استعمال کیا تاکہ نئی main کَمٹ، پرانی زیرِ انتظار یا چلتی اسٹیجنگ تعیناتی بدل دے۔

concurrency:
  group: staging-deploy
  cancel-in-progress: true

- run: vercel pull --yes --environment=staging --token=$VERCEL_TOKEN
- run: vercel build --target=staging --token=$VERCEL_TOKEN
- run: vercel deploy --prebuilt --target=staging --token=$VERCEL_TOKEN

پروڈکشن تعیناتی سوچ سمجھ کر کریں

دستی پروڈکشن ورک فلو نے patch، minor یا major قبول کیا۔ مکمل Git تاریخ کے ساتھ اس نے تازہ ٹیگ پڑھا، اگلا سیمینٹک ورژن نکالا، ٹیگ بنا کر پُش کیا، پروڈکشن ماحول پُل کیا، پری بلٹ آرٹیفیکٹ بنایا، اور اسے تعینات کیا۔

الگ skip-tagging راستے نے دوبارہ تعیناتی کے لیے تازہ ورژن استعمال کیا۔ صرف بنیادی ڈھانچا دوبارہ چلانے کی خاطر بحالی کو جھوٹا نیا اجرا نمبر بنانے کی ضرورت نہ تھی۔

on:
  workflow_dispatch:
    inputs:
      version_type:
        type: choice
        options: [patch, minor, major]
      skip_tagging:
        type: boolean
        default: false

آپریشنل سراغ چھوڑیں

ٹیگ شدہ اجرا کے بعد gh release create --generate-notes نے تبدیلی نامہ بنایا۔ .github/release.yml نے پل ریکوئسٹس کو لیبل سے گروپ کیا۔ ورک فلو نے تعیناتی کا میٹا ڈیٹا شامل کیا اور Slack ویب ہُک سے ترتیب شدہ اجرا بھیجا۔

میں نے پہلے AI چینج لاگ جنریٹر بنایا اور تین دن بعد حذف کردیا۔ GitHub پہلے ہی ہر مرج شدہ پل ریکوئسٹ اور اس کا لنک دکھاتا تھا، اس لیے ماڈل نے مفید ریلیز معلومات شامل کیے بغیر صرف کوڈ میں اضافہ کیا۔

اسی اجازت پر خرچ کریں جس کی نظام کو واقعی ضرورت ہے

عملی ترتیب سادہ تھی: جائزہ شدہ پل ریکوئسٹ مرج کریں، اسٹیجنگ تعینات کرکے تصدیق کریں، پھر مجاز صارف کو پروڈکشن شروع کرنے دیں۔ ورژن ٹیگز، GitHub اجرا اور Slack پیغامات نے Vercel ڈیش بورڈ سے باہر اجرا کا سراغ چھوڑا۔

  • ڈیش بورڈ رسائی کی جگہ لینے والی اسناد کے لیے ریپوزٹری اور ماحول کی حفاظت استعمال کریں۔
  • خودکار جائزہ تعیناتی کو دانستہ پروڈکشن عمل سے الگ کریں۔
  • ہر ماحول کے لیے ایک بار بلڈ کریں اور پہلے سے تیار شدہ آرٹیفیکٹ تعینات کریں۔
  • کوئی دوسرا جنریشن سسٹم شامل کرنے سے پہلے بلٹ اِن ریلیز نوٹس کو ڈیفالٹ سمجھیں۔