ITA - Git deploy: un esempio pratico
January 2021 (153 Words, 1 Minutes)
Mentre sto lavorando al mio porgetto GardenServer mi sono ritrovato a modificare il codice e contemporaneamente dover aggiornare il device remoto (raspberry) che ospita il codice.
A pensarci c’è una soluzione che si può ispirare a questo vecchio articolo.
In generale i passi per raggiungere lo scopo sono :
- creare l’utente remoto che esegue il software
- creare il repo bare di git
- configurare l’hook, questo script dovrà stoppare il programma in esecuzione, aggiornare l’applicazione e far ripartire il servizio
- configurare il repo locale per il push
di seguito i passaggi nello specifico
Creazione dell’utente remoto
Con il comando :
$ useradd -m -d /home/<user> -r
aggiungere la propria chiave ssh pubblica al file /home/<user>/.ssh/authorized_keys
questo ultimo passo è importante per snellire il processo di deply con git, che in questo caso deve avvenire via ssh.
Git
Per creare il repo git ho usato il seguente comando:
$ mkdir -p /home/<user>/git/<project.git>
$ cd /home/<user>/git/<project.git>
$ git init --bare
Configurazione dell’hook
Creiamo il file di hook /home/<user>/git/<project.git>/hooks/post-receive
con il seguente contenuto :
GIT_REPO=/home/<user>/git/<project.git>
GIT_CLONE=/home/<user>/bin/
GIT_BRANCH=master
# fermo il servizio
sudo systemctl stop <service>
# rimuovo la vecchia codebase
rm -rf $GIT_CLONE
# installo la nuova versione
git clone $GIT_REPO $GIT_CLONE -b $GIT_BRANCH
# questo è un progetto python quindi installo le dipendenze
source /home/<user>/env/bin/activate
pip install -r /home/<user>/bin/requirements.txt
# si possono fare anche altre operazioni di setup
# riavvio il servizio
sudo systemctl start <service>
exit 0
Rendo lo scrip eseguibile:
chmod +x /home/<user>/git/<project.git>/hooks/post-receive
Fare push
Configuriamo il remote di deploy con questo comando:
$ git remote add deploy <user>@<device>:~/git/<project.git>
Da ora in avanti per deployare sul device si potra usare il comando :
$ git push deploy master
NB : per modificare il branch di deploy c’è la variabile apposita.
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk