Table des matières

GitLab

GitLab est installé sur Octogon et est disponible à l'adresse https://gitlab.federez.net. Il est utilisé pour les projets de FedeRez et ceux des associations membres.

Installation

Il a été décidé d'utiliser l'installateur omnibus.

On a donc la vm octogon, 2 gigas de ram et 1 coeurs sous debian 8, puis on suit le tuto gitlab.

Installation de gitlab avec omnibus sur octogon

sudo apt-get install curl openssh-server ca-certificates postfix

Puis on install les sources gitlab :

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce

Enfin,

sudo gitlab-ctl reconfigure

Puis on va sur octogon.crans.org, et on setup le mdp admin gitlab, et c'est tout !

Migration des données depuis baldrick

Sur baldrick, on avait un gitlab avec mysql et sources. On passe de mysql à postgresql en passant par ce tuto. Les 2 gitlab sont mis à la meme version, la migration se passe bien.

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/mysql_to_postgresql.md

Ajout de l'auth ldap

On édite les lignes qui vont bien dans le fichier /etc/gitlab/gitlab.rb

http://doc.gitlab.com/ee/integration/ldap.html#enabling-ldap-sign-in-for-existing-gitlab-users

Notamment le serveur ldap, le mot de passe, la base de recherche.

...
production:
  ...
  ldap:
    enabled: true
    servers:
      main:
        label: 'LDAP'

        host: 'ldap.federez.net'
        port: 389
        uid: 'uid'
        method: 'tls'
        bind_dn: 'cn=gitlab,ou=service-users,dc=federez,dc=net'
        password: 'secret'

        active_directory: false
        block_auto_created_users: false
        base: 'ou=users,dc=federez,dc=net' 
... 

Et on lance

gitlab-ctl reconfigure

Https

On utilise l'intégration native Let's Encrypt de GitLab : https://docs.gitlab.com/omnibus/settings/ssl.html#lets-encrypt-integration

En gros, dans /etc/gitlab/gitlab.rb :

# note the 'https' below
external_url "https://gitlab.federez.net"
letsencrypt['enable'] = true

Enfin on reconfigure et c'est bon !

Container registry

On utilise le container registry docker intégré à GitLab.

L'activer est très simple :

Dans /etc/gitlab/gitlab.rb, avec l'intégration Let's Encrypt déjà activée :

registry_external_url 'https://docker.federez.net'

On reconfigure, et c'est bon !

Comme le stockage des layers docker peut vite prendre pas mal de place, et n'est pas vraiment critique dans le contexte de FedeRez, on les met sur un disque séparé (par exemple pour faciliter une migration ou des backups…) :

* Ajouter un nouveau disque sur l'interface Proxmox
* Formater le disque : `mkfs.ext4 /dev/your_new_disk` (noter l'uuid donné lors du formatage)
* `mkdir /registry`
* Ajouter une entrée dans `/etc/fstab` : `UUID=your_uuid /registry ext4 defaults 0 2`
* Monter le fs : `mount -a`
* Rajouter `gitlab_rails['registry_path'] = “/registry”` dans `/etc/gitlab.rb`
* `gitlab-ctl reconfigure`

Et voilà ! (Ne pas oublier de copier les données depuis leur emplacement par défaut, si le registry avait déjà servi…)

Plus qu'à ajouter le nettoyage automatique du registry, comme indiqué dans la doc.

Mettre à jour

Rien de plus simple : sudo apt-get upgrade …

Bot irc

Kgb-bot et kgb client sont en place. Leur configuration, simple à comprendre, se trouve dans /etc/kgb-bot et /etc/kgb-client.

Pour /etc/kgb/kgb-bot.conf

# vim: filetype=yaml
---
soap:
  #server_addr: 0.0.0.0
  server_addr: 127.0.0.1
  server_port: 5391
  service_name: KGB
queue_limit: 150
log_file: "/var/log/kgb-bot.log"
include: "/etc/kgb-bot/kgb.conf.d"
repositories:
  saclay:
    password: plop
  admin:
    password: plop
networks:
  rezosup-saclay:
    nick: DGSI-Paris-Saclay
    ircname: DGSI-Paris-Saclay
    username: dgsi-paris-saclay
    password: ~
    nickserv_password: ~
    server: irc.ensc.rezosup.org
    port: 6667
  rezosup-federez:
    nick: DGSI-FedeRez
    ircname: DGSI-FedeRez
    username: dgsi-federez
    password: ~
    nickserv_password: ~
    server: irc.ensc.rezosup.org
    port: 6667
channels:
  - name: '#saclay'
    network: rezosup-saclay
    repos:
      - saclay
  - name: '#ares'
    network: rezosup-saclay
    repos:
      - saclay
  - name: '#federez-admin'
    network: rezosup-federez
    repos:
      - admin
pid_dir: /var/run/kgb-bot
min_protocol_ver: 1

Pour faire appel à kgb, il faut modifier le post-receive dans un projet gitlab (dossier repositories).

Les scripts sont dans /var/opt/gitlab-scripts-custom et linkés par liens symboliques.

Ancien setup avec les sources (obsolète !)

Méthode

Il y a deux méthodes principales d'installation de GitLab : par les sources et par Omnibus. Cette dernière méthode imposant le serveur web et le serveur de base de données à utiliser, c'est l'installation par sources qui a été retenue.

Le guide suivi est https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md. Les différences sont dans les sections suivantes.

Ruby

Contrairement à ce que suggère le guide, Ruby a été installé via les dépôts (version 2.1.5 dans Jessie) :

apt-get install ruby ruby-dev

Base de données

MySQL a été choisi plutôt que PosgreSQL. Les instructions sont dans le guide suivant : https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/database_mysql.md.

Serveur web

On utilise Apache au lieu de Nginx.

/etc/apache2/sites-available/gitlab
<VirtualHost *:443>
  ServerName gitlab.federez.net
  ServerSignature Off
 
  ProxyPreserveHost On
 
  # Ensure that encoded slashes are not decoded but left in their encoded state.
  # http://doc.gitlab.com/ce/api/projects.html#get-single-project
  AllowEncodedSlashes NoDecode
 
  <Location />
    Order deny,allow
    Allow from all
 
    ProxyPassReverse https://127.0.0.1:8080
    ProxyPassReverse gitlab.federez.net
  </Location>
 
  #apache equivalent of nginx try files
  # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
  # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
  RewriteEngine on
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]
  RequestHeader set X_FORWARDED_PROTO 'https'
 
  # needed for downloading attachments
  DocumentRoot /home/git/gitlab/public
 
  #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
  ErrorDocument 404 /404.html
  ErrorDocument 422 /422.html
  ErrorDocument 500 /500.html
  ErrorDocument 503 /deploy.html
</VirtualHost>

LDAP

Les utilisateurs sont authentifiés avec le serveur LDAP de FedeRez. On configure donc GitLab pour s'en servir :

/home/git/gitlab/config/gitlab.yml
...
production:
  ...
  ldap:
    enabled: true
    servers:
      main:
        label: 'LDAP'

        host: 'ldap.federez.net'
        port: 389
        uid: 'uid'
        method: 'tls'
        bind_dn: 'cn=gitlab,ou=service-users,dc=federez,dc=net'
        password: 'secret'

        active_directory: false
        block_auto_created_users: false
        base: 'ou=users,dc=federez,dc=net' 
... 

Mise à jour

Pour mettre à jour GitLab, lire le changelog, mettre à jour les dépôts dans /home/git et relancer les services. Le mieux est de suivre ce tuto : http://doc.gitlab.com/ce/update/patch_versions.html

Suivi de la taille du dossier /home/git :