GitLab è un sistema di controllo della versione basato sul web e sviluppo di software collaborativo basato su Git. Le sue caratteristiche includono cose come il repository di codice, il wiki o il sistema di rilevamento dei problemi. In questo articolo ti mostrerò come installare la Community Edition di GitLab su FreeBSD.
Facciamolo
Banca dati
L'unico database supportato è PostgreSQL. Puoi seguire questo tutorial se non ne hai uno in esecuzione:https://unixcop.com/how-to-install-postgresql-in-freebsd/ .
Avremo bisogno dell'estensione pgtrgm, se non hai la porta postgresl_contrib, installala con:
# cd /usr/ports/databases/postgresql14-contrib
make install clean
Se stai usando dei pacchetti, installalo con:
pkg add postgresql14-contrib
Crea un utente del database chiamato git e il database di produzione gitlab:
root@fbsd:~ # su postgres
$ psql
psql (14beta1)
Type "help" for help.
postgres=# CREATE USER git CREATEDB SUPERUSER;
CREATE ROLE
postgres=# ALTER ROLE git WITH PASSWORD 'superpass';
ALTER ROLE
postgres=# CREATE DATABASE gitlabhq_production OWNER git;
CREATE DATABASE
Quindi connettiti al database gitlabhq_production e abilita l'estensione pg_trgm:
postgres=# \connect gitlabhq_production
You are now connected to database "gitlabhq_production" as user "postgres".
gitlabhq_production=# CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION
GitLab-ce
Ora, compiliamo gitlab-ce e le sue dipendenze:
root@fbsd:~ # cd /usr/ports/www/gitlab-ce/
root@fbsd:/usr/ports/www/gitlab-ce # make install clean
Ciò richiederà più o meno tempo a seconda delle porte già installate. Seguire le istruzioni sullo schermo. La compilazione di tutto ha richiesto un paio d'ore nel mio computer lento:
Redis
La cache Redis deve essere installata con la porta gitlab-ce; se non hai installato esegui:
# cd /usr/ports/databases/redis
# make install clean
Aggiungi le seguenti righe al file di configurazione /usr/local/etc/redis.conf
:
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
Ciò abiliterà e concederà le autorizzazioni al socket redis. Ora abilita i servizi redis e avvialo:
# /usr/local/etc/rd.d/redis enable
# /usr/local/etc/rd.d/redis start
Aggiungi l'utente git al gruppo redis e abbiamo finito con la configurazione di redis:
# pw groupmod redis -m git
Preconfigurazione Gitlab
Dobbiamo fare un po' di lavoro in più.
Cambia la directory home dell'utente git
Gitlab si aspetta che la home directory dell'utente git sia /usr/home/git . Puoi cambiarlo con:
# chsh git
Poiché non mi piace il programma vi, cambierò in ee con questo comando:
# EDITOR=/usr/bin/ee chsh git
Configura gitlab
Vai alla directory di installazione di gitlab e modifica il file di configurazione:
# cd /usr/local/www/gitlab-ce
# ee config/gitlab.yml
Quindi, sto cambiando host:localhost → host:192.168.122.234
(il mio IP poiché non ho un nome di dominio completo in questa macchina virtuale di test) e non utilizzo https per questo tutorial. E per email_from sto usando un generico noreply@localhost
. Puoi cercare questi elementi premendo ctrl-y
nell'editor ee.
In config/unicorn.rb
impostare il numero di lavoratori almeno al numero di core:
# ee config/unicorn.rb
Passa a git user ed esegui quanto segue:
# su - git
$ git config --global core.autocrlf input
$ git config --global gc.auto 0
$ git config --global repack.writeBitmaps true
$ git config --global receive.advertisePushOptions true
Il primo è per l'editor web che necessita di autocrlf; il secondo è perché GitLab eseguirà "git gc" quando necessario; il terzo abilita le bitmap dei file di pacchetto; e l'ultimo abilita le opzioni push.
Configura le impostazioni del database in config/database.yml
:
Inizializza il DB
Concedi autorizzazioni di scrittura temporanee all'utente git:
# chown git /usr/local/share/gitlab-shell
Inizializza il database con questo comando (come utente git):
# su - git
$ cd /usr/local/www/gitlab-ce/
$ rake gitlab:setup RAILS_ENV=production
Torna all'utente root e annulla le autorizzazioni temporanee:
# chown root /usr/local/share/gitlab-shell
Ci siamo quasi, controlliamo se tutto fino ad ora è configurato correttamente:
# su - git
$ cd /usr/local/www/gitlab-ce && rake gitlab:env:info RAILS_ENV=production
Ora, continua (come utente git) a compilare i file e le risorse di GetText PO:
$ rake gettext:compile RAILS_ENV=production
Created app.js in /usr/local/www/gitlab-ce/app/assets/javascripts/locale/bg
Created app.js in /usr/local/www/gitlab-ce/app/assets/javascripts/locale/de
(...)
All files created, make sure they are being added to your assets.
If they are not, you can add them with this line (configurable):
//= require_tree ./locale
//= require gettext/all
$ yarn install --production --pure-lockfile
yarn install v1.22.10
[1/5] Validating package.json...
[2/5] Resolving packages...
(...)
success Dependency postinstall check passed.
Done in 150.47s.
$ rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production
[long output that I didn't capture the begin because a distraction]
`gitlab:assets:fix_urls` finished in 31.47730386 seconds
`gitlab:assets:check_page_bundle_mixins_css_for_sideeffects` finished in 10.420508114 seconds
$ ^d
Ora abilita e avvia il servizio GitLab, esegui come root:
# /usr/local/etc/rc.d/gitlab enable
gitlab enabled in /etc/rc.conf
# /usr/local/etc/rc.d/gitlab start
Nginx
Ngninx è il server web ufficialmente supportato. Installalo con:
# cd /usr/ports/www/nginx
make install clean
La configurazione di nginx è piuttosto semplice:includi la configurazione fornita da gitlab aggiungendo la seguente riga all'interno del blocco http in /usr/local/etc/nginx/nginx.conf
:
include /usr/local/www/gitlab-ce/lib/support/nginx/gitlab;
Abilita e avvia Nginx:
# /usr/local/etc/rc.d/nginx enable
# /usr/local/etc/rd.d/nginx start
Primo accesso
Come visto al termine dell'inizializzazione del database, ti verrà chiesto di cambiare la password di root:
E il gioco è fatto, ora puoi accedere con l'utente root e la nuova password e iniziare a lavorare.
Dove andare da qui
Come dico sempre:vai alla documentazione, in GitLab è presente il menu in alto a destra dello schermo:
E nella schermata successiva troverai alcuni link utili come: