Jinsi Nilivyosasisha Kila Tawi Bila Kugusa Mashine Moja
Nilijenga zana ya ndani ya desktop kwa kutumia Electron. Inafanya kazi kwenye mashine katika matawi mengi ya ofisi. Ofisi hizi zina mitandao tofauti na viwango tofauti vya ujuzi wa IT.
Wiki iliyopita, nilihitaji kutuma marekebisho kwenye kila mashine mara moja. Sikutembelea tawi lolote. Sikutuma faili za usakinishaji (setup files) kwa barua pepe. Sikumuomba mtu yeyote kubofya install.
Nilitekeleza amri mbili kwenye terminal yangu na kuondoka. Kufika asubuhi iliyofuata, kila mashine ilikuwa imepata sasisho.
Hii ilifanya kazi kwa sababu nilijenga mfumo wa auto-update kwa kutumia electron-updater miezi kadhaa iliyopita.
Unaposambaza programu kwenye maeneo ya mbali, unakabiliwa na matatizo haya:
- Huwezi kutegemea watumiaji kuendesha installers.
- Huwezi kudhania kuwa msaada wa IT upo eneo hilo.
- Remote access hauwezi kukua kwa kasi inayohitajika (scale).
- Usambazaji wa manual unakuwa kikwazo chako kikubwa zaidi.
Suluhisho ni kuondoa installer kwenye mchakato huo.
Mfumo wangu unatumia HTTP provider ya kawaida. Ninahifadhi sasisho kwenye seva ya wavuti ya siri kupitia SFTP. Hii huweka programu za ndani mbali na hifadhi za umma kama GitHub.
Mchakato huu una tabaka nne:
- Build and publish: Compile programu na upakie faili kwenye seva.
- Main process: Angalia toleo jipya na lishuke kimyakimya (silently).
- Preload bridge: Sambaza matukio ya sasisho kwenye UI kwa usalama.
- Renderer UI: Onyesha mtumiaji maendeleo (progress) bila kumruhusu ayasimamishe.
Hivi ndivyo mchakato wa sasisho unavyofanya kazi:
- Ninatekeleza script ya kuchapisha (publish script). Inajenga programu na kupakia faili.
- Programu inatumia faili ya latest.yml kuangalia sasisho. Faili hii ina toleo na hash ya usalama.
- Inapowashwa, programu hukagua seva.
- Ikiwa kuna toleo jipya, inalipakua kiotomatiki.
- Pakuzi ikimalizika, programu hujifunga na kusakinisha sasisho.
Ninatumia autoDownload: true. Hii ina maana watumiaji hawahitaji kubofya chochote. Pia ninaonyesha progress bar kwenye UI. Hii inawapa watumiaji uwezo wa kuona kinachoendelea bila kuwalazimisha kufanya maamuzi.
Mafunzo kwa ajili ya kujenga programu za ndani za desktop:
- Tumia HTTP provider ya kawaida kwa udhibiti kamili.
- Daima futa na uandike upya (overwrite) faili za metadata wakati wa kupakia.
- Jenga mantiki ya kuendelea (resume logic) kwenye script yako ya kupakia kwa ajili ya miunganisho isiyo thabiti.
- Tumia pakuzi za kimyakimya (silent downloads) lakini onyesha progress bar inayovutia macho.
- Daima thibitisha sasisho kwa kutumia SHA-512 hash.
Kujenga mfumo huu (pipeline) mapema kulinisaidia kuepuka siku nyingi za kazi ya manual.
