SVN + Trac + Google Calendar sur Debian

Par FlUxIuS 2008-11-23 { Catégorie : Communauté }

Travailler en groupe en toute simplicité

 

Tout le monde connaît la "galère" du travail en groupe, lorsque chaque personnes doit réaliser un module ou un composant. Il faut sans arrêts s'envoyer des mails avec (les modifications détaillés, un report de bugs, une évaluation de l'avancement...), tout ça est finit !

Nous tentons de plusieurs manières pendant certaines formations ou tout simplement dans les écoles de souffler le mot SVN. Cela marche, mais toujours est-il que les méthodes restent parfois très primaires...

Nous allons donc nous appliquer à l'installation d'un serveur SVN + Trac avec envoi de mails pour chaque "commit" et configurer Google Calendar pour être averti plus aisément.

 

SVN

Installation

Subversion est un logiciel de contrôle de versions, permettant aux utilisateurs de travailler en groupe tout en gardant les versions antérieures et l'historique de chaque projets. Subversion est très utilisé dans les projets Open Source mais est appliqué en entreprise et permet à tout les utilisateurs de travailler sur la même version sans avoir à tout le temps vérifier manuellement les fichiers.

Pour l'installer, tapez les commandes suivantes dans le terminal en mode root :

aptitude update
aptitude install trac libapache2-svn subversion subversion-tools

 

Création de notre dépôt

Nous allons ici créer notre dépôt afin que nos projets puisse être stocké. Faisons un dossier "svn" dans le répertoire "/home" par exemple, mais vous êtes totalement libre de choisir.

mkdir /home/svn
chown www-data: -R /home/svn 
svnadmin create --fs-type fsfs /home/svn/monprojet

 

www-data est l'utilisateur par défaut d'Apache et cette ligne nous sera nécessaire pour pouvoir "commiter" plus tard.

dans le répertoire /home/svn que nous avons crée, nous allons ajouter deux autres répertoires utiles à l'évolution de notre projet :

cd /home/svn
mkdir trunk branches tags

 

Subversion avec Apache 2

L'accès au répertoire via un client SVN externe n'est pas permit et c'est normal. Pour ce faire, nous allons configurer Apache pour clients puissent avoir accès.

 

Activer le support webdav et subversion d’apache

Vérifions si nos modules sont bien chargés dans apache :

a2enmod dav
a2enmod dav_fs
a2enmod dav_svn
a2enmod rewrite

 

Configuration de VirtualHost

Dans sites-enabled du répertoire /etc/apache2, nous allons créer un nouveau fichier pour la configuration de notre virtualhost :

nano monvirtualhost

Et nous allons ajouter les lignes suivantes :

<VirtualHost *>
        ServerAdmin mon@mail.domaine
        ServerName mondomaine.com
        ServerAlias mondomaine.com www.mondomaine.com
        DocumentRoot /home/monsite
 
        <Location /svn>
          DAV svn
          SVNPath /home/svn/monprojet
          AuthType Basic
          AuthName "Projet monprojet"
          AuthUserFile /home/svn/comptes.htpasswd
          Require valid-user
        </Location>
</VirtualHost>

 

Et on relance apache pour appliquer les modifications :

/etc/init.d/apache2 restart

 

Protéger l'accès

Comme vous pouvez le constater au dessus, il est nécessaire de s'authentifier pour avoir accès au dépôt. Dans notre VirtualHost, nous avons indiquer le chemin de nos mots de pass  /home/svn/comptes.htpasswd et nous allons maintenant ajouter nos utilisateurs dans ce htpasswd :

htpasswd /home/svn/comptes.htpasswd utilisateur1

On vous demandera un mot de pass => à vous d'être prudent :)

 

Puis on relance apache:

/etc/init.d/apache2 reload

 

Initialisation de Trac

Nous voulons que trac soit installé dans "/home/trac" :

mkdir /home/trac/

 

Maintenant, on initialise notre environnement (Tapez sur la touche entrée tout le temps, nous allons y revenir pour la configuration) :

trac-admin /home/trac/monprojet initenv

 

Notre environnement monprojet à été initialisé par défaut et nous devons maintenant préciser le chemin de notre dépôt SVN et configurer quelques petites choses utiles.  Rendez-vous dans le fichier "/home/trac/monprojet/conf/trac.ini" :

[project]
descr = My example project
footer = Visit the Trac open source project at<br /><a href="http://trac.edgewall.org/">http://trac.ed$
icon = common/trac.ico
name = Mon projet
url = http://www.slashon.com/monprojet
 
...
 
