Este un task pe care-l facem la 4 săptămâni, straight-forward - de modificat câteva fișiere, făcut comit și apoi push. No rocket-science. Implică ceva responsabilitate pentru că trebuie făcut rapid așa că ultima dată a trebuit să-l fac eu. Așa m-a ținut din alte taskuri mai importante încât mi-am dorit să-l pot automatiza. Nu taskul în sine este potențialul aici cât posibilitatea de a automatiza modificările de cod. Inițial vreau să fie ceva funcțional, rulabil local.
Folosiți ceva pentru taskuri de genul? M-am gândit la ceva în python care să modifice niște fișiere, subprocess care să apeleze version control (folosesc hg - BTW) și să facă push.
Alte variante mai bune?
Foloseste Ansible care nu e in esenta decat un mod de a executa o lista de comenzi bash. Modificarile in fisiere le poti face cu sed/awk daca nu sunt complicate.
Cred ca cea mai safe si usoara solutie este ceva intr-un limbaj de programare (python, nodejs, php, etc). In felul asta ai mult mai mult control pe ce se intampla, try / catch, loguri la fiecare pas al executiei.
De exemplu console.log la status code-ul de la request ca sa iti dai seama imediat daca nu e corect si sa se opreasca scriptul daca e diferit de 200.
Ai putea face si un bash script dar e putin mai greu sa tratezi toate cazurile care pot da fail.
Apoi e mult mai usor sa il integrezi cu altceva daca e nevoie, de exemplu vrei sa trimita un mesaj pe slack/telegram/email cand a terminat. Sau poate il pui pe un server si il faci sa declanseze automat in functie de un webhook.
Sau faci un bot telegram care declanseaza scriptul cand ii trimiti tu comanda. In felul asta poti declansa scriptul cand esti pe mobile foarte usor.
Trebuie să faci schimbări după AST (Codemods) sau să înlocuiești ceva placeholder simplu, cu regex ?
Sunt tool-uri pentru refacturarea/patch-uirea codului în mod programatic.
Vrei sa rulezi manual local scriptul sau să fie intr-un job in CI/CD ?
Request-ul este la un index de fișiere care se actualizează periodic. Odată actualizat iau câteva atribute din yml/json (nu țin minte exact formatul) și le adaug în codul meu. That’s it.