Come creare un server Git privato con il Raspberry Pi e GitLab

Condividi questo articolo:


Se fai un po’ di sviluppo software, molto probabilmente conosci GitHub, che è probabilmente il più noto gestore di repository Git sul web.

Per quelli di voi che non conoscono ancora GitHub (basta, smettete di fare gestione, fate un vero lavoro, iniziate a codificare) ecco un promemoria.

GitHub è un servizio web basato sul software Git (che è un software di versioning scritto da Linus Torvald) e che permette di ospitare un progetto fornendo molti strumenti come la gestione dei ticket (attraverso i “Problemi”), la compilazione di statistiche o la creazione di un Wiki per un progetto.

Quindi, oggi vedremo come creare il proprio server di gestione del repository Git, con GitLab, un open souce GitHub-like, e il Raspberry Pi!

Perché creare il proprio server Git sul tuo Raspberry Pi?

Anche se è un sistema piuttosto sorprendente (GitHub è ancora il più grande sistema di code-sharing al mondo), GitHub ha alcuni difetti che potrebbero farti desiderare di ospitare il tuo sistema privato di gestione del repository Git sul tuo Raspberry Pi.

Tra questi difetti, c’è il fatto che GitHub, nella sua versione gratuita, ti obbliga a lasciare il tuo codice accessibile a tutti i lettori. Un altro difetto, GitHub stesso non è open source e questo non va bene!

Infine, usare GitHub è affidarsi ad una terza parte per l’hosting dei propri dati, con ciò che questo induce come dipendenza e come mancanza di configurabilità.

Per tutte queste ragioni, molte startup, gruppi di programmatori di software e altri professionisti dell’IT (e in particolare gli studenti) vogliono ospitare il proprio server Git.

Si è scoperto che il modo più economico e semplice per ospitare un server Git privato è quello di farlo con un Raspberry Pi.

Infatti, per creare il vostro sistema di gestione Git a casa, avrete bisogno solo delle tre seguenti attrezzature :

  • Un Raspberry Pi 3 (che potete facilmente trovare qui su Amazon)
  • Un alimentatore abbastanza potente (date un’occhiata a questo allo stesso venditore)
  • E infine, una scheda MicroSD da 32 GB (ancora una volta, per pochi dollari su Amazon), che è in gran parte sufficiente per un server Git

E con queste poche semplici cose e questo tutorial, sarete in grado di creare facilmente il vostro repository Git privato.

Perché usare GitLab e il Raspberry Pi per creare il tuo GitHub a casa?

Se ci sono altri servizi online che vengono a competere con GitHub (incluso BitBucket) stiamo cercando un’alternativa che ci offra entrambe, le caratteristiche principali di GitHub, e la possibilità di auto-ospitarsi.

Come visto in precedenza, abbiamo scelto il Raspberry Pi per il suo piccolo prezzo e il suo supporto Linux, che è sicuramente il miglior sistema operativo per la creazione di un server Git.

Per quanto riguarda il software, abbiamo scelto GitLabl perché è gratuito, pensato appositamente per l’auto-hosting, e che fornisce quasi tutte le caratteristiche di GitHub, come un’interfaccia web molto chiara per la gestione dei repository Git, il sistema di rilascio, Wiki, e altri…

Un grande vantaggio per GitLab, offre un installatore per Raspbian e il nuovo Raspberry Pi 3!

Come installare GitLab sul Raspberry Pi

L’installazione di GitLab sul Raspberry Pi è molto semplice. Qui eseguiremo un’installazione per Raspbian.

All’inizio installeremo tutto il software che può essere utile a GitLab o alla sua installazione. Per fare questo, eseguire il seguente comando:

sudo apt install curl openssh-server ca-certificates postfix apt-transport-https

Questo comando (tra le altre cose) installerà il software “postfix”. Quando lo installate, assicuratevi di scegliere l’opzione “Website”.

