ಒಂದೇ ಒಂದು ಯಂತ್ರವನ್ನೂ ಮುಟ್ಟದೆ ನಾನು ಪ್ರತಿಯೊಂದು ಶಾಖೆಯನ್ನು ಹೇಗೆ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದೆ

ನಾನು Electron ಬಳಸಿ ಒಂದು ಆಂತರಿಕ (internal) ಡೆಸ್ಕ್‌ಟಾಪ್ ಟೂಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಇದು ಅನೇಕ ಶಾಖಾ ಕಚೇರಿಗಳ ಯಂತ್ರಗಳಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿದೆ. ಈ ಕಚೇರಿಗಳು ವಿಭಿನ್ನ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಮತ್ತು ವಿಭಿನ್ನ ಮಟ್ಟದ ಐಟಿ (IT) ಕೌಶಲ್ಯಗಳನ್ನು ಹೊಂದಿವೆ.

ಕಳೆದ ವಾರ, ನಾನು ತಕ್ಷಣವೇ ಪ್ರತಿಯೊಂದು ಯಂತ್ರಕ್ಕೂ ಒಂದು ಸರಿಪಡಿಸುವಿಕೆ (fix) ಅನ್ನು ಕಳುಹಿಸಬೇಕಾಯಿತು. ನಾನು ಯಾವುದೇ ಶಾಖೆಗೆ ಭೇಟಿ ನೀಡಲಿಲ್ಲ. ನಾನು ಸೆಟಪ್ ಫೈಲ್‌ಗಳನ್ನು ಇಮೇಲ್ ಮಾಡಲಿಲ್ಲ. ನಾನು ಯಾರನ್ನೂ ಇನ್‌ಸ್ಟಾಲ್ (install) ಕ್ಲಿಕ್ ಮಾಡಲು ಕೇಳಲಿಲ್ಲ.

ನಾನು ನನ್ನ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಎರಡು ಕಮಾಂಡ್‌ಗಳನ್ನು ರನ್ ಮಾಡಿ ಹೊರಟುಹೋದೆ. ಮರುದಿನ ಬೆಳಿಗ್ಗೆಗೆ, ಪ್ರತಿಯೊಂದು ಯಂತ್ರದಲ್ಲೂ ಅಪ್‌ಡೇಟ್ ಆಗಿತ್ತು.

ಇದು ಕೆಲಸ ಮಾಡಿದ್ದು ಯಾಕೆಂದರೆ ನಾನು ತಿಂಗಳುಗಳ ಹಿಂದೆಯೇ electron-updater ಬಳಸಿ ಒಂದು ಆಟೋ-ಅಪ್‌ಡೇಟ್ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೆ.

ನೀವು ದೂರದ ಸ್ಥಳಗಳಿಗೆ ಸಾಫ್ಟ್‌ವೇರ್ ಕಳುಹಿಸಿದಾಗ, ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸುತ್ತೀರಿ:

  • ಇನ್‌ಸ್ಟಾಲರ್‌ಗಳನ್ನು ರನ್ ಮಾಡಲು ನೀವು ಬಳಕೆದಾರರ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಲು ಸಾಧ್ಯವಿಲ್ಲ.
  • ಐಟಿ ಬೆಂಬಲವು ಸ್ಥಳದಲ್ಲೇ ಇರುತ್ತದೆ ಎಂದು ನೀವು ಭಾವಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
  • ರಿಮೋಟ್ ಆಕ್ಸೆಸ್ (Remote access) ದೊಡ್ಡ ಮಟ್ಟದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
  • ಮ್ಯಾನುಯಲ್ ವಿತರಣೆಯು ನಿಮ್ಮ ದೊಡ್ಡ ಅಡಚಣೆಯಾಗುತ್ತದೆ.

ಇದಕ್ಕೆ ಪರಿಹಾರವೆಂದರೆ ಇನ್‌ಸ್ಟಾಲರ್ ಅನ್ನು ಈ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಹೊರಗಿಡುವುದು.

ನನ್ನ ವ್ಯವಸ್ಥೆಯು ಸಾಮಾನ್ಯ HTTP ಪ್ರೊವೈಡರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಾನು SFTP ಮೂಲಕ ಖಾಸಗಿ ವೆಬ್ ಸರ್ವರ್‌ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡುತ್ತೇನೆ. ಇದು ಆಂತರಿಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು GitHub ನಂತಹ ಸಾರ್ವಜನಿಕ ರೆಪೊಸಿಟರಿಗಳಿಂದ ದೂರವಿಡುತ್ತದೆ.

