În mod normal, fac deploy direct din Git¹ Pe lângă fișierele ce sunt în Git mai trebuie să rulez și niște task-uri Grunt pentru compilarea css/js. În mod normal toată povestea asta se întâmplă prin GitlabCI, totul se transferă via rsync și nu sunt probleme.
Acum am un client ceva mai… special, unde nu am nici un fel de acces la producție altfel decât sFTP.
În acest moment, deploy se face (manual) așa:
- se rulează
rev-parse --short HEAD
=>fc8655e
-
git pull
; git diff --name-only fc8655e HEAD
grunt
- se copiază fișierele astea (alături de ce îmi dă și
grunt
) prin sftp.
În principiu nu e o problemă foarte mare, pentru că totul e într-un bash și nu îl pot integra cu CI. Problema este că bash-ul trebuie executat manual.
Acum, ce speram eu să existe: un … ceva (hook? poate altceva?) care să îmi dea hash-ul existent de la ultimul pull, astfel încât să execut povestea de mai sus automat.
Problema e că nici eu nu știu foarte bine ce ar trebui să caut. API-ul gitlab nu zice nimic de previous hash sau ceva de genul (dar are CI_BUILD_REF
, hash-ul curent).
Varianta gândită de mine este să stochez undeva acest hash undeva (habar n-am unde încă) la fiecare PR sau push și să țin cont de ăsta la fiecare build…
¹ master
= producție, dev
= stage; mai toate fix-urile au branch-ul lor pentru care se face un PR pentru dev
dar sunt și fix-uri rapide direct pe dev
; nu se face push niciodată pe master
, se face doar un PR dev
->master