SVN: Gestion des dépendances externes

août 05 2010 Published by Thibaut under Gestion de Projets, Svn, Web

Le versionning de vos projets de développement est une chose essentielle pour garantir la sécurité et la tenu à jour de vos sources entre développeurs.

Si l’intégralité des sources de votre projet peut être place sur un seul et unique dépôt, il arrive souvent que votre application soit dépendante d’un framework ou de quelques librairies importé d’un autre projet et souvent d’un autre dépôt SVN.

Il est donc relativement lourd est contraignant de devoir stocker et versionner les fichiers de ces sources externes qui ne seront de toute façon pas à jour par rapport au dépôt sur lequel vous l’aurez récupéré.
Prenons l’exemple d’un projet PHP utilisant Zend Framework.
Nous avons déjà mis en place la structure MVC du projet et nous l’avons importé vers notre dépôt SVN.

Nous souhaitons ajouter le Framework à jour dans le dossier /library à partir du dépôt officiel: http://framework.zend.com/svn/framework/standard/branches/release-1.9/library/

Commencez donc par vous placer dans le dossier /library en ligne de commande.

Pour déclarer notre dépôt externe nous allons utiliser la propriété « externals »  à l’aide de la fonction « propset » de SVN.

svn propset svn:externals « http://framework.zend.com/svn/framework/standard/branches/release-1.9/library/Zend Zend » .

Le point passé en dernier argument précise que nous déclarons cette propriété dans le dossier courant, ne l’oubliez surtout pas!

SVN nous répond alors: property ‘svn:externals’ set on ‘.’
Il ne nous reste plus qu’a faire un « svn up » pour mettre à jour la copie locale et récupérer ainsi une copie à jour du Framework sans que celui si soit stocké sur votre dépôt.

Votre projet sera maintenant à jour à chaque mise à jour et vous voilà affranchis de toute maintenance sur vos sources externes.

No responses yet

Mettre à jour son instance Redmine

juil 19 2010 Published by Thibaut under Gestion de Projets, Redmine

Aujourd’hui est un grand jour pour le projet Redmine, la sortie de la première release candidate: Redmine version 1.0

Depuis 6 semaines la priorité est aux corrections de bugs et les évolutions sont mises de coté.

Voici donc l’occasion de parler mise à jour!

Partons donc du principe que nous avons une instance de Redmine fonctionnelle.

La manière dont celle si a été installé importe peu puisque nous allons ici repartir sur une version propre fraichement récupérée sur le SVN officiel.

Commencez donc par vous placer dans le dossier où vous souhaitez faire votre installation et faite un checkout sur le dépôt officiel: http://redmine.rubyforge.org/svn/branches/1.0-stable/

Placez vous ensuite dans le dossier contenant votre nouvelle instance de redmine . Copiez les fichiers de configuration depuis votre ancienne instance (database.yml pour la configuration des bases de données, et email.yml pour les mails sortants) dans le dossier config/. Copiez également le dossier /files de votre instance d’origine afin de conserver les fichiers joints à vos projets. Copiez vos plugins dans le dossier vendor/plugins/. Et enfin copiez votre thème dans le dossier public/themes/.

Passons maintenance à l’execution des script rake qui vont nous permettre de mettre à jour la base de données et la configuration de Redmine.

Placez vous à nouveau à la racine de votre instance et commencez par recréer l’espace de session:

rake generate_session_store

Effectuez ensuite la configuration des plugins que vous avez copié tout à l’heure (note: production est le nom de notre instance de production):

rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production

Et enfin, migrez la base de données vers cette nouvelle version de Redmine (encore une fois production est le nom de notre instance):

rake db:migrate_plugins RAILS_ENV=production

Voici donc votre instance à jour et, si vous avez suivi cet article à la lettre, en version stable.

Quelques petites choses à vérifiez tout de même:

  • Si vous ressentez des lenteurs à l’exécution ou que vous remarquez des problèmes d’affichage de l’interface: nettoyez le cache

    rake tmp:cache:clear

  • Si vos utilisateurs ne peuvent plus se logguer, ou accéder à certaines parties de Redmine: forcez la suppression des sessions en cours

    rake tmp:sessions:clear

  • Pensez également à faire un tour dans la partie « rôles et permissions » de Redmine pour vérifier les autorisations sur de nouvelles fonctionnalités qui pourraient ne pas être prise en compte dans les rôles que vous aviez créé
  • Et enfin, chose importante, pensez à vérifier les droit posix sur les fichiers de votre instance, sans quoi vous ne pourrez utiliser certaines fonctionnalités (l’upload de fichier par exemple)

