Environnement de développement

Bonjour à tous,

J’aimerais avoir des pistes concernant la mise en place d’un environnement de développement pour un projet basé sur le framework yii.

Les choix techniques sont déjà posés : Netbeans pour l’IDE et Subversion pour le contrôle du code source. Les postes de développement seront sous Windows 7 (avec wamp probablement de façon à ce que chaque développeur puisse développer localement). Le serveur de développement/test sur lequel l’application sera déployée tournera sous Linux.

Est-ce que quelqu’un a déjà mis en place ce type d’environnement ? Ce qui m’intéresse est l’architecture des fichiers dans le dépôt SVN (trunk/branch/tags?), le déploiement des modifications sur le serveur de développement/test, les procédures de déploiement en production, etc.

J’espère être assez précis dans ma demande, sinon merci de m’en avertir et je détaillerai.

Merci d’avance pour toutes les informations utiles que vous pourriez m’apporter.

Khad

Bonjour Khad,

Premièrement WAMP suxx et je te le déconseille fortement pour une solution professionnelle. Mieux vaut avoir soit une machine virtuelle sous centos/debian et d’avoir un environnement LAMP pour le développement. La synchronisation pouvant etre fait via rsync.

Dans notre entreprise (25 developpeurs) nous utilisons l’architecture SVN suivante:

  • Trunk est en général ce qui se trouve sur les systèmes live donc le plus proche de la production (le code mis sur trunk doit pouvoir etre mis en ligne à n’importe quel moment, de cette manière les différentes équipes de dev ne se battent pas et peuvent déployer leur code à tout moment)

  • les branches sont généralement utilisées lors d’un projet (ou si utilisation de Scrum, lors d’un sprint), si projet conséquent, les branches doivent être rafraichit depuis trunk le plus souvent possible pour éviter les conflits monstrueux et une perte de temps. Le seul souci avec SVN c’est que créer une branche depuis une autre branche relève presque de l’impossible, dans ce cas peut être opter pour une solution comme GIT qui apporte une solution encore plus cheap au niveau des branches.

  • Les tags sont générallement utilisés lors de release importantes. On crée un tag après qu’un projet ait été déployé et on freeze trunk en créant un tag, en d’autres termes un tag représente trunk à un espace temps donné ce qui permet d’avoir une image représentant trunk.

En espérant que cela t’aide et n’hésite pas si tu as des questions.

Bonjour ouhman,

Merci pour la rapidité de ta réponse.

En ce qui concerne les postes de développement, ils ne peuvent malheureusement pas être réinstallés en Linux (question d’infrastructure). Serait-il néanmoins possible d’envisager la chose comme cela :

  • Développement avec Netbeans sous Windows 7 après un "checkout" du repository SVN.

  • A chaque fois qu’un développeur sauvegarde un fichier (ou plutôt quand il veut tester ses modifications), il effectue un “commit”

  • Après ce "commit", les fichiers sont déployés depuis le repository vers le serveur de développement (via des "hooks"?)

?

Cordialement,

Khad

Hum,

Chez nous chaque développeur à une “devbox” qui est en fait une machine virtuelle tournant sur Linux (pas forcément sur la meme machine du développeur, mais sur le réseau local ou bien au sein du data center). Après chaque développeur est libre d’utiliser son environnement (Ubuntu, Windows, MacOs etc). J’utilise personnellement rsync pour synchroniser mes fichiers sur ma devbox. A chaque nouveau build (changement de fichiers), un rsync entre mes fichiers local et ma devbox est effectué. J’utilise Zend Studio mais j’imagine qu’il doit y avoir quelque chose de similaire qui existe sur NetBeans.

Aussi j’ai l’impression que tu mix un peu le terme de commit. C’est différent d’une synchronisation, en effet lorsque l’on commit sur une branche cela signifie intégrer les changements sur la branche ce qu’il n’est pas forcément le cas lorsque l’on développe, on commit seulement lorsque l’on est satisfait du code que l’on a produit sinon on peut mettre le travail de l’équipe en cause (si ces changements rendent impossible l’accès à une partie d’une fonctionnalité).

En tout cas WAMP doit etre banni, tu ne peux pas, dans un environnement professionnel avoir un staging sur WAMP et un env de production sur LAMP ca doenst make sense :)

En espérant t’aider

A+

Oh non, ne pas commencer une réponse comme ça please :)

J’essayais de trouver un moyen de répercuter les changements locaux sur un système distant : j’envisageais pour cela le commit alors que la solution est la synchronisation. Merci beaucoup, j’y vois plus clair maintenant.

Netbeans gère ça nativement via SFTP. Si ça peut aider quelqu’un, plus d’informations ici :

www.thewebshop.ca/blog/2009/07/working-with-remote-files-in-netbeans/

J’ai lu qu’en général on n’incluait pas le framework yii dans le dépôt svn, est-ce que tu préconises aussi de ne pas le faire ?

:)

Le framework DOIT etre inclu dans svn, sur un projet nommé par exemple “shared”. Ce projet incluera le code réutilisable par d’autres projets (classes, libraries etc). En effet tu dois pouvoir gérer aussi les versions du framework, lors par exemple d’un changement de version du framework etc.

Donc oui, le framework doit etre inclu mais doit se trouver sur un projet à part ou seul le code réutilisable (très important) doit etre intégré.

Bon code :)

oh et pour SFTP, je pense que rsync devrait etre plus rapide pour la synchronisation

Bonjour,

Désolé de répondre seulement maintenant mais je suis limité à 3 messages par jour étant nouveau…

Un grand merci pour les pistes, mon environnement est configuré et tout fonctionne à merveille maintenant.

Rsync est certainement plus rapide que sftp mais netbeans inclus un client sftp nativement et on peut le configurer pour synchroniser un fichier à chaque sauvegarde, ce qui me convient parfaitement.

Cordialement,

Khad