Una volta installato, ora aggiungeremo il repository di GitLab a Raspbian per gestire più facilmente gli aggiornamenti del software.

Per questo, inizieremo aggiungendo le chiavi del deposito e poi aggiungeremo il deposito come tale. Per fare questo, eseguire i seguenti comandi:

curl https://packages.gitlab.com/gpg.key | sudo apt-key add -
sudo curl -o /etc/apt/sources.list.d/gitlab_ce.list "https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/config_file.list?os=debian&dist=jessie" && sudo apt-get update

Una volta fatto, saremo in grado di installare GitLab (Community Edition) e configurarlo. Per fare questo, eseguire il seguente comando:

sudo apt-get install gitlab-ce
sudo gitlab-ctl reconfigure

Tutto quello che dovete fare è collegarvi all’indirizzo del vostro Raspberry Pi dal vostro browser e completare la configurazione. Di default il login è “root” e la password “5iveL! Fe”.

Se vuoi rendere il tuo GitLab raggiungibile da reti esterne, devi rendere disponibile il tuo Raspberry Pi attraverso internet con DynDNS, ti permettiamo di cercarlo su Google (o bing se sei questo tipo di persona).

Conclusione

Quindi, ora sapete come creare il vostro server Git a casa vostra con il Raspberry Pi e il GitLab.

GitLab contro GitHub: Differenze e somiglianze

I servizi di gestione del repository del controllo di versione sono una componente chiave nel flusso di lavoro di sviluppo del software. Negli ultimi anni, GitHub e GitLab si sono posizionati come pratici assistenti per gli sviluppatori, in particolare quando lavorano in grandi team.

Con l’ultima release di GitLab 10.0, GitLab ha fatto un grande salto in avanti dalla gestione del codice, al deployment e al monitoraggio. GitLab lo chiama Complete DevOps. Mira all’intero sviluppo del software, al deployment e al mercato DevOps.

Questo significa che quando si parla delle differenze e delle somiglianze tra GitLab e GitHub, dobbiamo guardare oltre i repository di codice e dare un’occhiata all’intero processo.

Entrambi, GitLab e GitHub sono repository Git basati sul web.

L’obiettivo di Git è quello di gestire i progetti di sviluppo software e i suoi file, in quanto stanno cambiando nel tempo. Git memorizza queste informazioni in una struttura dati chiamata repository.

Un tale repository git contiene un insieme di oggetti commit e un insieme di riferimenti per il commit degli oggetti.

Un repository git è un luogo centrale dove gli sviluppatori memorizzano, condividono, testano e collaborano su progetti web.

Al giorno d’oggi, GitLab e GitHub sono più di “semplici” repository git per sviluppatori.

GitLab ha capito la necessità di una migliore e più profonda integrazione tra lo sviluppo e le catene di strumenti DevOps. Con l’ultima release della 10.0, GitLab ripensa la portata del tooling sia per gli sviluppatori che per i team operativi.

Le basi di GitHub e GitLab

Cominciamo dalle basi. GitHub è una piattaforma di hosting per repository basata su Git con 26 milioni di utenti (marzo 2017). Originariamente, GitHub è stato lanciato nel 2008 ed è stato fondato da Tom Preston-Werner, Chris Wanstrath e PJ Hyett.

I progetti GitHub possono essere resi pubblici e ogni codice condiviso pubblicamente è liberamente aperto a tutti. Si possono avere anche progetti privati, ma solo 3 collaboratori sono ammessi sul piano gratuito.

I repository pubblici su GitHub sono spesso usati per condividere software open source. Oltre al repository di base del codice, GitHub può essere usato per il tracciamento dei problemi, la documentazione e i wiki.

In totale, 26 milioni di persone e 1,5 milioni di organizzazioni hanno creato 67 milioni di repository su GitHub nel 2017.

Simile a GitHub, GitLab è un repository manager che permette ai team di collaborare sul codice. Scritto in Ruby and Go, GitLab offre alcune caratteristiche simili a GitHub per il tracciamento dei problemi e la gestione dei progetti.

