Gitlab est un puissant outil permettant de monter une infrastructure de type github sur son infrastructure. Gitlab peut se connecter à un annuaire LDAP d’entreprise afin que les utilisateurs soient automatiquement reconnus. En terme de fonctionnalités, Gitlab permet de créer des repositories git, forker, créer des branches, faire des commits sur HTTP(S), partager des projets entre plusieurs utilisateurs… Nous allons ici voir comment installer Gitlab sur un serveur FreeBSD.
Afin d’utiliser Gitlab il vous faudra installer les packages suivants:
pkg install git icu libxml2 libxslt postfix python27 logrotate py27-docutils rubygem-bundler rubygem-passenger sudo gmake rubygem-rake
Afin d’utiliser Gitlab il vous faudra deux bases de données, une base Redis et une base MySQL/PostgreSQL. Nous utiliserons ici une base PostgreSQL 9.2 existante. Vous pouvez installer PostgreSQL et Redis sur le serveur, néanmoins nous utiliserons un serveur externe.
On installe le paquet Redis, on active le service et on le lance:
pkg install redis
echo "redis_enable=\"yes\"" > /etc/rc.confservice redis start
Le service de base de données PostgreSQL est considéré comme prêt, on va ajouter une base de données et un utilisateur:
su - pgsql
createdb gitlab
psql gitlab
CREATE USER gitlab WITH PASSWORD 'dbpwd';
GRANT ALL PRIVILEGES ON DATABASE gitlab TO gitlab;
\q
Nous aurons besoin d’un utilisateur et d’un groupe dédié:
pw addgroup git
pw adduser git -g git -m -d /usr/local/www/gitlab -c "GitLab"
ln -s /usr/local/bin/git /usr/bin/git
On va installer le shell gitlab, permettant d’interface gitlab avec git. On se connecte en utilisateur git et on clone les sources:
su - git
git clone https://github.com/gitlabhq/gitlab-shell.git
git checkout v1.9.4
Toujours en utilisateur git, on copie la configuration d’example
cp config.yml.example config.yml
Il faut modifier ici trois éléments:
Enfin lancez la commande /usr/local/www/gitlab/gitlab-shell/bin/install.
En utilisateur git on clone le repository gitlab et on se place sur la version en cours
su - git
git clone https://github.com/gitlabhq/gitlabhq.git gitlab
git checkout 6-8-stable
En utilisateur git, copiez la configuration de gitlab et éditez la
cp config/gitlab.yml.example config/gitlab.yml
Tout d’abord modifiez le nom du serveur web, l’hôte et le port:
host: gitlab.unix-experience.fr
port: 443
https: true
Ensuite l’adresse mail de notification et de support:
email_from: gitlab@unix-experience.fr
support_email: support@unix-experience.fr
Modifiez le chemin de git:
bin_path: /usr/local/bin/git
Modifiez tous les chemins contenant /home/git par /usr/local/www/gitlab/ Copiez ensuite la configuration d’unicorn et modifiez également les chemins. *
cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
Ajoutez également la ligne listen suivante:
listen "/usr/local/www/gitlab/gitlab/tmp/sockets/gitlab.socket"
Enfin copiez et modifiez la configuration de base de données:
cp config/database.yml.postgresql config/database.yml
vi config/database.yml
On va ensuite procéder à l’installation d’une gem et de notre base de données.
gem install charlock_holmes --version '0.6.9.4'
bundle install --deployment --without development test mysql aws
Enfin, en utilisateur git, toujours dans le répertoire d’installation de gitlab, on termine l’installation en préparant les assets.
bundle exec rake assets:precompile RAILS_ENV=production
Gitlab utilise un service qui s’exécute sur la machine. On va copier le script init dans le rc.d de FreeBSD et le lancer
cp lib/support/init.d/gitlab /usr/local/etc/rc.d/gitlab
chmod +x /usr/local/etc/rc.d/gitlab
service gitlab start
Après avoir installé rubygem-passenger (dans la liste de prérequis), vous devrez compiler le module pour Apache. Lancez simplement la commande suivante:
/usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41/bin/passenger-install-apache2-module
Sélectionnez ruby et validez, puis attendez que la compilation se termine. Ajoutez ensuite les lignes suivantes dans votre configuration Apache:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41
PassengerDefaultRuby /usr/local/bin/ruby19
</IfModule
Si votre Gitlab rencontre un erreur (en 6.8 c’est le cas), lorsque vous vous connectez en interface web, vérifiez les logs de l’application dans /usr/local/www/gitlab/gitlab/log/production.log. Si vous rencontrez l’erreur suivante:
couldn't find file 'underscore'
Editez le fichier /usr/local/www/gitlab/gitlab/app/assets/javascripts/application.js.coffee et supprimez la ligne concernant underscore
Vous avez désormais en votre possession un Gitlab opérationnel, permettant d’ajouter une valeur ajoutée à votre entité, en offrant un service de qualité de type github, tout en gardant la main-mise sur les données.
Afin de rédiger cet article je me suis basé sur le tutoriel suivant et l’ai modifié afin de moderniser l’installation de gitlab. https://github.com/chadliu23/Installation-guide-for-GitLab6-on-Freebsd