میں نے ایک بھی مشین کو چھوئے بغیر ہر برانچ کو کیسے اپ ڈیٹ کیا

میں نے Electron کا استعمال کرتے ہوئے ایک انٹرنل ڈیسک ٹاپ ٹول بنایا۔ یہ بہت سے برانچ دفاتر میں موجود مشینوں پر چلتا ہے۔ ان دفاتر کے نیٹ ورکس مختلف ہیں اور آئی ٹی (IT) مہارت کا معیار بھی مختلف ہے۔

گزشتہ ہفتے، مجھے فوری طور پر ہر مشین پر ایک فکس (fix) بھیجنے کی ضرورت تھی۔ میں کسی بھی برانچ میں نہیں گیا۔ میں نے سیٹ اپ فائلز ای میل نہیں کیں۔ میں نے کسی سے انسٹال پر کلک کرنے کا نہیں کہا۔

میں نے اپنے ٹرمینل میں دو کمانڈز چلائیں اور کام ختم کر دیا۔ اگلی صبح تک، ہر مشین پر اپ ڈیٹ موجود تھی۔

یہ اس لیے کامیاب ہوا کیونکہ میں نے مہینوں پہلے electron-updater کا استعمال کرتے ہوئے ایک آٹو اپ ڈیٹ سسٹم بنایا تھا۔

جب آپ دور دراز مقامات پر سافٹ ویئر بھیجتے ہیں، تو آپ کو ان مسائل کا سامنا کرنا پڑتا ہے:

  • آپ انسٹالرز چلانے کے لیے صارفین پر بھروسہ نہیں کر سکتے۔
  • آپ یہ فرض نہیں کر سکتے کہ آئی ٹی سپورٹ موقع پر موجود ہے۔
  • ریموٹ ایکسیس (Remote access) بڑے پیمانے پر کام نہیں کر سکتا۔
  • دستی تقسیم (Manual distribution) آپ کی سب سے بڑی رکاوٹ بن جاتی ہے۔

اس کا حل یہ ہے کہ انسٹالر کو اس عمل سے نکال دیا جائے۔

میرا سسٹم ایک جنرل HTTP پرووائیڈر استعمال کرتا ہے۔ میں SFTP کے ذریعے ایک پرائیویٹ ویب سرور پر اپ ڈیٹس ہوسٹ کرتا ہوں۔ اس طرح انٹرنل سافٹ ویئر GitHub جیسے پبلک ریپوزٹریز سے دور رہتا ہے۔

اس عمل کے چار لیئرز (layers) ہیں:

  • Build اور publish: ایپ کو کمپائل کریں اور فائلز کو سرور پر اپ لوڈ کریں۔
  • Main process: نئے ورژنز چیک کریں اور انہیں خاموشی سے ڈاؤن لوڈ کریں۔
  • Preload bridge: اپ ڈیٹ ایونٹس کو محفوظ طریقے سے UI تک پہنچائیں۔
  • Renderer UI: صارف کو پروگریس دکھائیں لیکن انہیں اسے روکنے نہ دیں۔

اپ ڈیٹ کا بہاؤ (flow) کچھ اس طرح ہے:

  1. میں ایک پبلش اسکرپٹ چلاتا ہوں۔ یہ ایپ کو بلڈ کرتا ہے اور فائلز اپ لوڈ کرتا ہے۔
  2. ایپ اپ ڈیٹس چیک کرنے کے لیے latest.yml فائل کا استعمال کرتی ہے۔ اس فائل میں ورژن اور ایک سیکیورٹی ہیش (security hash) ہوتا ہے۔
  3. لانچ ہونے پر، ایپ سرور کو چیک کرتی ہے۔
  4. اگر کوئی نیا ورژن موجود ہو، تو یہ اسے خود بخود ڈاؤن لوڈ کر لیتی ہے۔
  5. ڈاؤن لوڈ مکمل ہونے کے بعد، ایپ بند ہو جاتی ہے اور اپ ڈیٹ انسٹال کر دیتی ہے۔

میں autoDownload: true کا استعمال کرتا ہوں۔ اس کا مطلب ہے کہ صارفین کو کچھ بھی کلک کرنے کی ضرورت نہیں ہے۔ میں UI میں ایک پروگریس بار بھی دکھاتا ہوں۔ اس سے صارفین کو صورتحال کا علم رہتا ہے لیکن انہیں کوئی فیصلہ کرنے کی ضرورت نہیں پڑتی۔

انٹرنل ڈیسک ٹاپ سافٹ ویئر بنانے کے لیے اسباق:

  • مکمل کنٹرول کے لیے جنرل HTTP پرووائیڈر استعمال کریں۔
  • اپ لوڈ کے دوران ہمیشہ میٹا ڈیٹا فائلز کو اوور رائٹ (overwrite) کریں۔
  • کمزور کنکشنز کے لیے اپنے اپ لوڈ اسکرپٹ میں 'ریزیوم لاجک' (resume logic) شامل کریں۔
  • خاموش ڈاؤن لوڈز استعمال کریں لیکن ایک نظر آنے والی پروگریس بار دکھائیں۔
  • ہمیشہ SHA-512 ہیش کے ساتھ اپ ڈیٹس کی تصدیق کریں۔

اس پائپ لائن کو شروع میں ہی بنا لینے سے میرا کئی دنوں کا دستی کام بچ گیا۔

ماخذ: https://dev.to/vinniharu/how-i-pushed-a-critical-update-to-every-company-branch-without-touching-a-single-machine-electron-4pk1