ಈ ಪ್ರಕ್ರಿಯೆಯು ನಾಲ್ಕು ಹಂತಗಳನ್ನು ಹೊಂದಿದೆ:

  • Build and publish: ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಿ ಮತ್ತು ಫೈಲ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.
  • Main process: ಹೊಸ ವರ್ಷನ್‌ಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಸೈಲೆಂಟ್ ಆಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ.
  • Preload bridge: ಅಪ್‌ಡೇಟ್ ಇವೆಂಟ್‌ಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ UI ಗೆ ರிலே ಮಾಡಿ.
  • Renderer UI: ಬಳಕೆದಾರರು ಅದನ್ನು ನಿಲ್ಲಿಸಲು ಬಿಡದೆ ಪ್ರಗತಿಯನ್ನು (progress) ತೋರಿಸಿ.

ಅಪ್‌ಡೇಟ್ ಹೇಗೆ ನಡೆಯುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:

  1. ನಾನು ಪಬ್ಲಿಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡುತ್ತೇನೆ. ಇದು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಿಲ್ಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಫೈಲ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  2. ಅಪ್ಲಿಕೇಶನ್ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು latest.yml ಫೈಲ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಫೈಲ್‌ನಲ್ಲಿ ವರ್ಷನ್ ಮತ್ತು ಸೆಕ್ಯೂರಿಟಿ ಹ್ಯಾಶ್ (security hash) ಇರುತ್ತದೆ.
  3. ಲಾಂಚ್ ಮಾಡಿದಾಗ, ಅಪ್ಲಿಕೇಶನ್ ಸರ್ವರ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ.
  4. ಹೊಸ ವರ್ಷನ್ ಇದ್ದರೆ, ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  5. ಡೌನ್‌ಲೋಡ್ ಮುಗಿದ ನಂತರ, ಅಪ್ಲಿಕೇಶನ್ ಕ್ವಿಟ್ ಆಗುತ್ತದೆ ಮತ್ತು ಅಪ್‌ಡೇಟ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.

ನಾನು autoDownload: true ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದರರ್ಥ ಬಳಕೆದಾರರು ಏನನ್ನೂ ಕ್ಲಿಕ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ನಾನು UI ನಲ್ಲಿ ಪ್ರೋಗ್ರೆಸ್ ಬಾರ್ ಅನ್ನು ಸಹ ತೋರಿಸುತ್ತೇನೆ. ಇದು ಬಳಕೆದಾರರಿಗೆ ಯಾವುದೇ ನಿರ್ಧಾರ ತೆಗೆದುಕೊಳ್ಳುವ ಒತ್ತಡವಿಲ್ಲದೆ ಪ್ರಗತಿಯನ್ನು ನೋಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಆಂತರಿಕ ಡೆಸ್ಕ್‌ಟಾಪ್ ಸಾಫ್ಟ್‌ವೇರ್ ನಿರ್ಮಿಸಲು ಪಾಠಗಳು:

  • ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣಕ್ಕಾಗಿ ಸಾಮಾನ್ಯ HTTP ಪ್ರೊವೈಡರ್ ಬಳಸಿ.
  • ಅಪ್‌ಲೋಡ್ ಮಾಡುವಾಗ ಯಾವಾಗಲೂ ಮೆಟಾಡೇಟಾ (metadata) ಫೈಲ್‌ಗಳನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡಿ.
  • ಅಸ್ಥಿರ ಕನೆಕ್ಷನ್‌ಗಳಿಗಾಗಿ ನಿಮ್ಮ ಅಪ್‌ಲೋಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ರೆಸ್ಯೂಮ್ ಲಾಜಿಕ್ (resume logic) ಅನ್ನು ಸೇರಿಸಿ.
  • ಸೈಲೆಂಟ್ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಬಳಸಿ ಆದರೆ ದೃಶ್ಯमान ಪ್ರೋಗ್ರೆಸ್ ಬಾರ್ ಅನ್ನು ತೋರಿಸಿ.
  • ಯಾವಾಗಲೂ SHA-512 ಹ್ಯಾಶ್‌ನೊಂದಿಗೆ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.

ಈ ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ಮೊದಲೇ ನಿರ್ಮಿಸಿದ್ದು ನನಗೆ ದಿನಗಟ್ಟಲೆ ಮ್ಯಾನುಯಲ್ ಕೆಲಸದಿಂದ ಉಳಿಸಿತು.

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