Table des matières

Redmine

Fonctionnement général

Redmine met à jour les ACL et dépots GIT via un accès au dépôt gitolite. La clef publique SSH redmine doit être une clef d'admin sur le dépôt gitolite. Attention à ce que la connexion ssh fonctionne (known host etc), y compris vers localhost, 127.0.0.1 ou ::1 (c'est plus sûr, voir /var/log/secure en cas de soucis).

Quand redmine est utilisé pour ajouter, vérouiller ou dévérouiller une clef publique SSH, il utilise le dépôt redmine pour faire la configuration adéquate. Un hook d'update s'occupe de mettre à jour le authorized_keys de l'utilisateur git. Ceci permet l'accès au dépôts git pour les utilisateurs.

Un autre hook prévient redmine d'un changement sur le dépôt git.

Installation redmine

Installer le paquet rubygems

yum install rubygems

Puis installer bundle via gem

gem install bundle

Installer le paquet ruby-devel

yum install ruby-devel libxml2-devel gcc gcc-c++ make automake autoconf

Récupérer les sources de redmine depuis rubyforge. Les décompresser dans /opt/redmine.

Créer un compte pour redmine:

useradd -d /opt/redmine redmine -s /sbin/nologin

Pour simplifier faire un lien symbolique pour éviter le numero de version

ln -sf /opt/redmine/redmine-2.3.2 /opt/redmine/redmine

Lancer l'installation automatique des gems requis par redmine

cd /opt/redmine/redmine
bundle install

Une fois cette phase terminée, il faut installer le serveur thin.

Installation thin

Dans le fichier /opt/redmine/redmine/Gemfile, ajouter dans le bloc listant les gems, la ligne:

gem "thin"

Puis relancer:

bundle install

Thin sera ainsi installé.

Plugins redmine-gitolite

Se placer dans le repertoire des plugins, et cloner le dépot suivant:

cd /opt/redmine/redmine/plugins
git clone https://github.com/pibako/redmine-gitolite.git
cd redmine-gitolite
git checkout -t origin/redmine2
cd ..
mv gitolite-redmine gitolite_redmine
cd ..
RAILS_ENV=production rake redmine:plugins:migrate

Il faut renommer le repertoire du plugins car sinon:

$ RAILS_ENV=production rake db:migrate_plugins
** Invoke db:migrate_plugins (first_time)
** Invoke redmine:plugins:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
uninitialized constant GitoliteObserver

Le plugins redmine-gitolite devrait être visible dans la page d'administration des plugins dans redmine. Il faut lui configurer surtout le repertoire contenant les dépôts git.

Installation gitolite

Création d'un utilisateur git dont le home est /srv/git.

Modification des règles par défaut pour les contextes selinux sur ce chemin. Il faut modifier le fichier /etc/selinux/targeted/contexts/files/file_contexts.homedirs pour ajouter:

/srv/git              system_u:object_r:user_home_t:s0
/srv/git/.+       system_u:object_r:user_home_t:s0
/srv/git/\.ssh(/.*)?      system_u:object_r:ssh_home_t:s0

Ensuite lancer la commande:

[root@srvgit] # restorecon -Rv /srv/git

Pour que les nouveaux contextes soient positionnés. Sinon SELinux bloquera l'accès aux clefs SSH autorisées.

Récupération de gitolite

En tout qu'utilisateur git:

[git@srvgit] $ git clone https://github.com/sitaramc/gitolite.git

S'assurer que $HOMEDIR/bin est bien dans le $PATH.

[git@srvgit] $ gitolite/install -ln

Autoriser l'utilisateur redmine à gérer gitolite

Il faut disposer de la clef ssh publique de l'utilisateur redmine.

[git@srvgit] $ gitolite setup -pk /chemin/vers/redmine.pub

Gestion des clefs ssh par gitolite

Il faut ajouter un hook dans gitolite pour gérer les clefs ssh dans le .ssh/authorized_keys

[git@srvgit] $ cd /tmp
[git@srvgit] $ git clone git://github.com/pibako/redmine-gitolite.git
[git@srvgit] $ cd redmine-gitolite
[git@srvgit] $ git checkout -t origin/redmine2
[git@srvgit] $ cp contrib/hooks/post-receive-redmine_gitolite ~/.gitolite/hooks/common/post-receive
[git@srvgit] $ chmod +x ~/.gitolite/hooks/common/post-receive

Il faut éditer ce fichier post-receive pour ajouter l'url du redmine, et la clef pour l'accès à son API.

Il faut ensuite editer le gitolite.rc pour exécuter ce hook, en ajoutant “hooks\.redmine_gitolite\..*” dans la variable GIT_CONFIG_KEYS.

Puis lancer:

[git@srvgit] $ gitolite setup

Tester l'accès gitolite

Depuis le compte redmine, l'accès au shell gitolite devrait fonctionner (sans mot de passe ssh bien sûr):

[redmine@srvgit] $ ssh -T git@localhost

Exemple:

hello redmine, this is git@supervision running gitolite3 v3.5.2-3-g2515992 on git 1.7.1

 R W    gitolite-admin
 R W    testing