Outils pour utilisateurs

Outils du site


gestion_configuration:gitlab:main

GitLab

Instructions pour une installation de GitLab on-premise.

Installation

Installation Omnibus sur Ubuntu 14.04. Les instructions sont prises du site de GitLab.

  1. sudo apt-get install curl openssh-server ca-certificates (pas de postfix)
  2. curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  3. sudo apt-get install gitlab-ce
  4. sudo gitlab-ctl reconfigure

Configuration

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:

  1. $ sudo -e /etc/gitlab/gitlab.rb
  2. Changer le external_url de yourdomain.com à yourdomain.com:9999, 9999 étant le port voulu.
  3. $ 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.

  1. 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.

  2. Activer les modules Apache proxy et proxy_http ($ a2enmod <module>).
  3. Redémarrer Apache.

Source

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

Source

Répertoires de GitLab

  • Fichiers attachments : /var/opt/gitlab/gitlab-rails/uploads

GitLab servi par Apache

  1. Configurer GitLab pour ne pas utiliser nginx:
    external_url "https://gitlab.exemple.com/"
    nginx['enable'] = false
    web_server['external_users'] = ['www-data']
  2. Exécuter gitlab-ctl reconfigure.
  3. Ajouter l'utilisateur Apache au groupe de GitLab et de Git :
    # usermod -a -G gitlab-www www-data
    # usermod -a -G git www-data
  4. Si ce n'est pas déjà fait, activer les modules Apache:
    # a2enmod rewrite
    # a2enmod ssl
    # a2enmod proxy
    # a2enmod proxy_http
    # a2enmod headers

Source

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.

  1. 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
  2. Ensuite installer le Multi-Runner : sudo apt-get install gitlab-ci-multi-runner
    1. 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 :

  1. Installer GitLab et s'assurer qu'il fonctionne.
  2. Prendre le backup de GitLab et le placer dans le répertoire /var/opt/gitlab/backups.
  3. Changer le mode du fichier : # chmod -R 775 /var/opt/gitlab/backups/1393513186_gitlab_backup.tar.
  4. Démarrer GitLab s'il n'est pas déjà démarré: # gitlab-ctl start.
    1. Arrêter Unicorn : # gitlab-ctl stop unicorn.
    2. Arrêter Sidekiq : # gitlab-ctl stop sidekiq.
  5. Restaurer: # gitlab-rake gitlab:backup:restore BACKUP=1393513186.
  6. Redémarrer tous les services : # gitlab-ctl start.

Backup restore

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

Sources

gestion_configuration/gitlab/main.txt · Dernière modification : 2022/05/19 14:41 de sgariepy