ఒక్క యంత్రాన్ని కూడా తాకకుండా నేను ప్రతి బ్రాంచ్ను ఎలా అప్డేట్ చేశాను
నేను Electron ఉపయోగించి ఒక అంతర్గత డెస్క్టాప్ టూల్ను రూపొందించాను. ఇది అనేక బ్రాంచ్ కార్యాలయాల్లోని యంత్రాలపై నడుస్తుంది. ఈ కార్యాలయాల్లో వేర్వేరు నెట్వర్క్లు మరియు వేర్వేరు స్థాయిల IT నైపుణ్యం ఉంటాయి.
గత వారం, నేను ప్రతి యంత్రానికి వెంటనే ఒక ఫిక్స్ను పంపాల్సి వచ్చింది. నేను ఏ బ్రాంచ్ను సందర్శించలేదు. సెటప్ ఫైళ్లను ఈమెయిల్ చేయలేదు. ఎవరినీ ఇన్స్టాల్ క్లిక్ చేయమని అడగలేదు.
నేను నా టెర్మినల్లో రెండు కమాండ్లను రన్ చేసి వెళ్ళిపోయాను. మరుసటి రోజు ఉదయానికి, ప్రతి యంత్రంలో అప్డేట్ పూర్తయింది.
కొన్ని నెలల క్రితమే నేను electron-updater ఉపయోగించి ఒక ఆటో-అప్డేట్ సిస్టమ్ను రూపొందించడం వల్ల ఇది సాధ్యమైంది.
మీరు రిమోట్ ప్రాంతాలకు సాఫ్ట్వేర్ను పంపినప్పుడు, ఈ సమస్యలను ఎదుర్కొంటారు:
- ఇన్స్టాలర్లను రన్ చేయడానికి మీరు వినియోగదారులపై ఆధారపడలేరు.
- IT సపోర్ట్ అక్కడే (on-site) ఉంటుందని మీరు అనుకోలేరు.
- రిమోట్ యాక్సెస్ పెద్ద ఎత్తున నిర్వహించడం కష్టం (does not scale).
- మాన్యువల్ డిస్ట్రిబ్యూషన్ మీ అతిపెద్ద అడ్డంకిగా మారుతుంది.
దీనికి పరిష్కారం ఏమిటంటే, ఈ ప్రక్రియ నుండి ఇన్స్టాలర్ను తొలగించడం.
నా సిస్టమ్ ఒక జనరిక్ HTTP ప్రొవైడర్ను ఉపయోగిస్తుంది. నేను SFTP ద్వారా ఒక ప్రైవేట్ వెబ్ సర్వర్లో అప్డేట్లను హోస్ట్ చేస్తాను. ఇది అంతర్గత సాఫ్ట్వేర్ను GitHub వంటి పబ్లిక్ రిపోజిటరీలకు దూరంగా ఉంచుతుంది.
ఈ ప్రక్రియలో నాలుగు పొరలు (layers) ఉన్నాయి:
- Build and publish: యాప్ను కంపైల్ చేసి ఫైళ్లను సర్వర్కు అప్లోడ్ చేయడం.
- Main process: కొత్త వెర్షన్ల కోసం తనిఖీ చేయడం మరియు వాటిని సైలెంట్గా డౌన్లోడ్ చేయడం.
- Preload bridge: అప్డేట్ ఈవెంట్లను UIకి సురక్షితంగా పంపడం.
- Renderer UI: వినియోగదారుడు దానిని ఆపకుండానే ప్రోగ్రెస్ (progress) చూపించడం.
అప్డేట్ ప్రక్రియ ఇలా జరుగుతుంది:
- నేను ఒక పబ్లిష్ స్క్రిప్ట్ను రన్ చేస్తాను. ఇది యాప్ను బిల్డ్ చేసి ఫైళ్లను అప్లోడ్ చేస్తుంది.
- అప్డేట్ల కోసం యాప్
latest.ymlఫైల్ను ఉపయోగిస్తుంది. ఈ ఫైల్లో వెర్షన్ మరియు సెక్యూరిటీ హ్యాష్ ఉంటాయి. - లాంచ్ అయినప్పుడు, యాప్ సర్వర్ను తనిఖీ చేస్తుంది.
- కొత్త వెర్షన్ ఉంటే, అది ఆటోమేటిక్గా డౌన్లోడ్ అవుతుంది.
- డౌన్లోడ్ పూర్తయిన తర్వాత, యాప్ క్విట్ అయ్యి అప్డేట్ను ఇన్స్టాల్ చేస్తుంది.
నేను autoDownload: true ఉపయోగిస్తాను. అంటే వినియోగదారులు దేనినీ క్లిక్ చేయాల్సిన అవసరం లేదు. నేను UIలో ఒక ప్రోగ్రెస్ బార్ను కూడా చూపిస్తాను. ఇది వినియోగదారులు ఎటువంటి నిర్ణయం తీసుకోనవసరం లేకుండానే వారికి ప్రక్రియ కనిపిస్తుంది.
అంతర్గత డెస్క్టాప్ సాఫ్ట్వేర్ను రూపొందించడానికి పాఠాలు:
- పూర్తి నియంత్రణ కోసం జనరిక్ HTTP ప్రొవైడర్ను ఉపయోగించండి.
- అప్లోడ్ చేసేటప్పుడు ఎల్లప్పుడూ మెటాడేటా ఫైళ్లను ఓవర్రైట్ చేయండి.
- నెట్వర్క్ సరిగ్గా లేని (flaky connections) సందర్భాల్లో, మీ అప్లోడ్ స్క్రిప్ట్లో రీజ్యూమ్ లాజిక్ను చేర్చండి.
- సైలెంట్ డౌన్లోడ్లను ఉపయోగించండి కానీ కనిపించే ప్రోగ్రెస్ బార్ను చూపించండి.
- ఎల్లప్పుడూ SHA-512 హ్యాష్తో అప్డేట్లను వెరిఫై చేయండి.
ఈ పైప్లైన్ను ముందుగానే నిర్మించడం వల్ల నాకు రోజుల తరబడి చేయాల్సిన మాన్యువల్ పని నుండి ఉపశమనం లభించింది.
