Table des matières

Gitlab

Gitlab est une interface pour git, il nous permet de visualiser facilement nos dépôts git. Plus que ça il permet d'organiser des projets en les regroupants par groupes, en nous permettant de rapporter toute erreur (Issues) ainsi que de soumettre des patchs correctifs de amnière automatisé (Merge Request). On peut également mettre en place un wiki propre au projet.

Le serveur possède deux IP:

  192.168.102.32
  157.159.40.16

Il est aussi dans le DNS : gitlab.minet.net

Ces deux IPs sont accessibles sur le port 8088 pour le web et en 22 & 2222 pour ssh.

Rappel: Le port 22 est bloqué par le pare-feu de l'INT si vous êtes à l'exterieur du campus.

Maintenance

Pour voir l'état des services utilisez :

  $ gitlab-ctl status

Si il y a un problème :

  $ gitlab-ctl restart

Installation

On utilise l'installateur omnibus :

One reason the Omnibus package is more reliable is its use of Runit to restart any of the GitLab processes in case one crashes. On heavily used GitLab instances the memory usage of the Sidekiq background worker will grow over time. Omnibus packages solve this by letting the Sidekiq terminate gracefully if it uses too much memory. After this termination Runit will detect Sidekiq is not running and will start it. Since installations from source don't have Runit, Sidekiq can't be terminated and its memory usage will grow over time.

Toutes les infos sont sur : http://doc.gitlab.com/omnibus/

Configuration

Tout se passe dans /etc/gitlab/gitlab.rb, on fait les modifications puis on fait :

  $ gitlab-ctl reconfigure

Ce qui va automatiquement generer les fichiers de configuration des services de Gitlab.

Fichiers de configuration générés dans : /var/opt/gitlab/. Réécrits à chaque “reconfigure” mais utile pour débugger. Les repos s'y trouvent aussi sous git-data.

Les lignes qui nous concernent sont :

Configuration de l'URL et du port :

external_url 'http://gitlab.minet.net:8088'

Configuration du LDAP (remplacer l'utilisateur et le MdP) :

gitlab_rails['ldap_enabled'] = true
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   Minet: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'Ldap'
     host: 'ldap-master.minet.net'
     port: 389
     uid: 'uid'
     method: 'plain' # "tls" or "ssl" or "plain"
     bind_dn: 'cn=[identifiant_inspecteur],dc=minet,dc=net'
     password: '[Mdp_inspecteur]'
     active_directory: false
     allow_username_or_email_login: false
     block_auto_created_users: false
     base: 'dc=minet,dc=net'
     user_filter: ''
     attributes:
       username: ['uid', 'userid', 'sAMAccountName']
       email:    ['mail', 'email', 'userPrincipalName']
       name:       'cn'
       first_name: 'givenName'
       last_name:  'sn'
EOS

Les backups :

 gitlab_rails['manage_backup_path'] = true
 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
 gitlab_rails['backup_archive_permissions'] = 0644

Le nombre de processus sidekick (augmenter si le gitlab met du temps à répondre) :

 sidekiq['log_directory'] = "/var/log/gitlab/sidekiq"
 sidekiq['shutdown_timeout'] = 4
 sidekiq['concurrency'] = 15

Mise à jour

Contrairement à d'autre services, la mise à jour est plutot simple et presque sans risque :

  $ sudo apt-get update 
  $ sudo apt-get install gitlab-ce

Un backup de la base de donnée est fait automatiquement.

Informations complémentaires

- Les repos importées depuis l'ancien Gitlab sont stockés sur un compte Administrator (compte Standard hors LDAP).

- Par défaut les branches master sont “protected” ce qui peux faire planter les scripts de push.

- L'utilisateur automatique pour les scripts est git.