Nous sommes en train de rationaliser/automatiser la construction, l'intégration et les tests unitaires ainsi que le déploiement. Notre logiciel est développé dans Visual Studio où nous avons utilisé C# et VB.NET dans nos projets. Un seul projet peut être contenu dans plusieurs solutions (le projet Utils est utilisé dans les solutions ProductA et ProductB)Structure des scripts de construction NAnt et structure de la solution sur le serveur de construction
Pour des raisons historiques, notre référentiel de code n'est pas aussi bien structuré qu'on aurait pu l'espérer. E.g. Le projet Utils peut être localisé sous la solution ProductA (parce qu'il a été utilisé en premier), mais il a ensuite été jugé utile pour le développement de productB et simplement inclus dans la solution de productB (mais toujours dans un sous-répertoire de productA). Je souhaite utiliser des tests d'intégration continus et installer un serveur de génération CC.NET dans lequel j'ai l'intention d'utiliser NAnt pour créer les versions réelles.
Question 1: Comment dois-je structurer mes builds sur le serveur de build? Dois-je demander à CC.NET de récupérer tous les projets pour le produit B dans une seule bibliothèque, par ex. une structure de fichier similaire à
-ProductB
--Utils
--BetterUtils
--Data
ou devrais-je opter pour un filestructure similaire à ce
-ProductA
--Utils
-ProductB
--BetterUtils
--Data
et puis juste ont le NAnt construire des scripts gèrent les références? Nos références dans VS ne correspondent pas à l'emplacement réel dans le référentiel de code, il n'est donc pas possible aujourd'hui de vérifier la solution productB et de la construire immédiatement (malheureusement). J'espère que cette question est logique? Est-il préférable de vérifier tout le code source situé dans différents projets dans un seul dossier de fichiers (tout en conservant une sorte de structure) et puis construire tout à la fois ou avoir plusieurs projets dans CC. NET, puis laissez le serveur CC.NET gérer les dépendances? Exemple: Dois-je avoir un projet distinct dans CC.NET pour surveiller la construction/test automatisé du projet Utils quand il n'est jamais sorti seul? Ou devrais-je simplement le construire/tester tout en le construisant dans le cadre de ProductB?
J'espère que ce qui précède a du sens et que vous pouvez me fournir quelques arguments pour l'utilisation de l'une ou l'autre option. Nous ne sommes pas loin d'une structure de référentiel de code source idéale et je préférerais que je puisse résoudre l'absence de structure de référentiel sur le serveur de construction au lieu d'avoir à nettoyer la structure de notre référentiel. La désactivation de VSS n'est malheureusement pas une option. En ce moment, notre build consiste soit à déployer via VS clickonce, soit à appuyer sur F5, donc le simple fait d'automatiser la build serait un énorme pas en avant pour nous.
Merci
J'ai fait quelques expériences avec votre suggestion et il semble être la bonne façon. Je suis toujours en train de configurer des scripts NAnt pour exécuter les builds mais en utilisant le fichier de solution du projet pour exécuter la construction via la tâche MSBuild de Nant. Je vais également adopter les références relatives que vous suggérez, mais cela ajoutera beaucoup de répertoires supplémentaires. Je crois que l'isolement est important cependant. Nous allons très probablement passer à TFS2008 en mars et j'espère que ces efforts de mise en place d'un serveur de build ne seront pas gaspillés. Nous vous remercions de votre aide. – llykke