ஒரு இயந்திரத்தையும் தொடாமல் அனைத்து கிளைகளையும் நான் எவ்வாறு புதுப்பித்தேன்

நான் Electron பயன்படுத்தி ஒரு உள் பயன்பாட்டிற்கான டெஸ்க்டாப் கருவியை (internal desktop tool) உருவாக்கினேன். இது பல கிளை அலுவலகங்களில் உள்ள இயந்திரங்களில் இயங்குகிறது. இந்த அலுவலகங்கள் வெவ்வேறு நெட்வொர்க்குகளையும் வெவ்வேறு அளவிலான IT திறன்களையும் கொண்டுள்ளன.

கடந்த வாரம், ஒவ்வொரு இயந்திரத்திற்கும் உடனடியாக ஒரு திருத்தத்தை (fix) அனுப்ப வேண்டியிருந்தது. நான் எந்த கிளையையும் நேரில் செல்லவில்லை. செட்டப் கோப்புகளை (setup files) மின்னஞ்சல் செய்யவில்லை. யாரையும் 'install' செய்யும்படி கேட்கவில்லை.

எனது டெர்மினலில் (terminal) இரண்டு கட்டளைகளை (commands) இயக்கிவிட்டு நான் விலகிச் சென்றேன். அடுத்த நாள் காலைக்குள், ஒவ்வொரு இயந்திரத்திலும் புதுப்பிப்பு (update) செய்யப்பட்டிருந்தது.

இது வேலை செய்தது ஏனெனில், நான் பல மாதங்களுக்கு முன்பே electron-updater பயன்படுத்தி ஒரு தானியங்கி புதுப்பிப்பு (auto-update) முறையை உருவாக்கியிருந்தேன்.

நீங்கள் தொலைதூர இடங்களுக்கு மென்பொருளை அனுப்பும்போது, இந்தச் சிக்கல்களை எதிர்கொள்வீர்கள்:

  • இன்ஸ்டாலர்களை (installers) இயக்குவதற்கு பயனர்களை நீங்கள் நம்பியிருக்க முடியாது.
  • IT ஆதரவு அங்கேயே இருக்கும் என்று நீங்கள் கருத முடியாது.
  • Remote access பெரிய அளவில் செயல்படாது (does not scale).
  • கைமுறை விநியோகம் (Manual distribution) உங்கள் மிகப்பெரிய தடையாகும்.

இதற்குத் தீர்வு, இந்தச் செயல்பாட்டில் இருந்து இன்ஸ்டாலரை நீக்குவதாகும்.

எனது அமைப்பு ஒரு பொதுவான HTTP provider-ஐப் பயன்படுத்துகிறது. நான் SFTP மூலம் ஒரு தனிப்பட்ட வெப் சர்வரில் (private web server) புதுப்பிப்புகளைத் தொகுத்து வைக்கிறேன். இது உள்நாட்டு மென்பொருட்களை GitHub போன்ற பொதுவான களஞ்சியங்களிலிருந்து (public repositories) பாதுகாப்பாக வைக்க உதவுகிறது.

இந்தச் செயல்முறை நான்கு அடுக்குகளைக் கொண்டுள்ளது:

  • Build and publish: செயலியைத் தொகுத்து (compile) கோப்புகளைச் சர்வருக்குப் பதிவேற்றுதல்.
  • Main process: புதிய பதிப்புகளைச் சரிபார்த்து அவற்றை அமைதியாக (silently) பதிவிறக்குதல்.
  • Preload bridge: புதுப்பிப்பு நிகழ்வுகளைப் பாதுகாப்பாக UI-க்கு மாற்றுதல்.
  • Renderer UI: பயனர்கள் அதை நிறுத்த அனுமதிக்காமல், முன்னேற்றத்தைக் (progress) காண்பித்தல்.

புதுப்பிப்பு எவ்வாறு நடைபெறுகிறது என்பது இதோ:

  1. நான் ஒரு publish script-ஐ இயக்குகிறேன். அது செயலியை உருவாக்கி கோப்புகளைப் பதிவேற்றுகிறது.
  2. செயலி புதுப்பிப்புகளைச் சரிபார்க்க latest.yml கோப்பைப் பயன்படுத்துகிறது. இந்த கோப்பில் பதிப்பு (version) மற்றும் ஒரு பாதுகாப்பு ஹாஷ் (security hash) ஆகியவை உள்ளன.
  3. தொடங்கும் போது, செயலி சர்வரைச் சரிபார்க்கிறது.
  4. புதிய பதிப்பு இருந்தால், அது தானாகவே பதிவிறக்கம் செய்யப்படுகிறது.
  5. பதிவிறக்கம் முடிந்ததும், செயலி தானாகவே முடிந்து (quits) புதுப்பிப்பை நிறுவுகிறது.

நான் autoDownload: true என்பதைப் பயன்படுத்துகிறேன். இதன் பொருள் பயனர்கள் எதையும் கிளிக் செய்ய வேண்டிய அவசியமில்லை. நான் UI-இல் ஒரு progress bar-ஐயும் காட்டுகிறேன். இது பயனர்களை எந்த முடிவும் எடுக்கச் செய்யாமல், முன்னேற்றத்தை அவர்களுக்குத் தெரியப்படுத்துகிறது.

உள் பயன்பாட்டிற்கான டெஸ்க்டாப் மென்பொருட்களை உருவாக்குவதற்கான பாடங்கள்:

  • முழுமையான கட்டுப்பாட்டிற்கு ஒரு பொதுவான HTTP provider-ஐப் பயன்படுத்தவும்.
  • பதிவேற்றும் போது எப்போதும் metadata கோப்புகளைத் தொடர்ச்சியாகப் புதுப்பிக்கவும் (overwrite).
  • நிலையற்ற இணைப்புகளுக்காக (flaky connections) உங்கள் upload script-இல் resume logic-ஐ உருவாக்கவும்.
  • அமைதியான பதிவிறக்கங்களைப் (silent downloads) பயன்படுத்தவும், ஆனால் ஒரு தெளிவான progress bar-ஐக் காட்டவும்.
  • எப்போதும் SHA-512 hash மூலம் புதுப்பிப்புகளைச் சரிபார்க்கவும்.

இந்தத் திட்டத்தை (pipeline) ஆரம்பத்திலேயே உருவாக்கியது பல நாட்கள் கைமுறை வேலையைச் சேமித்தது.

ஆதாரம்: https://dev.to/vinniharu/how-i-pushed-a-critical-update-to-every-company-branch-without-touching-a-single-machine-electron-4pk1