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