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.
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
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
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.
Vérifions si nos modules sont bien chargés dans apache :
a2enmod dav a2enmod dav_fs a2enmod dav_svn a2enmod rewrite
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
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
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/
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
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
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 :
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
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 :
Cette création est mise à disposition sous un contrat Creative Commons