GitLab è un sistema di controllo versione (VCS) molto diffuso e uti­liz­za­to so­prat­tut­to nel campo dello sviluppo software. Il software, basato sul web, è stato scritto e pub­bli­ca­to nel 2011 da Dmitri Sa­pa­ro­schez nel lin­guag­gio di pro­gram­ma­zio­ne Ruby on Rails ed è oggi un tool in­di­spen­sa­bi­le per gli svi­lup­pa­to­ri.

Il prin­ci­pa­le vantaggio di GitLab è che facilita si­gni­fi­ca­ti­va­men­te lo sviluppo software par­te­ci­pa­ti­vo e agile. Più svi­lup­pa­to­ri possono lavorare con­tem­po­ra­nea­men­te a un progetto e, ad esempio, elaborare diverse feature in parallelo. La re­gi­stra­zio­ne continua di tutti i processi assicura che nessuna modifica del codice vada persa o possa essere inav­ver­ti­ta­men­te so­vra­scrit­ta. Inoltre, le modifiche già ef­fet­tua­te possono essere annullate senza problemi.

GitLab si basa sul noto software di gestione versioni Git. Git è un software open source, quindi li­be­ra­men­te ac­ces­si­bi­le, nonché uno dei sistemi di controllo versione più uti­liz­za­ti. GitLab si pone come la prin­ci­pa­le al­ter­na­ti­va a GitHub (quando GitHub è stato acquisito da Microsoft nel 2018, molti utenti sono passati a GitLab).

Come funziona GitLab?

GitLab è un’ap­pli­ca­zio­ne basata sul web dotata di un’in­ter­fac­cia utente grafica, ma può anche essere in­stal­la­ta sul proprio server. Elemento centrale di GitLab sono i progetti in cui il codice da elaborare viene salvato in archivi digitali, i co­sid­det­ti re­po­si­to­ry. In queste directory di progetto si trovano tutti i contenuti e i file di un progetto software, ossia ad es. i file Ja­va­Script, HTML, CSS o PHP.

In linea di principio, GitLab funziona nel modo seguente: tutti i par­te­ci­pan­ti a un progetto caricano per prima cosa una propria copia del re­po­si­to­ry centrale sul proprio computer. Le modifiche al codice vengono suc­ces­si­va­men­te sempre eseguite dapprima per mezzo di co­sid­det­ti commit. Una volta eseguite, le modifiche vengono importate nel re­po­si­to­ry prin­ci­pa­le.

Un’altra funzione im­por­tan­te è il branching. Questa permette agli utenti di creare un “ramo” che devia dalla parte prin­ci­pa­le del codice e può essere elaborata in modo in­di­pen­den­te. Il branching è utile so­prat­tut­to quando si devono inserire e testare nuove funzioni senza intaccare lo sviluppo della linea prin­ci­pa­le.

Grazie alla Con­ti­nuous Delivery e alla Con­ti­nuous In­te­gra­tion, GitLab è adatto per lavorare con i branch (ra­mi­fi­ca­zio­ni) e offre varie funzioni utili come le merge request e la creazione di fork. Per questo, il software è uno dei tool di In­te­gra­zio­ne Continua con il più alto tasso di adozione.

Pa­no­ra­mi­ca delle ca­rat­te­ri­sti­che

Le ca­rat­te­ri­sti­che prin­ci­pa­li di GitLab com­pren­do­no:

  • un’in­ter­fac­cia intuitiva
  • i branch possono rimanere privati o essere resi pubblici
  • è possibile gestire diversi re­po­si­to­ry
  • code review
  • tracking integrato dei bug e degli issue
  • Con­ti­nuous In­te­gra­tion/Delivery (CI/CD) integrata e gratuita
  • Wiki di progetto
  • creazione semplice di frammenti di codice, che per­met­to­no di sud­di­vi­de­re parti del codice

Licenza e modelli di utilizzo

GitLab è basato su un codice sorgente aperto e li­be­ra­men­te ac­ces­si­bi­le. Nel 2013 è stata in­tro­dot­ta anche un’edizione En­ter­pri­se pro­prie­ta­ria per le aziende, che ha quindi portato a due i modelli di utilizzo di­spo­ni­bi­li:

  • GitLab CE: Community Edition (gratuita)
  • GitLab EE: En­ter­pri­se Edition (a pagamento)

Entrambe le versioni si basano sulla licenza open source MIT. Rispetto alla Community Edition, l’En­ter­pri­se Edition offre alcune funzioni ag­giun­ti­ve. GitLab offre a questo riguardo tre diversi modelli di ab­bo­na­men­to, il cui prezzo varia in base alle fun­zio­na­li­tà ag­giun­ti­ve de­si­de­ra­te.

L’En­ter­pri­se Edition può tuttavia essere uti­liz­za­ta anche gra­tui­ta­men­te, ma in questo caso permette di uti­liz­za­re solo le funzioni base della Community Edition. Questo modello è indicato nel caso in cui si preveda di in­stal­la­re suc­ces­si­va­men­te la variante En­ter­pri­se, dato che in questo modo il passaggio viene ef­fet­tua­to sem­pli­ce­men­te con un clic del mouse. Al contrario, il passaggio dalla Community Edition all’En­ter­pri­se Edition richiede molto più tempo.

In­stal­la­zio­ne

Per uti­liz­za­re GitLab è ge­ne­ral­men­te con­si­glia­to un ambiente Linux. Come Git, anche il software GitLab è concepito già in partenza per Linux. L’in­stal­la­zio­ne e l’utilizzo in Windows è invece possibile solo con de­ter­mi­na­te li­mi­ta­zio­ni; in questo caso è possibile uti­liz­za­re una macchina virtuale per simulare un ambiente Linux sul computer Windows. Più facile è in­stal­la­re il co­sid­det­to Runner GitLab, che serve anche per poter uti­liz­za­re la Con­ti­nuous In­te­gra­tion di GitLab.

Hosting sul proprio server o utilizzo della soluzione cloud

L’in­stal­la­zio­ne di GitLab sul proprio server non pone par­ti­co­la­ri dif­fi­col­tà per gli utenti che hanno di­me­sti­chez­za con Linux, ma è re­la­ti­va­men­te im­pe­gna­ti­va in termini di tempo. Oltre all’in­stal­la­zio­ne vera e propria, è ne­ces­sa­rio prevedere il tempo ne­ces­sa­rio per la con­fi­gu­ra­zio­ne e per la regolare ma­nu­ten­zio­ne.

Chi desidera ri­spar­miar­si queste in­com­ben­ze può anche in­stal­la­re e uti­liz­za­re GitLab su un cloud server (offerto da diversi fornitori) come Software as a Service (SaaS). In questo modo, il software può essere uti­liz­za­to in poco tempo, senza complesse procedure di in­stal­la­zio­ne e già con­fi­gu­ra­to per l’uso. L’in­stal­la­zio­ne integra nor­mal­men­te già anche il GitLab Runner, così che sia possibile iniziare subito a lavorare.

Il vantaggio di un’in­stal­la­zio­ne manuale in un ambiente server proprio e la maggiore fles­si­bi­li­tà. Gli utenti hanno piena libertà al momento dell’in­stal­la­zio­ne: possono decidere au­to­no­ma­men­te riguardo ai backup, agli update o alle risorse ag­giun­ti­ve e in­stal­la­re pre­ci­sa­men­te ciò di cui hanno bisogno per le loro esigenze ap­pli­ca­ti­ve concrete. Ciò no­no­stan­te, la soluzione cloud è in­te­res­san­te so­prat­tut­to nel caso in cui l’am­mi­ni­stra­to­re di sistema sia già oberato di lavoro.

Consiglio

IONOS offre cloud server e server virtuali potenti e a prezzi van­tag­gio­si che vi per­met­to­no di con­fi­gu­ra­re ra­pi­da­men­te la vostra in­fra­strut­tu­ra virtuale per­so­na­liz­za­ta. I server girano con tutte le comuni di­stri­bu­zio­ni Linux (Ubuntu, Debian) e, come opzione, con Windows.