Fondato da Dmitriy Zaporozhets e Valery Sizov nel 2011, GitLab impiega più di 500 persone e ha più di 1.400 collaboratori open source. Secondo Wikipedia, GitLab ha 100.000 utenti (marzo 2017) ed è utilizzato da aziende come IBM, Sony e NASA.

Differenze e somiglianze fondamentali: GitLab vs GitHub

In base a varie fonti e alla nostra esperienza, abbiamo individuato le seguenti differenze chiave che dovreste conoscere al momento di prendere la decisione: GitLab contro GitHub.

Livelli di autenticazione

Con GitLab è possibile impostare e modificare i permessi delle persone in base al loro ruolo. In GitHub, puoi decidere se qualcuno ottiene un accesso in lettura o in scrittura ad un repository.

Con GitLab puoi fornire l’accesso al issue tracker (per esempio) senza dare il permesso al codice sorgente. Questo è ovviamente ottimo per i team più grandi e per le aziende con collaboratori di ruolo.

CI / CD integrati e andare oltre il CD

Una delle grandi differenze tra GitLab e GitHub è l’integrazione continuativa integrata di GitLab. CI è un enorme risparmio di tempo per molti team di sviluppo e un ottimo metodo di QA (a nessuno piacciono le richieste di pull che rompono la vostra applicazione).

GitLab offre gratuitamente il proprio CI. Non c’è bisogno di utilizzare un servizio CI esterno. E se sei già abituato ad un CI esterno, puoi ovviamente integrarti con Jenkins, Codeship e altri.

Come GitLab ha menzionato con la sua ultima versione 10.0, GitLab si rivolge chiaramente al mercato DevOps, oltre ad offrire un cruscotto operativo che permette di capire le dipendenze del vostro sviluppo e degli sforzi di DevOps

Non si ferma qui, tuttavia, poiché GitLab sta affrontando l’argomento dell’Auto CI e di come far funzionare automaticamente CI/CD senza che un essere umano lo configuri effettivamente.

Ma, in realtà, ogni progetto dovrebbe gestire un qualche tipo di CI. Quindi, perché non ci limitiamo a rilevare quando un progetto è stato avviato; lo costruiamo e andiamo a testarlo, perché sappiamo come fare i test.
Mark Pundsack, fonte: gitlab.com

Allora, come funziona CI / CD all’interno dell’universo di GitHub? Ovviamente, GitHub offre varie integrazioni di terze parti – come Travis CI, CircleCI o Codeship – per eseguire e testare il vostro codice. Tuttavia, al momento non esiste una soluzione CI integrata.

Scaricate gratuitamente questa guida alla configurazione della pipeline CI/CD passo dopo passo con GitLab vs. GitHub & Travis CI.

Tracciamento dei bug

GitLab, così come GitHub, forniscono un semplice tracker di emissione che consente di cambiare stato e assegnatario per più emissioni contemporaneamente.

Entrambi sono ottimi issue tracker, specialmente quando sono collegati con un visual bug tracker come Usersnap. Mentre i tuoi sviluppatori godono ancora dell’ottima interfaccia di tracciamento dei problemi di GitLab e GitHub, i tuoi tester, colleghi e clienti possono semplicemente segnalare i bug attraverso il widget Usersnap

I report dei bug e i feedback degli utenti possono essere inviati automaticamente a GitLab o GitHub. Oppure puoi pre-filtrare quei ticket all’interno di Usersnap e inviarli manualmente al tuo progetto di sviluppo.

Importazione ed esportazione

Quando si pensa di trasferirsi a GitLab o GitHub, si dovrebbero anche considerare i costi di setup e le risorse necessarie per iniziare. A questo proposito, l’argomento delle funzionalità disponibili per l’importazione e l’esportazione è piuttosto importante.

GitLab offre una documentazione dettagliata su come importare i tuoi dati da altri fornitori – come GitHub, Bitbucket – a GitLab.