[trac]
...
# modifiez le chemin du dépôt
repository_dir = /home/svn/monprojet

 

Nous donnons les droits en lecture et écriture à apache pour que cela fonctionne :

chown www-data: -R /home/trac/

 

Trac et Apache (En CGI)

Rajoutons ces lignes à notre virtualhost de tout à l'heure pour avoir accès à notre répertoire web trac :

## TRAC #
Alias /trac "/usr/share/trac/htdocs"
ScriptAlias /monprojet /usr/share/trac/cgi-bin/trac.cgi
<Location "/monprojet">
    SetEnv TRAC_ENV "/home/trac/monprojet"
</Location>
 
<Directory "/usr/share/trac/htdocs">
    Options Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
 
# You need something like this to authenticate users #
<Location "/monprojet/login">
    AuthType Basic
    AuthName "project"
    AuthUserFile /home/svn/comptes.htpasswd
    Require valid-user
</Location>

La location "/monprojet/login" permettera aux utilisateurs, de s'enregistrer en utilisant le fichier htpasswd précedement crée.

On finit par un petit restart d'apache :

/etc/init.d/apache2 restart

 

Intégrer Trac (Avec Python)

Trac peut être intégré avec Python, voilà ce qui change dans le virtualhost :

<Location /monprojet>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv /home/trac/monprojet
    PythonOption TracUriRoot /
    PythonPath "sys.path + ['/home/trac/monprojet']"
</Location>
 
<Location /monprojet/login>
    AuthType Basic
    AuthName "Mon Projet"
    AuthUserFile /home/svn/comptes.htpasswd
    Require valid-user
</Location>

 

On prend en compte les changements  :

/etc/init.d/apache2 restart

 

Droits dans Trac

Notre environnement est installé, mais nous ne voulons surtout pas que des personnes anonyme aient accès à tout. Pour ce faire, nous allons configurer les accès.

Vous pouvez visualiser les persmissions des utilisateurs :

trac-admin /home/trac/monprojet permission list

 

Nous allons enlever les droits de mofication et création, ainsi que la visualisation des sources de notre projet aux utilisateur anonymes :

trac-admin /home/trac/monprojet permission remove anonymous WIKI_CREATE WIKI_MODIFY TICKET_CREATE TICKET_MODIFY BROWSER_VIEW

 

Et nous allons créer un utilisateur dans le groupe "masters" ayant certains droits (visualisation des sources, administration de tickets + wiki + Milestones).

D'abord on crée notre utilisateur avec le groupe :

trac-admin /home permission add monutilisateur masters

 

Puis nous appliquons les droits au groupe "masters" :

trac-admin /chemin/de/mon/instance/trac permission add masters WIKI_ADMIN TICKET_ADMIN BOWSER_VIEW MILESTONE_ADMIN REPORT_ADMIN

 

Pour aller plus loin :

 

Recevoir des mails à chaques Commit

Comme l'application "assembla" devenue payante il y'a quelque temps (raison pour laquelle je fais ce tuto), nous allons configurer SVN pour recevoir des mails à chaques commit pour être avertit dans l'urgence.

Rendons-nous dans le répertoire "hooks" de notre dépôt :

cd /home/svn/monprojet/hooks

Ici un fichier "post-commit" va se charger de l'envoi des mails. Nous allons avant tout l'activer :

mv post-commit.tmpl post-commit

 

Puis configurer les lignes qui nous intéresse :

REPOS="$1"
REV="$2"
 
/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" --from "commit@slashon.com" \ -s "[Mon Projet] $AUTHOR |" destination@mail.fr

Ce fichier fera appel à "commit-email.pl" pour envoyer l'email à une destination précise.

Astuce : Vous pouvez utiliser Google group par exemple pour envoyer sur un alias

 

Utilisation avec Google Calendar

Notre but ici sera de visualiser les tâches à accomplire pour une date précise dans Google Calendar. Allons sur notre compte Google Calendar (Crée le si ce n'est pas déjà fait).

Allez dans paramètres ->  Agenda

 

Puis Cliquer sur : "Ajouter un agenda". Dans cette partie vous préciserez l'adresse de votre fichier "icalc" généré via Trac : "http://www.slashon.com/monprojet/roadmap?format=ics"

 

Puis vous l'ajouterez !  On peut maintenant rajouter des tâches dans Trac et les visualiser sur notre calendrier Google.

 

 

Sources :

Powered by SlashOn blog - © Sebastien D. (FlUxIuS)

Debian powered Server Creative Commons License W3c Validation
Cette création est mise à disposition sous un contrat Creative Commons