Git è il sistema di controllo versione più popolare nel campo dello sviluppo software. È open-source e attivamente mantenuto dal 2005 da Linus Torvalds, il famoso creatore di Linux. Oggi, un numero impressionante di progetti software (compresi quelli commerciali) utilizza Git per la gestione delle versioni.
Git segue un'architettura distribuita, rendendolo un esempio perfetto di DVCS (Distributed Version Control System). Utilizzando Git, possiamo gestire contemporaneamente sia un repository locale che uno remoto. In questa guida, mostreremo come configurare un deployment automatico di un progetto Git con un VPS.
Prerequisiti
In questa guida, ci saranno un repository locale e un repository remoto sul VPS. Un repository locale invierà (push) le modifiche al repository remoto. Dal repository remoto, possiamo inviare le modifiche al beta o live branch. Per ottenere questo risultato, ci sono un paio di prerequisiti di cui devi occuparti prima.
- Una macchina locale e un server remoto, entrambi con Ubuntu come sistema operativo. Questa guida mostra come configurare e impostare i server Ubuntu.
- Entrambe le macchine sono configurate con Git.
Per stabilire una connessione sicura al VPS, utilizzeremo SSH. Fortunatamente, anche Git supporta SSH come protocollo per connettersi ai repository remoti. Questa guida esplora la configurazione di SSH per connettersi a server remoti su Ubuntu.
Configurazione del VPS
Sul nostro server remoto, avremo la seguente configurazione:
- Directory live: /var/www/dummy-domain.com
- Repository del server: /var/repo/site.git
Dalla macchina locale, Git invierà gli aggiornamenti al repository del VPS. Dal repository del VPS, configureremo uno script che Git utilizzerà per inviarli automaticamente alla directory live. È anche possibile configurare un repository per le beta release.
-
Creazione dei repository
Connettiti al VPS e crea le posizioni del repository:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Successivamente, inizializza il repository Git:
|
1 |
sudo git init --bare |
Qui, il flag --bare descrive che non ci saranno file sorgente, ma solo i componenti del controllo versione.
-
Hook
Successivamente, configureremo gli hook per il repository. Ogni repository Git contiene una cartella chiamata hooks. Contiene file di esempio che fungono da modello per gli hook e varie azioni personalizzate.
Secondo la documentazione ufficiale di Git, ci sono tre tipi di hook:
- pre-receive: Viene eseguito non appena il server riceve una richiesta di push.
- post-receive: Viene eseguito quando una richiesta di push è completata.
- update: Simile a pre-receive. Tuttavia, viene eseguito una volta per branch.
Dalla posizione del repository, esegui il comando ls:
|
1 |
ls -l |
Cambia la directory corrente in hooks:
|
1 |
cd hooks/ |
Ora, crea lo script post-receive:
|
1 |
sudo nano post-receive |
All'interno dello script, inserisci il seguente codice. Assicurati di modificare le posizioni delle directory di conseguenza:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Salva il file e chiudi l'editor. Imposta il file come eseguibile:
|
1 |
sudo chmod +x post-receive |
Ora, ogni volta che un push viene completato, Git guarderà all'interno dello script post-receive e posizionerà i file di conseguenza.
Configurazione della macchina locale
La macchina remota è pronta ad accettare gli aggiornamenti in entrata del progetto Git. Successivamente, configureremo il repository locale per utilizzare il VPS come server Git remoto.
Creiamo una directory di esempio per il progetto Git:
Ora, inizializza il repository:
|
1 |
sudo git init |
Dobbiamo dichiarare il percorso remoto del repository. Qui faremo riferimento alla posizione remota come branch live . Quindi, esegui il seguente comando:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Mettiamolo alla prova. Abbiamo aggiunto uno script di shell alla directory del progetto:
Successivamente, aggiungi il file al progetto ed esegui un commit:
|
1 2 |
sudo git add . sudo git commit -m "commit casuale" |
Nel prossimo comando, faremo il push del progetto sul live server:
|
1 |
sudo git push live master |
Git si connetterà al VPS tramite SSH. Se la connessione SSH è stata configurata per utilizzare una password, Git richiederà la password di autenticazione.
Repository Beta
E se il progetto non dovesse essere distribuito in un unico passaggio? Forse richiede ulteriori test all'interno di una directory beta. Utilizzando il metodo descritto finora, possiamo creare un altro branch nel VPS, denominato beta branch.
-
Configurazione del Branch Beta su VPS
Innanzitutto, dobbiamo creare le directory per il VPS. Connettiti al VPS e crea una directory sotto /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Ora, abbiamo bisogno di un repository Git che fungerà da beta branch:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Inizializza il repository:
|
1 |
sudo git init --bare |
Proprio come prima, implementa uno script post-receive script:
|
1 2 |
cd hooks sudo nano post-receive |
Dopodiché, inserisci il seguente codice:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Salva il file e chiudi l'editor. Contrassegna post-receive come file eseguibile:
|
1 |
sudo chmod +x post-receive |
-
Aggiunta del Repository Beta sulla Macchina Locale
Ora siamo pronti per aggiungere il repository beta al nostro repository locale. All'interno della directory del progetto locale, esegui il seguente comando Git:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Voilà! Il repository locale è ora configurato con il repository remoto beta. Prova a fare il push delle modifiche:
|
1 2 3 |
sudo git add . sudo git commit -m "versione beta" sudo git push beta master |
-
Passaggio da Beta a Live nel VPS
Ipotizziamo che tutte le modifiche siano state accumulate nel repository beta repo. Come si fa il push delle modifiche al repository live repo? È molto semplice. All'interno del repository beta su VPS, aggiungiamo il repository locale live repo. Successivamente, facciamo semplicemente il push della release beta al repository live repo.
Connettiti al VPS ed esegui i seguenti comandi:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Quindi, puoi fare il push della release beta su live:
|
1 |
sudo git push live master |
Considerazioni Finali
Questa guida dimostra con successo come configurare e utilizzare un VPS como repository remoto per il tuo progetto Git. Il VPS può distribuire automaticamente il codice e i file più recenti senza alcun processo complesso. Può anche fungere da centro di collaborazione tra più team di sviluppo.
Con l'aiuto di Git, puoi stabilire un semplice meccanismo per la distribuzione automatica. Per una corretta gestione del progetto, tuttavia, si consiglia di utilizzare uno strumento come GitLab. La seguente guida mostra come installare e distribuire GitLab su un VPS che gestisce più progetti. Puoi anche dare un'occhiata a come configurare le pipeline di GitLab Continuous Integration (CI) su Ubuntu 20.04.
Buon lavoro!















Commenti
Ancora nessun commento. Scrivi il primo.