Instructions pour une installation de GitLab on-premise.
Installation Omnibus sur Ubuntu 14.04. Les instructions sont prises du site de GitLab.
sudo apt-get install curl openssh-server ca-certificates
(pas de postfix)curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
sudo gitlab-ctl reconfigure
Aide de départ : https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Dans sudo nano /etc/gitlab/gitlab.rb :
gitlab_rails['time_zone'] = 'America/New_York'
Ensuite:
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart
Étape par étape:
$ sudo -e /etc/gitlab/gitlab.rb
external_url
de yourdomain.com
à yourdomain.com:9999
, 9999 étant le port voulu.$ sudo gitlab-ctl reconfigure
Si le port est changé et que d'autres sites sont utilisés avec Apache sur le port 80, on peut ajouter un virtual host pour cacher le port.
/etc/apache2/sites-available/gitlab.conf
: <VirtualHost *:80> ServerName gitlab.sgariepy.com ServerAdmin webmaster@localhost ProxyPreserveHost On ProxyPass / http://localhost:81/ ProxyPassreverse / http://localhost:81/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Le fichier de configuration d'Apache considère que GitLab est configuré sur le port 81.
proxy
et proxy_http
($ a2enmod <module>
). /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
/var/opt/gitlab/nginx/conf/
Pour activer le HTTPS, voir la documentation de GitLab à ce sujet.
GitLab Omnibus prend les certificats dans /etc/gitlab/ssl
par défaut. Pour que Nginx donne la chaîne de certificats, il faut que le fichier CRT du domaine offre aussi les autres certificats.
Le format est
-----BEGIN CERTIFICATE----- Le certificat du serveur -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Intermediate Certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Root Certificate -----END CERTIFICATE-----
Ayant son certificat gitlab.domain.tld.crt
, le certificat de l'intermédiaire intermediate.crt
et de la racine root.crt
, on peut faire:
$ cat intermedate.crt root.crt > bundle.crt $ cat gitlab.domain.tld.crt bundle.crt > gitlab.domain.tld.crt > gitlab.domain.tld.chained.crt
Une fois fait, il faut redémarrer GitLab avec gitlab-ctl restart
.
Pour tester la connexion SSL : SSL Server Test.
gitlab-ctl restart gitlab-ctl reconfigure
Les sauvegardes sont exécutées par la commande gitlab-rake gitlab:backup:create
. Avec la configuration par défaut, le répertoire où se trouveront les sauvegardes est /var/opt/gitlab/backups
.
Fichiers de configurations:
/var/opt/gitlab/gitlab-rails/uploads
external_url "https://gitlab.exemple.com/" nginx['enable'] = false web_server['external_users'] = ['www-data']
gitlab-ctl reconfigure
.# usermod -a -G gitlab-www www-data # usermod -a -G git www-data
# a2enmod rewrite # a2enmod ssl # a2enmod proxy # a2enmod proxy_http # a2enmod headers
# ci_external_url 'http://ci.example.com'
. Changer l'URL.gitlab-ctl reconfigure
.
Quand le runner est en mode Shell, les builds sont faits dans /home/gitlab-runner/builds
par l'utilisateur gitlab-runner
.
La procédure officielle : Install using GitLab's repository for Debian/Ubuntu/CentOS/RedHat.
# curl -sSL https://get.docker.com/ | sh
If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker your-user
apt-get
: # curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
On peut utiliser MathMagic pour les formules mathématiques à inclure dans la documentation. MathMagic Lite convient pour une utilisation personnelle et pour créer les formules. Suffit de créer la formule, de changer les options d'exportation à la copie à 150% et faire Ctrl+C. Coller directement dans GitLab. Ne pas utiliser la copie PNG, simplement la copie normale.
Cette procédure explique comment restaurer ou migrer une installation de GitLab. On prend pour acquis que le backup a été fait sur le serveur source et qu'il sera migré sur un serveur cible. On parle de restauration quand le serveur source est le même que le serveur cible.
Sur le serveur cible, on a par exemple, un fichier backup 1393513186_gitlab_backup.tar
avec le timestamp 1393513186
:
/var/opt/gitlab/backups
.# chmod -R 775 /var/opt/gitlab/backups/1393513186_gitlab_backup.tar
.# gitlab-ctl start
.# gitlab-ctl stop unicorn
.# gitlab-ctl stop sidekiq
.# gitlab-rake gitlab:backup:restore BACKUP=1393513186
.# gitlab-ctl start
.Supporting proxied SSL, voir aussi Cannot clone git repo using GitLab CI runners token after update to 8.12.0.
Après avoir vu que le GitLab-CI ne fonctionnait pas, il semble qu'il faut quand même activer le nginx quand on est derrière un reverse-proxy.
nginx['enable'] = true nginx['listen_port'] = 8082 # quelconque port inutilisé. nginx['listen_https'] = false
Cette section s'intéresse principalement au GitLab CI installé sur un serveur on-premise, mais controlé par GitLab.com.
Pour configurer le GitLab CI pour un projet, il faut créer et commiter un fichier .gitlab-ci.yml
.
Voir la documentation
Si on veut un artefact reste que pour un certain temps, on peut utiliser expire_in: <délai>
, par exemple:
artefact: paths: - fichier.txt expire_in: 20 minutes
Permet d'exécuter un script avant le script
. C'est pour des questions de sémantique que l'on voudrait séparer un script en deux: une partie qui est nécessaire avant d'exécuter le réel travail. Par exemple, installer des packages dans before_script
et ensuite exécuter le script
.
Obtenir le token du runner avec list
et ensuite utiliser unregister
:
$ sudo gitlab-runner list $ sudo gitlab-runner unregister -u https://gitlab.com/ -t S0m3t0k3n
Il faut ajouter le user gitlab-runner
au groupe docker
pour qu'il puisse exécuter des commandes Docker.
$ sudo usermod -a -G docker gitlab-runner