In­stal­la­zio­ne di GitLab su server Linux

Per in­stal­la­re GitLab su un server Linux, occorre per prima cosa il software Git. Potete con­sul­ta­re la procedura di in­stal­la­zio­ne di Git sul server nel nostro Tutorial Git. Suc­ces­si­va­men­te dovete scaricare il pacchetto GitLab Omnibus dal sito web ufficiale di GitLab. Questo pacchetto contiene tutti i file necessari e viene rac­co­man­da­to per l’in­stal­la­zio­ne di GitLab in Linux.

Ag­gior­na­re il re­po­si­to­ry

Eseguite quindi l’accesso al server come utente root e ag­gior­na­te il re­po­si­to­ry (in questo esempio di Ubuntu) per ricevere tutti i pacchetti necessari per GitLab. A questo scopo, uti­liz­za­te i comandi seguenti:

sudo ssh root@GitLabServer
sudo apt-get update

Suc­ces­si­va­men­te, in­stal­la­te i pacchetti nel modo seguente:

sudo apt install curl openssh-server ca-certificates postfix

Durante l’in­stal­la­zio­ne di Postfix compare una schermata di con­fi­gu­ra­zio­ne. Se­le­zio­na­re l’opzione “Internet Site” e immettere il nome del dominio del server che uti­liz­za­te per l’invio e la ricezione di e-mail.

In­stal­la­re GitLab

Nel passaggio suc­ces­si­vo eseguite l’in­stal­la­zio­ne del pacchetto Omnibus di GitLab. Per farlo, dovete in­nan­zi­tut­to ag­giun­ge­re il “GitLab Package Re­po­si­to­ry” con il comando seguente:

curl https://packages.GitLab.com/install/repositories/GitLab/GitLab-ee/script.deb.sh | sudo bash

In­stal­la­te quindi GitLab con il comando apt. In questo codice esem­pli­fi­ca­ti­vo, GitLab viene in­stal­la­to nella Community Edition (CE):

sudo apt install GitLab-ce

Dopo avere immesso il codice, il server scarica e installa il pacchetto GitLab au­to­ma­ti­ca­men­te. Dopo avere con­fer­ma­to l’in­stal­la­zio­ne, dovete con­fi­gu­ra­re l’URL prin­ci­pa­le con cui accedete al server GitLab.

So­sti­tui­te l’URL "https://GitLab.example.com" con l’URL che uti­liz­za­te realmente. Per farlo, andate nella directory /etc/GitLab dove si trova la con­fi­gu­ra­zio­ne e mo­di­fi­ca­te il file di con­fi­gu­ra­zio­ne GitLab.rb con l’editor di testo standard.

I comandi sono i seguenti:

cd /etc/GitLab
vim GitLab.rb

Nel file GitLab.rb cercate la riga 9 (“external_url) e qui inserite l’URL de­si­de­ra­to. In questo modo, GitLab avvierà e con­fi­gu­re­rà l’in­stal­la­zio­ne a questo URL.

Al primo avvio si aprirà una schermata in cui dovrete resettare la password. Definite la password per l’am­mi­ni­stra­to­re; verrete quindi in­di­riz­za­ti alla schermata di login. Per eseguire l’accesso potete ini­zial­men­te uti­liz­za­re l’utente standard “root”. Le im­po­sta­zio­ni potranno essere mo­di­fi­ca­te in un momento suc­ces­si­vo nelle im­po­sta­zio­ni del profilo.

In­stal­la­re GitLab in Windows

GitLab non può, di per sé, essere in­stal­la­to su un server Windows, tuttavia con un co­sid­det­to GitLab Runner è possibile accedere da Windows a un’in­stal­la­zio­ne di GitLab già con­fi­gu­ra­ta su un server Linux. Questo software viene in­stal­la­to in Windows ed è com­pa­ti­bi­le con la fun­zio­na­li­tà di Con­ti­nuous In­te­gra­tion di GitLab (GitLab CI/CD). In questo modo, il Runner può inviare richieste e incarichi di lavoro a GitLab.

Scaricare Git per Windows e i dati binari per GitLab Runner

Per in­stal­la­re GitLab su un server Windows è ne­ces­sa­rio dapprima disporre di Git per Windows. Il software può essere scaricato dal sito web ufficiale. Inoltre è con­si­glia­bi­le assegnare una password personale all’account utente qualora non si utilizzi l’account di sistema standard.

È inoltre ne­ces­sa­rio disporre di un co­sid­det­to token che autorizzi l’accesso del Runner all’istanza GitLab. Questa chiave di accesso si trova nelle im­po­sta­zio­ni di GitLab al percorso “Settings” -> “CI/CD”.

Nel passaggio suc­ces­si­vo dovete scaricare il file binario (x86 o amd64) per il GitLab Runner per Windows e creare una cartella in una posizione a vostra scelta nel sistema, ad es. C:\GitLab-runner.

Ag­giun­ge­te il file in questa cartella e ri­no­mi­na­te­la in GitLab-runner.exe. Suc­ces­si­va­men­te aprite la Po­wer­Shell di Windows (oppure il prompt dei comandi) con i diritti di accesso am­mi­ni­stra­to­re avanzati.

Re­gi­stra­re il GitLab Runner in Windows

Per re­gi­stra­re il GitLab Runner, a questo punto digitate nella riga di comando il comando seguente:

./GitLab-runner.exe register

Suc­ces­si­va­men­te immettete l’URL dell’in­stal­la­zio­ne di GitLab (qui un esempio):

https://GitLab.com

Nella finestra suc­ces­si­va immettete il token per collegare il Runner con l’in­stal­la­zio­ne di GitLab. A questo punto potete definire una de­scri­zio­ne del Runner. Quest’opzione può in ogni caso essere mo­di­fi­ca­ta anche in seguito nell’in­ter­fac­cia di GitLab. La finestra suc­ces­si­va permette di definire i tag. Questi tag sono utili so­prat­tut­to quando un Runner deve gestire più progetti con­tem­po­ra­nea­men­te. Con i tag è possibile stabilire con pre­ci­sio­ne quali progetti vengono di volta in volta assegnati.

Nell’ultimo passaggio definite il co­sid­det­to “executor”, ossia l’ambiente in cui lavora il Runner, nello specifico un’istanza Vir­tual­Box o un ambiente Shell. Shell è l’executor in assoluto più semplice da con­fi­gu­ra­re e rap­pre­sen­ta l’opzione standard quando si registra per la prima volta un GitLab Runner in Windows.

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell

In­stal­la­re e avviare il GitLab Runner in Windows

Per in­stal­la­re il GitLab Runner, potete uti­liz­za­re l’account di sistema integrato oppure un account utente personale. Nella Po­wer­Shell o nel prompt dei comandi, andate alla directory che avete creato in pre­ce­den­za, quindi lanciate in suc­ces­sio­ne i comandi seguenti:

cd C:\GitLab-Runner
.\GitLab-runner.exe install
.\GitLab-runner.exe start

Muovere i primi passi

Dopo avere in­stal­la­to GitLab, l’in­ter­fac­cia utente grafica può essere ri­chia­ma­ta all’URL pre­ce­den­te­men­te definito. A questo scopo potete uti­liz­za­re il browser di vostra pre­fe­ren­za e accedere come am­mi­ni­stra­to­re. Il nome utente e la relativa password possono anche essere mo­di­fi­ca­ti in un momento suc­ces­si­vo nella sezione Admin.

Creare utenti

Nella sezione Admin potete se­le­zio­na­re la voce di menu “New User” e creare gli utenti che dovranno lavorare insieme ai vari progetti in GitLab. Per farlo dovete con­fi­gu­ra­re un vostro indirizzo e-mail e i dati di accesso personali per l’utente, quindi assegnare a quest’ultimo il progetto de­si­de­ra­to.

In questa stessa sezione potete inoltre mo­di­fi­ca­re i diritti utente se­le­zio­nan­do “Edit”, bloccare un utente oppure eli­mi­nar­lo com­ple­ta­men­te. Tenete presente che il blocco di un utente fa sì che quest’ultimo non possa più accedere, mentre tutti i dati (ad esempio i commit) vengono con­ser­va­ti. L’eli­mi­na­zio­ne completa cancella anche le in­for­ma­zio­ni collegate all’utente, pertanto quest’opzione dovrebbe essere se­le­zio­na­ta con molta at­ten­zio­ne.

Creare un nuovo progetto

Il passaggio più im­por­tan­te consiste in­nan­zi­tut­to nella creazione di un nuovo progetto. A questo scopo se­le­zio­na­te il pulsante “New Project”, così da essere in­di­riz­za­ti alla finestra del progetto da creare. Nel campo “Project Name” inserite il nome del progetto, che non deve contenere caratteri speciali o spazi. Alla voce “Vi­si­bi­li­ty” definite la vi­si­bi­li­tà, ossia quali utenti hanno accesso al progetto. A questo riguardo potete scegliere tra quattro livelli:

  • Privato: il progetto è ac­ces­si­bi­le solo a voi.
  • Interno: il progetto è ac­ces­si­bi­le a ogni utente che ha eseguito il login.
  • Pubblico: il progetto è ac­ces­si­bi­le a ogni utente senza pre­ven­ti­va au­ten­ti­ca­zio­ne.

Una volta definite le im­po­sta­zio­ni, create il progetto se­le­zio­nan­do “create project”. In seguito potete collegare il progetto a un re­po­si­to­ry Git locale. Per farlo, nella vista del progetto, in cor­ri­spon­den­za del nome del progetto, se­le­zio­na­te l’opzione “HTTPS” e copiate i comandi vi­sua­liz­za­ti nella riga di comando.

Se non disponete ancora di una copia locale del re­po­si­to­ry sul server, potete crearla da qui, im­met­ten­do il comando seguente:

$ git clone https://server/namespace/project.git

Una volta che il re­po­si­to­ry è stato ini­zia­liz­za­to con il primo push, tutte le in­for­ma­zio­ni sul re­po­si­to­ry possono essere vi­sua­liz­za­te sulla pagina del progetto. Qui potete vi­sua­liz­za­re inoltre le ultime attività e con­sul­ta­re il log del commit per sapere quali modifiche al codice sono state apportate da chi e quando.

Lavorare con GitLab in team

Il modo più semplice per lavorare a un progetto di GitLab insieme ad altri utenti è quello di con­sen­ti­re agli utenti l’accesso push diretto al re­po­si­to­ry. A questo scopo ag­giun­ge­te gli utenti a un progetto, come spiegato sopra, e assegnate loro i relativi diritti di accesso.

Gli utenti con il diritto di “developer” o superiore possono spostare i propri commit e i propri branch nel re­po­si­to­ry senza alcuna li­mi­ta­zio­ne. In al­ter­na­ti­va è anche possibile uti­liz­za­re le co­sid­det­te merge request: in questo modo è possibile eser­ci­ta­re un maggior controllo sugli accessi, poiché il branch master non viene elaborato in modo diretto. Gli utenti possono infatti creare un branch, inserire i propri commit, quindi inviare una richiesta di merge per in­cor­po­ra­re il branch nel master (o in un altro branch).

Gli utenti senza diritti di accesso possono inoltre creare dei fork, vale a dire elaborare una propria copia del progetto con commit push. Suc­ces­si­va­men­te possono inviare una richiesta di merge per in­cor­po­ra­re nuo­va­men­te il fork nel progetto prin­ci­pa­le. Questa funzione permette al pro­prie­ta­rio del progetto di avere il pieno controllo su ciò che arriva nel re­po­si­to­ry, ma anche di con­sen­ti­re a utenti sco­no­sciu­ti di fornire il proprio con­tri­bu­to.

N.B.

Essendo un tool col­la­bo­ra­ti­vo già am­pia­men­te svi­lup­pa­to, GitLab dispone di numerose funzioni che fa­ci­li­ta­no la col­la­bo­ra­zio­ne in team, ad esempio wiki di progetto o tool per la ma­nu­ten­zio­ne del sistema.

Vai al menu prin­ci­pa­le