جامد ویب سائٹس کی میزبانی کے لیے آج 2 مقبول ترین پلیٹ فارمز ہیں: Netlify اور Google App Engine (GAE) Netlify نے حال ہی میں بہت زیادہ مقبولیت حاصل کی ہے کیونکہ یہ ایک ہی پلیٹ فارم میں جامد ویب سائٹس کی تعمیر اور تعیناتی کے ساتھ مربوط تجربہ فراہم کرتا ہے۔ GAE اس لحاظ سے زیادہ لچکدار ہے کہ یہ غیر جامد ویب سائٹس کو بھی سپورٹ کرتا ہے لیکن اس میں یقینی طور پر Netlify فراہم کرنے والے انضمام کی سطح کا فقدان ہے۔ تو میں اب بھی بہت سے معاملات میں GAE کیوں استعمال کروں گا؟ جواب آسان ہے GAE اکثر قیمتوں کے تعین کے بہتر اختیارات فراہم کرتا ہے۔ ایک ہی وقت میں یہ چند آسان ٹولز (GitHub ایکشنز اور Reliza Hub) کا استعمال کرتے ہوئے Netlify کی تمام خصوصیات رکھنے کی اجازت دیتا ہے جس کی میں اس مضمون میں وضاحت کروں گا۔ قیمتوں کا تعین جب GAE + GitHub ایکشنز کومبو زیادہ معنی رکھتا ہے تو مجھے پہلے قیمتوں کے تعین کے منظرناموں کا احاطہ کرنے دیں۔ کلیدی نقطہ تعمیر منٹ ہے۔ NetlifyâÃÂÃÂs مفت ٹائر فی مہینہ صرف 300 بلڈ منٹ دیتا ہے، جو کہ کسی بھی اکاؤنٹ سے زیادہ نہیں ہے۔ اگر آپ node.js ایپ جیسی کوئی چیز استعمال کر رہے ہیں جو جامد بنائی گئی ہے اور آپ کی تعمیرات میں اوسطاً 2-3 منٹ لگتے ہیں، تو آپ کو Netlify پر ماہانہ تقریباً 100+ بلڈز ملتے ہیں، جو آسانی سے کافی نہیں ہو سکتے۔ خاص طور پر اگر آپ کے پاس ایک سے زیادہ ویب سائٹ ہیں۔ اگر آپ کو Netlify پر مزید تعمیراتی منٹ کی ضرورت ہے تو یا تو $7 فی 500 اضافی منٹ ادا کریں، یا اگلے درجے پر جائیں جس میں 1000 منٹ شامل ہیں، لیکن لاگت $45/مہینہ ہے۔ دوسری طرف، GitHub ایکشنز پر آپ کو پرائیویٹ ریپوزٹریز کے لیے 2000 بلڈ منٹس مفت اور پبلک کے لیے لامحدود بلڈ منٹ ملتے ہیں۔ کہیں کہ آپ ایک دستاویزی ویب سائٹ بنا رہے ہیں اور اسے GitHub âÃÂàپر پبلک کرنے کا فیصلہ کرتے ہیں آپ کو GitHub ایکشنز پر لامحدود بلڈ منٹس ملتے ہیں اور اس سے ایک بہت بڑا فرق اگلا غور ٹریفک کے اخراجات ہیں۔ Netlify اپنے مفت درجے میں شامل ہر ماہ 100GB بینڈوتھ ایگریس فراہم کرتا ہے، جو کہ فراخدلی ہے۔ گوگل یومیہ 1 جی بی ایگریس مفت پیش کرتا ہے، جو اسے 30 جی بی فی مہینہ بناتا ہے۔ لہذا اگر آپ کا اخراج 30GB اور 100GB کے درمیان ہے تو آپ Netlify پر بہتر ڈیل حاصل کر سکتے ہیں۔ تاہم، ایک بار جب آپ 100GB سے گزر جاتے ہیں، Netlify آپ سے اگلے 100GB کے لیے اسی مہینے $20 چارج کرتا ہے۔ گوگل کی قیمتوں کا تعین کرنے کی پالیسی فی GB ایگریس ہے جس کی قیمت $0.12 ہے۔ اس کا مطلب یہ ہے کہ آپ Netlify پر $12/100GB âÃÂàبمقابلہ $20/100GB ادا کرتے ہیں لہذا ٹریفک پر منحصر ہے، آپ نکلنے کے امکان سے Netlify یا GAE پر بہتر ہوسکتے ہیں۔ لیکن بہت سے معاملات میں GAE یہاں بھی بہتر قیمت فراہم کرے گا۔ قیمتوں کے تعین کے بارے میں حتمی لفظ اگر آپ اپنی تعمیرات کے لیے GitHub ایکشنز یا CircleCI جیسی کوئی چیز استعمال کر رہے ہیں، تب بھی آپ Netlify پر تعینات کر سکتے ہیں جس سے GitHub ایکشنز زیادہ لچکدار نظام گوگل ایپ انجن پروجیکٹ کو ترتیب دینا ہم httpsconsole.cloud.google.com/appengine پر جاکر شروع کرتے ہیں اور ایک نیا پروجیکٹ بناتے ہیں۔ اگر آپ کے پاس پہلے سے ایک âÃÂàپہلے سے اوپر پر اپنے پروجیکٹ کے نام پر کلک کریں اور پھر پر کلک کریں۔ **نیا کام** پروجیکٹ کا نام درج کریں، یہاں پراجیکٹ آئی ڈی نوٹ کریں جو آپ کو مل رہا ہے (آپ کو بعد میں اس کی ضرورت ہوگی) میرے معاملے میں یہ ہے *âÃÂÃÂevie-landing-tutorialâÃÂÃÂ* âÃÂàاور **CREATE پر کلک کریں پھر اس پر سوئچ کریں صفحہ کے اوپری حصے پر پروجیکٹ سلیکٹر سے یہ پروجیکٹ پر کلک کریں **درخواست بنائیں** اور اپنا مطلوبہ علاقہ منتخب کریں۔ پھر جامد ایپلی کیشن کے لیے ازگر اور معیاری ماحول کو منتخب کریں (مفت درجے کا اطلاق صرف معیاری ماحول پر ہوتا ہے)۔ اس وقت آپ کی درخواست اگلے مراحل کے لیے تیار ہے۔ اپنے ڈومین کا نام اس ایپلیکیشن کی طرف اشارہ کرنے کے لیے، httpsconsole.cloud.google.com/appengine/settings/domains پر جائیں۔ اور کلک کریں **ایک حسب ضرورت ڈومین شامل کریں ہدایات پر عمل کریں اور DNS کو اپنے ڈومین سے Google کے فراہم کردہ ریکارڈز پر پوائنٹ کریں۔ جب یہ ہو جائے گا، گوگل خود بخود آپ کے ڈومین کو اس ایپلیکیشن کی طرف اشارہ کرے گا اور SSL سرٹیفکیٹ کا بھی انتظام کر دے گا۔ آخر میں، ہمیں سروس اکاؤنٹ تیار کرنے کی ضرورت ہے جو خودکار تعیناتیوں کے لیے ذمہ دار ہو گا۔ httpsconsole.cloud.google.com/iam-admin/serviceaccounts?project=your_project_id پر جائیں (تبدیل کریں) *your_project_id* اس لنک میں آپ کے اصل پروجیکٹ آئی ڈی کے ساتھ، میرے معاملے میں یہ ہوگا *evie-landing-tutorial آپ کو درج ذیل مینو پیج پر مل جائے گا: ایپ انجن ڈیفالٹ سروس اکاؤنٹ کے قریب ایکشن کالم میں 3 ڈاٹ آئیکن پر کلک کریں۔ اور منتخب کریں۔ ڈراپ ڈاؤن مینو سے **کلید بنائیں** کا اختیار JSON کو اپنی کلیدی قسم کے طور پر منتخب کریں اور کلک کریں۔ ** تخلیق کریں یہ آپ کی مشین پر .json فائل ڈاؤن لوڈ کرے گا۔ آخری چیز جو ہمیں یہاں کرنے کی ضرورت ہے وہ یہ ہے کہ اس فائل کو بیس 64 فارمیٹ میں انکوڈ کرنا ہے âÃÂàہمیں بعد میں GitHub ایکشنز میں منتقل ہونے پر اس کی ضرورت ہوگی۔ یہ مندرجہ ذیل کمانڈ لائن کا استعمال کرکے کیا جا سکتا ہے: base64 your_json_file.json >key.base64 پھر key.base64 فائل میں base64 انکوڈ شدہ کلید ہوگی۔ **سیکیورٹی نوٹ یہاں یہ json اور base64 کلیدی فائلیں آپ کے GAE پروجیکٹ کو کنٹرول کرنے کی اجازت دیتی ہیں، اس لیے جب آپ انہیں GitHub ایکشنز میں شامل کریں گے (جیسا کہ میں ذیل میں دکھاؤں گا)، اسے ٹکڑے ٹکڑے کرنے کی سفارش کی جاتی ہے۔ اس فائلوں کو حذف کریں۔ یہ مندرجہ ذیل طور پر cli سے کیا جا سکتا ہے: shred key_file_name&& rm کلید_فائل_نام کلید حاصل کرنے کے بعد، ہمیں Google App Engine APIs کو فعال کرنے کی ضرورت ہے âÃÂàایسا کرنے کے لیے صفحہ httpsconsole.developers.google.com/apis/api/appengine دیکھیں .googleapis.com/overview اور کلک کریں۔ **فعال** گٹ ہب ریپوزٹری اور گٹ ہب ایکشنز ترتیب دینا آخر میں، اب وقت آگیا ہے کہ ہمارا GitHub ذخیرہ تیار کیا جائے۔ یہ ٹیوٹوریل انڈرا کے ذریعہ ایوی تھیم کے سیٹ اپ کا احاطہ کرتا ہے۔ (یہ تھیم ہے جسے میں فی الحال ریلیزا ہب کے لینڈنگ پیج کے لیے استعمال کر رہا ہوں!) اصل ایوی تھیم یہاں ہوسٹ کی گئی ہے، لیکن میں اس ریپوزٹری میں ریلیزا کا کانٹا استعمال کروں گا۔ جیسا کہ میں نے پہلے ہی دوسرے مضامین میں ذکر کیا ہے، ان دنوں میرا تعمیراتی فلسفہ ہر چیز کو ڈوکرائز کرنا اور استعمال کرنا ہے۔ ایک سے زیادہ پلیٹ فارمز پر یونیفائیڈ CI تعمیراتی ماحول کے طور پر docker کی تعمیر۔ لہذا، میں نے Dockerfile، nginx کنفیگریشن اور اصل Evie تھیم سے متعلق npm ورژن کو بھی اپ ڈیٹ کیا تاکہ ایک ورکنگ ڈاکرائزڈ تعمیر ہو۔ اب اگر ہم کرتے ہیں۔ RelizaâÃÂÃÃÂs پر ڈوکر بلڈ کمانڈ، یہ پورٹ 80 پر دستاویزات کے بغیر ایوی تھیم پیش کرنے والی اینجینکس پر مبنی تصویر بنائے گی۔ اب وقت آگیا ہے کہ GitHub ایکشن اسکرپٹ تیار کریں۔ ہم actions-hub/gcloud@master ایکشن استعمال کریں گے جو پورے عمل کو آسان بنا دیتا ہے۔ ہم 2 GitHub ایکشن کے راز کو ترتیب دے کر شروع کرتے ہیں جن کی کارروائی کے لیے ضروری ہے۔ اپنے GitHub ذخیرے کے اندر ترتیبات ->راز پر جائیں اور کلک کریں۔ **نیا راز** درج ذیل 2 راز قائم کرنے کے لیے: - GCLOUD_PROJECT_ID âÃÂàاسے پروجیکٹ آئی ڈی پر سیٹ کریں جس پر آپ اپنا پروجیکٹ بنا رہے تھے: evie-landing-tutorial in my case - GOOGLE_APPLICATION_CREDENTIALS âÃÂàاسے اوپر google سروس اکاؤنٹ کے لیے حاصل کردہ base64-encoded json-key فائل کے مواد پر سیٹ کرتا ہے۔ اب ریپوزٹری میں میں .github ڈائریکٹری بناتا ہوں اور پھر اس کے اندر ورک فلو ڈائرکٹری بناتا ہوں۔ اور اس کے اندر میں gae_build.yml بناتا ہوں۔ نیز ہمیں app.yaml فائل کو شامل کرنے کی ضرورت ہے جس میں GAE کنفیگریشن ہے اور میرے پاس موجود جامد ایپ کے استعمال کے معاملے کے لیے بہت آسان ہوگا۔ آپ کے اور اس کوڈ کو آگے بڑھانے کے بعد، یہ GitHub ایکشن بلڈ کو متحرک کرے گا، جو آپ کی GAE ایپلیکیشن âÃÂàپر تعیناتی کرے گا اور آپ کی سروسز لائیو ہو جائیں گی! GitHub پر آنے والا ہر دھکا خود بخود ایک نئی GitHub ایکشنز کی تعمیر کو متحرک کرے گا اور GAE پر ایپلیکیشن کو خود بخود اپ ڈیٹ کرے گا۔ اب آپ کے پاس اپنی جامد ویب سائٹ کے لیے بنیادی CICD پائپ لائن تیار ہے! آپ یہاں رک سکتے ہیں یا آپ پڑھنا جاری رکھ سکتے ہیں کہ آپ Reliza Hub کا استعمال کرتے ہوئے منظوری اور تعیناتی کی مرئیت کی فعالیت کیسے شامل کر سکتے ہیں۔ بونس: ریلیزا ہب کا استعمال کرتے ہوئے منظوری اور مرئیت شامل کرنا فرض کریں، کہ ہم نہیں چاہتے کہ ہر نئی تعمیر خود بخود پروڈکشن میں جائے۔ اس کے بجائے، ہم چاہتے ہیں کہ انہیں پہلے کسی ایسی جگہ پر تعینات کیا جائے جو پروڈکشن نہیں ہے، اور پھر اگر ہم انہیں پسند کرتے ہیں تو آپ یا آپ کے منظور کنندہ (کہیں، آپ کے مارکیٹنگ مینیجر) کو ایک بٹن پر کلک کرنے کی ضرورت ہے اور پیداوار کو فروغ دینا میں نے اب تک بیان کی گئی ترتیب کے اوپری حصے میں ریلیزا ہب کے ساتھ یہ کیسے حاصل کیا جا سکتا ہے۔ Reliza Hub پر 1 âÃÂàسٹریمنگ ریلیز میٹا ڈیٹا پہلے، httpsapp.relizahub.com پر جائیں، GitHub کے ساتھ تصدیق کریں اور اپنی تنظیم بنائیں، میرے معاملے میں میں استعمال کروں گا۔ *ایوی لینڈنگ ٹیوٹوریل* تنظیم کے نام کے طور پر۔ **VCS** مینو آئٹم پر کلک کریں اور پھر VCS ریپوزٹری کو شامل کرنے کے لیے پلس سرکل آئیکن پر کلک کریں۔ اپنے GitHub ریپوزٹری URI کو ان پٹ میں چسپاں کریں اور Reliza Hub اسے خود بخود پارس کر دے گا۔ کلک کریں۔ ** جمع کروائیں اور یہ آپ کا ذخیرہ بنائے گا۔ پروجیکٹس مینو پر جائیں اور پروجیکٹ بنانے کے لیے پلس سرکل آئیکن پر کلک کریں۔ اپنے پروجیکٹ کا نام درج کریں (میں استعمال کروں گا *ایوی لینڈنگ سیٹ ورژن اسکیما کو سنگل کمپوننٹ (میجر) âÃÂàجس کی وجہ یہ ہے کہ GAE ایک جزو پر مشتمل اپنا ورژن استعمال کر رہا ہے۔ Âàجسے ہم Reliza Hub کے اندر اسی طرح استعمال کریں گے۔ VCS ریپوزٹری کا انتخاب کریں جسے آپ نے ابھی پچھلے مرحلے میں بنایا ہے۔ اور کلک کریں۔ ** جمع کروائیں یہ نیا پروجیکٹ بنائے گا۔ پھر اس نئے بنائے گئے پراجیکٹ کے نام پر کلک کریں اور پراجیکٹ api کلید بنانے کے لیے لاک آئیکن پر کلک کریں۔ جب آپ اپنے پروجیکٹ کے لیے API ID اور API کلید تیار کرتے ہوئے دیکھیں تو GitHub ایکشنز âÃÂàRELIZA_API_PROJECT_ID اور RELIZA_API_PROJECT_KEY میں متعلقہ اقدار کے ساتھ 2 نئے راز بنائیں اب وقت آگیا ہے کہ ہماری gae_build.yml اسکرپٹ کو Reliza میں تعمیراتی تفصیلات کو سٹریم کرنے کے لیے اپ ڈیٹ کریں اور بغیر پروموٹ موڈ پر بھی جائیں۔ اس کا مطلب یہ ہے کہ ہر گٹ پش پر، GAE پر ایک تعیناتی بنائی جائے گی، لیکن Google اس وقت تک اس نئی تعیناتی پر ٹریفک کو تبدیل نہیں کرے گا جب تک کہ کچھ دستی قدم بعد میں نہیں آتا۔ اپ ڈیٹ کردہ اسکرپٹ میں ریلیزا ہب کو بلڈ ٹائم ٹریکنگ کی رپورٹنگ شامل ہے اور اس میں GAE پر ہر غیر ترقی یافتہ تعیناتی کا URI بھی ہوگا۔ آپ مختلف جھنڈوں کی تفصیل تلاش کر سکتے ہیں جو ہم استعمال کرتے ہیں Reliza Go Client کے GitHub ذخیرے میں پش مکمل ہونے پر GitHub ایکشنز چلنے کے بعد، آپ ریلیزا ہب میں اپنی ریلیز کے صفحہ پر جاسکتے ہیں اور درج ذیل تصویر دیکھ سکتے ہیں: نوٹ کریں کہ پر کلک کرنا **ٹیسٹ اینڈ پوائنٹ** لنک آپ کو GAE پر اصل تعیناتی ورژن پر لے آئے گا جو اس سورس کوڈ کے اندراج کے مطابق ہے لیکن ٹریفک کی خدمت کے لیے ابھی تک ترقی نہیں دی گئی ہے۔ آپ Reliza Hub پر ہر نئی ریلیز کی اطلاعات حاصل کرنے کے لیے یہاں گائیڈ کے بعد سست انضمام بھی شامل کر سکتے ہیں۔ 2 âÃÂàمنظوریاں شامل کرنا ریلیزا ہب کے سیٹنگز پیج پر جائیں اور اس کے نیچے پروڈکشن ماحول کے لیے اپنا اپروول میٹرکس کنفیگر کریں۔ میرے معاملے میں، مجھے پیداوار میں فروغ دینے کے لیے ریلیز کے لیے صرف مارکیٹنگ سے منظوری درکار ہوگی۔ مندرجہ ذیل کے طور پر: پر کلک کریں **میٹرکس محفوظ کریں** اس کے بعد میں Reliza GitHub ایپ کو انسٹال کرتا ہوں پروجیکٹ کے لیے اسے رجسٹر کرنے کے لیے پہلے لکھا ہے۔ آخر میں، Ia نیا GitHub ایکشن ورک فلو جو Reliza Hub کی منظوریوں پر شروع کیا جائے گا آپ اسے یہاں دیکھ سکتے ہیں۔ بنیادی طور پر، یہ ورک فلو Reliza Hub سے حالیہ پروڈکشن سے منظور شدہ ورژن کے لیے استفسار کرتا ہے اور پھر Google App Engine سے ٹریفک کو اس ورژن میں تبدیل کرنے کی درخواست کرتا ہے۔ صرف ایک چیز جس کے لیے اس اسکرپٹ میں کنفیگریشن کی ضرورت ہوتی ہے وہ ہے RELIZA_PROJECT_ID ماحولیاتی متغیر âÃÂàجسے Reliza Hub میں پروجیکٹ پیج پر حاصل کردہ پروجیکٹ UUID پر سیٹ کرنے کی ضرورت ہے: اب، مارکیٹنگ سے منظوری کے ساتھ تازہ ترین پراجیکٹ کی ریلیز گوگل ایپ انجن کی طرف خود بخود فروغ پائے گی۔تفصیلات کے لیے، آپ کس طرح تنظیم میں منظوری دینے والوں کو شامل کر سکتے ہیں، منظوریوں پر میرا ٹیوٹوریل ویڈیو دیکھیں 3 âÃÂàجب تعینات کیا جاتا ہے تو اس کے لیے مرئیت شامل کریں آخر میں ہم Reliza Hub پر مرئیت شامل کرنا چاہتے ہیں کہ اصل میں کون سی ریلیز تعینات کی گئی ہے اور کب ایسا کرنے کے لیے پہلے Reliza Hub میں Instances پر جائیں اور نئی مثال بنانے کے لیے پلس سرکل آئیکن پر کلک کریں۔ اس کے بعد میں اپنی مثال کا URI درج کرتا ہوں اور پروڈکشن âÃÂàہونے کے لیے ماحول کو منتخب کرتا ہوں کیونکہ میرے پاس صرف اس جامد ویب سائٹ پر پیداواری ماحول ہے۔ کلک کرنا **جمع کرائیں** میری نئی مثال بناتا ہے۔ اس کے بعد میں اس نئی تخلیق شدہ مثال کو منتخب کرتا ہوں اور اس کی api کلید بنانے کے لیے لاک آئیکن پر کلک کرتا ہوں۔ API ID اور API کلید تیار ہونے پر، GitHub ایکشنز میں 2 نئے راز بنائیں âÃÂàRELIZA_API_INSTANCE_ID اور RELIZA_API_INSTANCE_KEY متعلقہ اقدار کے ساتھ اس کے ساتھ میں GAE پر تعیناتی کی جانچ کرنے کے لیے سیکشن کو شامل کرنے اور اسے Reliza Hub میں سٹریم کرنے کے لیے پہلے اپنی منظور شدہ تعیناتی اسکرپٹ کو اپ ڈیٹ کرتا ہوں۔ اور میں اپنی GAE درخواست کی حالت کی تصدیق کے لیے ایک cron GitHub ایکشن ورک فلو بھی شامل کرتا ہوں۔ اس میں سے کسی بھی ورک فلو کے چلنے کے بعد، ہمیں Reliza Hub میں اپنی GAE ایپلیکیشن کی تعیناتی کا سنیپ شاٹ اپنے مثال کے طور پر درج ذیل ملے گا: خلاصہ یہ وہی ہے، اب ہمارے پاس ایک مکمل پش بٹن CI CD پائپ لائن ہے جس میں GitHub ایکشنز GAE میں تعینات ہیں اور Reliza Hub کے زیر انتظام منظوریوں اور مرئیت کا انتظام ہے۔ ہمارے پاس سلیک نوٹیفیکیشن اور ہمارے مارکیٹنگ مینیجر کو تکنیکی عملے سے پوچھے بغیر تبدیلیاں دیکھنے اور بٹنوں کو پروڈکشن میں فروغ دینے کے لیے بھی مل سکتے ہیں۔ یہ کتنا ٹھنڈا ہے؟ اگر آپ مجھ سے بات کرنا چاہتے ہیں اور اس یا دیگر ورک فلو پر مزید گفتگو کرنا چاہتے ہیں تو میرے ساتھ 30 منٹ کی Reliza Hub ڈیمو کال کے بغیر سٹرنگز سے منسلک ایک بک کریں۔ àاور میں مدد کرنے کی پوری کوشش کروں گا۔