Developper à plusieurs ? Un jeu d’enfant !

Julien Développement 23 juin 2008 4 commentaires

Je vous ai précèdement expliqué un peu notre infrastructure, ça ce passait ici.

Aujourd’hui parlons un peu d’optimisation pour le travail à plusieurs. Pour gagner en efficacité, il est important de pouvoir développer sereinement sans embêter les copains. Or, nous sommes 3 (petit rappel pour les nouveaux). Voici comment notre environnement de travail est organisé:

  • Un SVN:
    • Une branche “trunk“, nous avons tous les trois accès à cette branche. C’est ce qu’on pourrait appeler “la branche principale du projet”. Elle sert principalement aux quick fix. Si un bug est découvert, il sera fixé directement sur cette branche.
    • Chacun de nous possède sa propre branche “dev” sur le svn. C’est une “copie” de la branche “trunk” mais dans laquelle nous effectuons nos développements “long”. Par exemple je travail sur une nouvelle fonctionnalité, je vais utiliser ma branche de Dev. Ainsi Kevin ou Raf ne verrons pas mes développements dans leurs branches. Je peux avoir des fichiers de configurations différents  de mes deux collègues, sans ce que cela les affecte.
  • Une base MySQL dédiée. Celle ci est partagée par nous 3. De cette manière nous travaillons sur une base commune.
  • Préproduction: Il n’est pas rare d’avoir des sueurs froide lors d’un commit : tout marche en local, une fois en production, c’est la cata! Pour palier à cela. Nous avons 4 préproductions surs notre serveur dédié.
    • Préproduction correspondant à la branche trunk. Permet de voir le rendu du site comme s’il était en production.
    • Préproduction correspondant au 3 branches de dev citées plus haut. Permet de tester ses développement et de les montrer aux collègues :)

Et la mise en prod dans tout ça ? J’y viens justement !

  • Mise en production: J’ai confectionné un script (s’il peut en intéresser certains, qu’ils me demandent)  en bash. Son rôle est de faire un “diff” entre le ftp de la production (et oui, c’est le seul accès que j’ai sur l’hébergement !), et notre branche “trunk” locale. J’entends par la qu’il va s’occuper de trouver toutes les différences entre les 2 espaces distants. Ajout, suppression, modification, gestion des droits etc. Une fois ses différences détectées, il ne reste plus qu’a rendre la production identique à la préprod. Ce script a deux fonctionnalités:
  • Simulation de mise en production: Le script se comporte comme s’il effectuait la mise en production, tout les opérations sont loggués dans des fichiers textes, mais aucune n’est réellement effectuée. Cela permet tout simplement de voir ce qu’il va se passer lors de la mise en prod. Un rapide coup d’oeil sur ces fichiers pour savoir si tout va bien dérouler.
  • Mise en production. Étape identique à celle du dessus sauf que les opérations sont réalisés cette fois ci. Un backup de tous les fichiers modifié ou supprimé sur la prod est effectué à chaque mise en production. Pourquoi ? En cas de gros problème il m’est possible de revenir en arrière très rapidement.

Petite astuce supplémentaire. Nous pouvons passer depuis notre interface de backend le site en maintenance! Vous autres aurez droit à une belle page de maintenance. Pour nous 3, nous verrons le site comme d’habitude. Très pratique je vous assure.

Dernier point avant de clore cet article. Qui fait quoi dans tout ça? Pour éviter les problèmes, nous procédons de la manière suivante:

  • Lorsqu’un développement est terminé sur notre branche de dev. Cette branche est “mixée” (merge), avec la branche “trunk” pour ensuite la mettre en production. Cette étape est exclusivement faite par Kevin et tout le monde est prévenu.
  • Lors d’une mise en production, c’est moi qui m’en charge.

Mais Raf alors ? Bah Raf il compte les points… Plus sérieusement, il s’occupe d’autres trucs que Kevin et moi ne touchons pas ;).

Oui mais s’il arrive un problème sur maTiTine et que celui qui s’en occupe est en vacances !?

Nous avons un forum interne ou nous postons, entre autre, les informations sur comment marche quoi, toutes les informations techniques etc. Ça peut toujours servir un jour ou l’autre :)

J’espère que cet article servira à une dream team qui veut se lancer mais qui ne sait pas trop comment s’organiser pour développer !


4 commentaires pour “Developper à plusieurs ? Un jeu d’enfant !”

  1. Raf dit :

    Ben ouais, Raf il glande, et alors? Il n’a pas le droit, c’est l’été après tout, on a le droit de mettre ses tongs et de s’installer peinard dans une chaise longue, un cocktail de fruits dans une main et un fouet dans l’autre (pour motiver ces 2 feignants de Kef et Julien). Plus sérieusement, j’y comprends rien à leur trucs de softeux, si t’as pas un T-shirt avec un pingouin dessus, les cheveux longs et la barbe de 3 mois, c’est absolument inaccessible au commun des mortels! Mais faut quand même reconnaître que ça marche plutôt bien leur histoire!

  2. pilote dit :

    Heuuuuuuuuu, kéki raconte?????

    J’espère que sous le capot de ma titine c’est plus simple sinon….. c’est la balle dans le genoux assurée. Mais j’y pense, si ça se trouve c’est pareil!!!!!!

    Bon courage les gars dans vos futurs développements, moi je vous serais d’aucun secours (lol)

  3. Julien dit :

    Yop Pilote,

    Mais non rien de compliqué. L’essentiel pour vous, c’est que maTiTine roule, enfin marche correctement !

    Hihi

  4. pilote dit :

    Ouais, ça c’est la cuisine, nous on préfère le resto!!!

Laisser un commentaire