====== 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