No responses yet

Redmine: Quelques plugins

fév 08 2010 Published by Thibaut under Gestion de Projets, Redmine

Comme dit lors de l’un de mes derniers articles, Redmine est un outil de gestion de projet puissant, libre et de par son écriture en Ruby, massivement extensible par divers plugins!

Voici donc ici les quelques plugins que j’ai pu repérer et tester, liste biensur non exhaustive!

Tout d’abord commençons par fédérer un peu la communauté qui contribue à votre projet par des fonctions un peu plus sociales afin que ces derniers soient le plus au courant possible de l’état du projet.

Commençons donc par un petit plugin de blog qui permettra à vos utilisateurs de poster des annonces, des informations ou encore des réflexions de manière centrale et interne. Ce plugin reste cependant limité quand a une éventuelle utilisation pour une façade d’annonce  publique.

Blog

(http://www.redmine.org/boards/3/topics/5782)

Viens ensuite une copie du réseau social le plus en vogue en ce moment, j’ai nommé Twitter! Grâce au plugin « status update » vous pourrez mettre en place un moyen rapide de communiquer entre vos collaborateurs afin qu’il puissent dire simplement ce qu’ils sont en train de faire. Ce plugin aurait cependant peut-être besoin d’une fonction de « reply » et/ou « repost » pour pouvoir réellement s’apparenter à Twitter.

Status update

(http://www.redmine.org/boards/1/topics/1483)

Passons maintenant à un plugin plus élémentaire voir quasiment indispensable: la gestion des fameuses « todo list ». Grâce à ce plugin vous pourrez centraliser la gestion de ces dernières directement dans un nouvel onglet du projet et ainsi éviter à vos contributeurs de passer par un quelconque service web complémentaire ou encore par l’éternel post-it. Cette fois rien à redire, les idées sont centralisées sur notre plateforme interne ce qui est en plus un gage de sécurité!  (http://www.redmine.org/boards/3/topics/4070)

Et si beaucoup de personnes interviennent sur votre projet? Comment gérer les interrogations des nouveaux venu? Par défaut, beaucoup serait tenté de tout centraliser sur une doc disponible sur le wiki du projet. C’est une bonne pratique mais mal géré, cela peut vite tourner au bazar le plus complet. L’idée du plugin « question » est de pouvoir gérer vos demandes et votre support en interne (par exemple les demandes formulées par de nouveaux développeurs ou par un utilisateur final). De plus, ce plugin permet d’effectuer des recherches multi-critères sur les questions qui ont déjà été pausés, pourquoi pas réorienter la documentation en fonction des questions les plus récurantes?

Question

(http://www.redmine.org/wiki/redmine/PluginQuestion)

Besoin de mieux évaluer les coûts de votre projet? Attention, le plugin « budget » dépend d’un projet bien rodé afin d’être réellement efficace. Vous pourrez ainsi prévoir le coût du projet en fonction du temps passé. Cela implique également l’utilisation de la « badgeuse » intégrée au Redmine par vos développeurs et autres contributeurs afin qu’il puisse faire état du temps passé sur les différentes taches du projet.

Budget

(http://www.redmine.org/wiki/redmine/PluginBudget)

Enfin, je terminerai avec un plugin relativement évolué. Avis aux amateurs de gestions de projets Agile, ce plugin vous permettra d’intégrer les méthodes de gestion Scrum à votre projet sous la forme d’un dashboard complet:

Scrum Dashboard

(http://www.redmine.org/boards/3/topics/5808)

Je ne détaillerai pas ici l’installation de ces plugins et vous invite pour cela à vous rendre sur la page officiel du wiki de Redmine: http://www.redmine.org/wiki/redmine/Plugins

No responses yet

Redmine sous Apache avec Passenger

jan 24 2010 Published by Thibaut under Gestion de Projets, Linux, Redmine

Cet article est le premier d’une série d’article sur l’outil de gestion de projet Redmine.

Ce puissant outil disponible sous la forme d’une interface web permet de gérer les projets de développements en intégrant des roadmap, la gestion des bugs, des demandes dévolutions, un tracker de versionning, un wiki, le tout avec une gestion des droits complète.

Dans cet article nous verrons comment installer Redmine sur un serveur Linux (Debian dans notre cas) en utilisant Apache comme serveur d’application grâce au module « Passenger » qui permet à Apache d’interpréter Ruby on Rails.

Comme d’habitude cet article décrit une suite de manipulations liée à des versions précises. A vous d’adapter vos numéro de versions en fonction des évolutions à venir.

Pour Commencer nous allons installer Apache 2 MySQL 5.0 et d’autres paquets qui nous seront nécessaires.

#aptitude install apache2 mysql-server apache2-prefork-dev libaprutil1-dev libaprutil1-dev libmysqlclient15-dev gcc make subversion

Pensez également à activer le mod_rewrite d’Apache dès maintenant

#a2enmod rewrite

Nous pouvons maintenant installé les près requis lié plus précisément à notre application à savoir Ruby, l’interpréteur, gems le gestionnaire de paquets et d’autres librairies nécessaire pour l’installation de Redmine. commençons donc par Ruby et les librairies disponibles par aptitude.

#aptitude install ruby rdoc irb libyaml-ruby ruby1.8-dev libzlib-ruby ri libopenssl-ruby1.8

Passons ensuite à l’installation de gems

#wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

#tar xvf rubygems-1.3.5.tgz

#cd rubygems-1.3.5

#ruby setup.rb

#ln -s /usr/bin/gem1.8 /usr/bin/gem

Pensez également à mettre à jour les paquets et les dépots de Gems

#gem update && gem update –system

Installons aussi le support de MySQL pour Ruby

#gem install mysql

Et nous pouvons maintenant passer aux choses sérieuses et installer Rails en version 2.3.5 comme le recommande Redmine.

#gem install rails -v=2.3.5

Nous aurons également besoin du support imagemagick pour la génération des diagrammes de Gantt:

#aptitude install imagemagick libmagick9-dev librmagick-ruby1.8

#gem install rmagick

Passons maintenant à l’installation de passenger et à la compilation du module passenger pour apache2

#gem install passenger

#/usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/bin/passenger-install-apache2-module

Ajoutons le à la configuration d’Apache: Créez un fichier /etc/apache2/mods-available/passenger.load et insérez-y la ligne:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so

Créez également un fichier /etc/apache2/mods-available/passenger.conf et placez-y les deux lignes suivantes:

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9

PassengerRuby /usr/bin/ruby1.8

Enfin Activez le module:

#a2enmod passenger

Maintenant que tous nos pré-requis sont en place, nous pouvons passez à Redmine

Commencez par créer un utilisateur et une base de donnée MySQL:

#mysql -u root -p

mysql> create database redmine character set utf8;

mysql> create user ‘redmine’@'localhost’ identified by ‘my_password’;

mysql> grant all privileges on redmine.* to ‘redmine’@'localhost’;

mysql> exit

Plaçons nous ensuite dans le dossier où nous voulons installer Redmine (/var dans mon cas) et récupérons la dernière version de Redmine depuis le dépôt officiel:

#cd /var

#svn co http://redmine.rubyforge.org/svn/branches/0.9-stable/ redmine

#cd redmine

Il est temps maintenant de mettre en place la configuration de la base de donnée créez un fichier config/database.yml et entrez-y la configuration comme ceci en adaptant à ce que vous avez entrez lors de la création de l’utilisateur et de la base dans mysql:

production:

adapter: mysql

database: redmine

host: localhost

username: redmine

password: my_password

encoding: utf8

Profitons en également pour configurer le serveur d’envois de mails en créant le fichier config/email.yml (ici ma configuration tape directement en local par la commande  « sendmail » sans passer par un socket):

production:
delivery_method: :sendmail
smtp_settings:
address: localhost
port: 25
domain: lelevier.fr
Nous pouvons enfin passer à l’installation de Redmine en générant l’espace de stockage des sessions, en créant la base de donnée, et enfin en installant la configuration par défaut (utilisateurs, rôles, trackers… recommandé par Redmine):

#rake generate_session_store

#RAILS_ENV=production rake db:migrate

#RAILS_ENV=production rake redmine:load_default_data

Il ne vous reste plus qu’a configurer votre VirtualHost Apache comme n’importe quel virtual host en faisant pointer votre DocumentRoot vers le dossier « public » de Redmine.

<VirtualHost *:80>

ServerAdmin thibaut@my-test.com

ServerName dev.my-test.com

DocumentRoot /var/www/redmine/public/

</VirtualHost>

6 responses so far