Je suis sûr que c'est un problème commun que d'autres ont résolu auparavant, alors je fais appel à la sagesse collective d'autres développeurs/chefs de projet pour de l'aide.Comment structurer un VCS avec plusieurs projets dépendants
J'ai un certain nombre de projets:
- application
- WebApp
- ServerApp
- Dev Utils
- ORM
Toutes les applications/utils dépendent sur l'ORM: lorsque l'ORM change, il doit être compilé et toutes les applications besoin d'être recompilé contre elle puis déployé. En ce moment, ma structure de VCS est une sorte de pêle-mêle:
- AppName
- Tronc
- application
- WebApp
- ServerApp
- Dev Utils (environ 4 dossiers en ce moment, mais en croissance)
- ORM
- Relase
- ProjetName (que ce soit l'application ou application Web) version.number
- Branches
- ExperimentName_DevName
- Tronc
Idéalement, j'aimerais avoir un dossier racine par application (Application/WebApp/ORM etc.), chacun avec ses propres Trunk/Branches/Releases etc. pour les séparer logiquement et physiquement. Mon raisonnement est que parce que beaucoup de travail est fait sur l'Application, et qu'il est libéré beaucoup plus souvent, chaque branche de publication a des copies identiques des mêmes utils etc. Vérifier également le Tronc pour travailler dessus signifie toujours que tous les autres les projets viennent pour le tour. Séparer reviendrait à arracher certains projets à des solutions et à modifier simultanément tout projet en faisant un saut de douleur entre 2 et 3 IDE (surtout en cas de modification de l'ORM).
Je pense à cela parce que très bientôt je vais mettre en place une machine CI (être prêt pour des questions à ce sujet dans une semaine ou deux) et j'essaie de trouver un moyen de faire les versions automatiquement créé/déployé. Normalement, seule l'application est déployée, via une copie de script sur le serveur où toutes les stations de travail tirent au démarrage, mais comme je l'ai déjà dit, si l'ORM change/libère, toutes les autres applications devraient être reconstruites et déployées.
(Aujourd'hui, je me suis cassé notre site Web et 3 services parce que je changé le ORM et déployé avec une version mise à jour de l'application, mais il a oublié de reconstruire/déployer les autres applications avec le nouveau ORM -. Oups)
Votre IDE peut-il charger plusieurs ensembles de projets en même temps? Eclipse, par exemple, a des ensembles de travail qui aident beaucoup avec ça. Aussi, à quelle fréquence chaque module change-t-il? – GreenKiwi
En ce qui concerne CI, vous pouvez regarder/rechercher TeamCity, Electric Could et CruiseControl ici pour voir ce que les autres ont fait. – GreenKiwi
1) Je n'ai jamais utilisé Visual Studio de cette manière auparavant. Je peux avoir plusieurs projets par solution (actuellement Application et ORM sont 2 projets dans la même solution.Je ne suis pas sûr de plusieurs solutions cependant.) 2) Après beaucoup de réflexion et de recherche, j'ai décidé soit TeamCity ou Hudson pour le CI serveur (penchant vers l'ancien) –