Table des matières
GitLab
Instructions pour une installation de GitLab on-premise.
Installation
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
Configuration
Aide de départ : https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Changer le timezone
Dans sudo nano /etc/gitlab/gitlab.rb :
gitlab_rails['time_zone'] = 'America/New_York'
Ensuite:
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart
Changer le port
Étape par étape:
$ sudo -e /etc/gitlab/gitlab.rb
- Changer le
external_url
deyourdomain.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.
- Créer un fichier
/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.
- Activer les modules Apache
proxy
etproxy_http
($ a2enmod <module>
). - Redémarrer Apache.
Autres fichiers de configuration
/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
- Le serveur web :
/var/opt/gitlab/nginx/conf/
Activer le HTTPS
Pour activer le HTTPS, voir la documentation de GitLab à ce sujet.
Installer la chaîne SSL
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.
Sources
Opérations
gitlab-ctl restart gitlab-ctl reconfigure
Sauvegardes
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:
- /etc/gitlab/gitlab.rb
- /etc/gitlab/gitlab-secrets.json
Répertoires de GitLab
- Fichiers attachments :
/var/opt/gitlab/gitlab-rails/uploads
GitLab servi par Apache
- Configurer GitLab pour ne pas utiliser nginx:
external_url "https://gitlab.exemple.com/" nginx['enable'] = false web_server['external_users'] = ['www-data']
- Exécuter
gitlab-ctl reconfigure
. - Ajouter l'utilisateur Apache au groupe de GitLab et de Git :
# usermod -a -G gitlab-www www-data # usermod -a -G git www-data
- Si ce n'est pas déjà fait, activer les modules Apache:
# a2enmod rewrite # a2enmod ssl # a2enmod proxy # a2enmod proxy_http # a2enmod headers
GitLab CI
- Modifier le fichier /etc/gitlab/gitlab.rb et décommenter la ligne
# ci_external_url 'http://ci.example.com'
. Changer l'URL. - Faire
gitlab-ctl reconfigure
.
Informations
Quand le runner est en mode Shell, les builds sont faits dans /home/gitlab-runner/builds
par l'utilisateur gitlab-runner
.
Runners
La procédure officielle : Install using GitLab's repository for Debian/Ubuntu/CentOS/RedHat.
- Installer Docker si ce n'est pas déjà fait :
# 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
- Ensuite ajouter le repo à
apt-get
:# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
- Ensuite installer le Multi-Runner :
sudo apt-get install gitlab-ci-multi-runner
- On peut trouver le token dans GitLab CI, ex : https://gitlab.example.com/ci/admin/runners.
Utilisation de GitLab
Wiki
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.
Restaurer / Migrer
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
:
- Installer GitLab et s'assurer qu'il fonctionne.
- Prendre le backup de GitLab et le placer dans le répertoire
/var/opt/gitlab/backups
. - Changer le mode du fichier :
# chmod -R 775 /var/opt/gitlab/backups/1393513186_gitlab_backup.tar
. - Démarrer GitLab s'il n'est pas déjà démarré:
# gitlab-ctl start
.- Arrêter Unicorn :
# gitlab-ctl stop unicorn
. - Arrêter Sidekiq :
# gitlab-ctl stop sidekiq
.
- Restaurer:
# gitlab-rake gitlab:backup:restore BACKUP=1393513186
. - Redémarrer tous les services :
# gitlab-ctl start
.
Configuration derrière un reverse-proxy
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
GitLab.com
GitLab CI
Cette section s'intéresse principalement au GitLab CI installé sur un serveur on-premise, mais controlé par GitLab.com.
Fichier de configuration YAML
Pour configurer le GitLab CI pour un projet, il faut créer et commiter un fichier .gitlab-ci.yml
.
Voir la documentation
Artefacts
Expire In
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
before_script
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
.
Exécuter des jobs en parallèle
GitLab Runner
Unregister runner
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
Utilisation de Docker avec GitLab CI
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