GitHub, d’altra parte, non offre una documentazione così dettagliata per i repository git più comuni. Tuttavia, GitHub offre di utilizzare GitHub Importer se hai il tuo codice sorgente in Subversion, Mercurial, TFS e altri.

Anche quando si tratta di esportare dati, GitLab sembra fare un lavoro piuttosto solido, offrendoti la possibilità di esportare i tuoi progetti, inclusi i seguenti dati:

  • Wiki e repository di progetti
  • Caricamento dei progetti
  • La configurazione include webhooks e servizi
  • Problemi con commenti, richieste di fusione con diff e commenti, etichette, pietre miliari, frammenti e altre entità del progetto
  • GitHub, d’altra parte, sembra essere più restrittivo quando si tratta di esportare le caratteristiche dei repository GitHub esistenti.

Integrazioni

Sia GitLab che GitHub offrono una vasta gamma di integrazioni di terze parti. L’integrazione del vostro sistema di controllo di versione con altre applicazioni arricchisce i vostri flussi di lavoro e può aumentare la produttività per i vostri sviluppatori e per i vostri non sviluppatori.

Per verificare se le tue applicazioni preferite sono compatibili con GitLab e GitHub, ti consiglio di controllare la documentazione di GitLab e GitHub.

Oltre ai partner di integrazione disponibili, GitHub ha lanciato il suo marketplace GitHub nel maggio 2017 offrendoti strumenti e applicazioni selezionate.

GitLab ha intrapreso un percorso simile e offre molteplici integrazioni per i team di sviluppo e DevOps.

La comunità GitHub

GitHub si è posizionata tra la sua comunità di sviluppatori. E la sua popolarità è guidata principalmente dalla comunità di GitHub, molto attiva, composta da milioni di sviluppatori. Si possono discutere i problemi e magari imparare qualche hack non ufficiale ma fantastico. D’altra parte, GitLab ha intrapreso alcune grandi attività, come l’hosting di eventi della comunità e la connessione di collaboratori open source.

Se stai cercando la più grande comunità di sviluppatori, ci sono molte probabilità che GitHub sia il posto migliore dove stare.

GitLab Enterprise vs GitHub Enterprise

A livello aziendale, si dovrebbero considerare ulteriori fattori quando si prende una decisione informata sull’utilizzo di GitLab vs GitHub.

GitHub è molto popolare tra gli sviluppatori, e negli ultimi anni ha guadagnato popolarità anche tra i team di sviluppo e le organizzazioni più grandi.

D’altra parte, GitLab è piuttosto forte anche per quanto riguarda le caratteristiche aziendali. Con diversi piani aziendali disponibili, GitLab è particolarmente popolare tra i team di sviluppo più grandi.

Ecco come GitLab e GitHub si confrontano sul prezzo.

Mentre il piano aziendale di GitHub parte da 2.500 USD per 10 utenti all’anno (= 250 USD per utente), il piano iniziale di GitLab è di 39 USD per utente/per anno.

Features GitLab GitHub
released September 2011 April 2008
Free plans Unlimited public and private repositories Free for public repositories only
Paid plans Starts at $39 per user per year Starts at $84 per user per year
Code review features yes yes
Wiki yes yes
Bug & issue tracking yes yes
Private branch yes yes
Build system yes yes (with 3rd party service)
Import projects yes no
Export projects yes no
Time tracking yes no
Web-hosting yes yes]
Self-hosting yes yes (with enterprise plan)
Popularity 546.000+ projects 69.000.000+ projects

 

Conclusione

Senza dubbio, GitHub è ancora il repository git più popolare con il maggior numero di utenti e progetti. Tuttavia, GitLab sta facendo un lavoro fantastico offrendo ai team di sviluppo (e DevOps) di tutto il vostro team di sviluppo ottimi strumenti per flussi di lavoro più efficienti.


Per ulteriori informazioni visita il sito: immagi.net

Condividi questo articolo: