GitLab_logoL’installation suivante décrit une installation complète de Gitlab sur une distribution Ubuntu Server 12.04, avec un utilisateur git, Ruby Version Manager (rvm), Puma (serveur Ruby) et nginx comme serveur frontal. Nous avons préféré utiliser une socket et un serveur redis.

Installer les paquets

  • git
  • curl..
sudo apt-get install git curl build-essential libssl-dev libmysqlclient-dev libicu-dev redis-server  

Installer rvm

Pour installer rvm suivre le billet suivant en modifiant l’utilisateur et le groupe par git. Utiliser la version 1.9.3 de Ruby.

Installation

Créer la base de données

mysql -uroot -p  
mysql> create database gitlab;  
mysql> grant all on gitlab.* to gitlab@localhost identified by "motdepasse";  
mysql>quit  

Installation

Se loger avec l’utilisateur

sudo su - git -s /bin/bash  

Installer gitlab-shell:

git clone https://github.com/gitlabhq/gitlab-shell.git cd gitlab-shell git checkout v1.3.0  

Initialiser le fichier de configuration et le mettre à jour éventuellement:

cp config.yml.example config.yml  

Lancer le script d’installation de gitlab-shell:

./bin/install

Adjuster le shebang pourRVM

#!/usr/bin/env ruby

Changer à:

#!/usr/bin/env /home/git/.rvm/bin/ruby vim bin/gitlab-shell

Ajuster le shebang pour RVM en éditant le fichier bin/gitlab-shell et en changeant la ligne

#!/usr/bin/env ruby

par

#!/usr/bin/env /home/git/.rvm/bin/ruby

Installer gitlab:

cd /home/git  
git clone https://github.com/gitlabhq/gitlabhq.git gitlab  
cd /home/git/gitlab  
git checkout 5-1-stable  

Initialiser le fichier de configuration et le mettre à jour éventuellement (changer le port ssh par exemple):

cp config/gitlab.yml.example config/gitlab.yml  

Créer les répertoires et mettre à jour les droits d’accès:

chown -R git log/  
chown -R git tmp/  
chmod -R u+rwX  log/  
chmod -R u+rwX  tmp/  
mkdir /home/git/gitlab-satellites  
mkdir tmp/sockets  
mkdir tmp/pids  
chmod -R u+rwX  tmp/pids/  
cp config/puma.rb.example config/puma.rb  
cp config/database.yml.mysql config/database.yml  

Puis, mettre à jour le fichier de configuration de la base avec les informations de connexion à la base mySQL.

Ensuite configurer Git:

git config --global user.name  "GitLab"  
git config --global user.email "gitlab@localhost"  

Installer les gems nécessaires, puis l’application:

bundle install--deployment --without development test postgres  
bundle exec rake gitlab:setup RAILS_ENV=production  

Un mot de passe et compte administrateur est créé par défaut:Administrator account created:login………admin@local.host
* password……5iveL!fe* Se déconnecter de l’utilisateur git et installer le script:

sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-1-stable/init.d/gitlab  
sudo chmod +x /etc/init.d/gitlab sudo update-rc.d gitlab defaults 21  
sudo chown -R git:git /home/git  

Avec l’utilisateur git, vérifier les informations de l’installation:

bundle exec rake gitlab:env:info RAILS_ENV=production  

On obtient quelque chose comme:

*System information*  
* System:        Ubuntu 12.04*  
* Current User:    git*  
* Using RVM:    yes*  
* RVM Version:    1.19.6*  
* Ruby Version:    1.9.3p392*  
* Gem Version:    1.8.25*  
* Bundler Version:1.3.5*  
* Rake Version:    10.0.4GitLab information*  
* Version:    5.1.0*  
* Revision:    20df7b1*  
* Directory:    /home/git/gitlab*  
* DB Adapter:    mysql2*  
* URL:        http://localhost*  
* HTTP Clone URL:    http://localhost/some-project.git*  
* SSH Clone URL:    git@localhost:some-project.git*  
* Using LDAP:    no*  
* Using Omniauth:    noGitLab Shell*  
* Version:    1.3.0*  
* Repositories:    /home/git/repositories/*  
* Hooks:        /home/git/gitlab-shell/hooks/*  
* Git:        /usr/bin/git*

Puis vérifier l’installation:

bundle exec rake gitlab:check RAILS_ENV=production  

Se déconnecter de l’utilisateur git et démarrer Gitlab:

sudo service gitlab start  

Intégrer dans nginx

sudo curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-1-stable/nginx/gitlab  

Modifier le fichier /etc/nginx/sites-available/gitlab avec les paramètres de son serveur, puis activer le site:

sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab  

Redémarrer nginx:

sudo service nginx restart  

Attention à ne pas oublier de changer le mot de passe administrateur.

Sources

https://github.com/gitlabhq/gitlabhq/blob/5-1-stable/doc/install/installation.md
https://github.com/gitlabhq/gitlab-public-wiki/wiki/Debian-Squeeze-complete-Installation-%27script%27-with-RVM

Problèmes fréquents

https://github.com/gitlabhq/gitlabhq/issues/3384

Autre problème

Si vous avez une erreur du type: “[remote rejected] master -> master (hook declined)

modifier /home/git/gitlab-shell/hooks/update

changer

#!/usr/bin/env ruby

en

#!/home/git/.rvm/bin/ruby

Plus Loin

Installer nginx avec ssl

Pour installer plutôt en https, je recommande la lecture des articles suivants pour nginx:

http://wiki.nginx.org/HttpSslModule
http://nginx.org/en/docs/http/configuringhttpsservers.html#singlehttphttps_server
http://library.linode.com/web-servers/nginx/configuration/ssl

Ensuite ne pas oublier de mettre à jour gitlab.yml avec les paramètres suivants:

web:  
 host: subdomain.foo.com  
 port: 443  
 https: true

Paramétrer l’envoi de mail

Modifier le fichier conf/environments/production.rb et ajouter ou modifier les lignes suivantes:

 config.action_mailer.delivery_method = :smtp
 config.action_mailer.smtp_settings = { 
   :address => 'mail.monmail.zzz', 
   :port => , :domain => 'mondomaine.com', 
   :authentication => :plain, 
   :user_name => 'monadresse@mondomaine.com', 
   :password => 'xxxxxxxxxxxxxxx', 
   :enable_starttls_auto => true
 }

pour Gandi.net
http://wiki.gandi.net/en/ssl/intermediate?rev=1236084787
http://wiki.gandi.net/fr/mail/standard-settings

Connecter à Redmine

Il est possible de connecter Gitlab à Redmine, et le menu issues va pointer sur votre Redmine et les commentaire de commit sur les éléments Redmine. La mise en œuvre est simple:

Editer le fichier gitlab.yml et modifier les lignes suivantes (Attention au format YAML!!!)

  issues_tracker:
     redmine:
     #   ## If not nil, link 'Issues' on project page will be replaced with this
     #   ## Use placeholders:
     #   ##  :project_id
        - GitLab project identifier
     #   ##  :issues_tracker_id - Project Name or Id in external issue tracker       project_url: "http://monredmine.com/projects/:issues_tracker_id/issues"     #     #   ## If not nil, links from /#\d/ entities from commit messages will replaced with this     #   ## Use placeholders:     #   ##  :project_id        - GitLab project identifier     #   ##  :issues_tracker_id - Project Name or Id in external issue tracker     #   ##  :id                - Issue id (from commit messages)       issues_url: "http://monredmine.com/issues/:id"     #     #   ## If not nil, linkis to creating new issues will be replaced with this     #   ## Use placeholders:     #   ##  :project_id        - GitLab project identifier     #   ##  :issues_tracker_id - Project Name or Id in external issue tracker       new_issue_url: "http://monredmine.com/projects/:issues_tracker_id/issues/new"

Arrêter et relancer gitlab

sudo service gitlab stop sudo service gitlab start  

Depuis votre navigateur web, dans gitlab, éditer les settings du projet, changer “Issues trackers” par redmine et mettre le nom du projet Redmine