Deploy via (s)FTP cu ajutorul unui CI runner (GitlabCI)

Î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

Da, cel mai safe este sa iti scrii tu hashul deployat intr-un fisier local, ca ultim pas al procesului de deploy, si la urmatorul deploy sa il citesti de acolo.

1 Like

Incearca asta. L-am mai folosit si eu.

https://leanmeanfightingmachine.github.io/dploy/

2 Likes

eu mai folosesc asta: https://github.com/banago/PHPloy/ se bazeaza tot pe hash-ul dintr-un fisier

2 Likes