Question

J'ai un installateur NSIS que nous avons construit précédemment en utilisant des scripts NANT qui copient certains fichiers et exécutent makensis.exe via une tâche exec pour construire le programme d'installation exe. Une fois le script terminé Nant, j'ai la structure compelte pour notre CD et notre téléchargement.

Je faisais juste un get de sourcesafe sur un bureau utilisé et l'utiliser comme une boîte de construction, la compilation là. Parfois, nous aurions quelques fichiers vérifiés dans cette solution quelque chose de critique. Dans ces cas, je voudrais aller à la boîte de construction, et d'obtenir de manière très sélective uniquement les fichiers, pour éviter d'avoir d'autres fichiers modifiés que nous ne sommes pas prêts à libérer encore. Fondamentalement, je suis en mesure de permettre le développement de poursuivre et d'inclure de manière sélective certains fichiers modifiés dans le programme d'installation pour la libération.

Maintenant, nous n'avons plus une boîte libre et besoin de construire à partir de notre serveur. Donc, je vais mettre en place CI usine afin que le développeur peut lancer la construction sans arrêt dans le serveur d'accès distant. La seule question que je me bats avec, est la meilleure façon de continuer à autoriser le contrôle du changement sélectif de se produire. Le concept par défaut de CI que l'usine CI met en œuvre est très bien pour le développement interne « tête ». Cependant, je veux aussi mettre en place un projet CCNet qui est exécuté uniquement à la demande via une force pour construire ce type de construction « version publique ».

est ce que j'ai pris d'assaut le cerveau jusqu'à présent, sans être sûr de savoir comment cela fonctionnera, le cas échéant (encore à déterminer ce que CCNet et CI usine sont tout). La « version publique » config projet CCNet / build serait la configuration telle qu'elle pas obtenir le dernier. Les modifications seraient pas déclencher une accumulation. Depuis l'autre projet CCNet qui utilise la méthode de CI par défaut (nous l'appellerons le « projet de CI ») d'obtenir plus tard lorsque des changements sont détectés, ces deux projets ne peuvent pas partager le même répertoire de travail. Ainsi, la « version publique » aurait besoin d'une copie de travail différent, de sorte que ses fichiers ne seront pas mis à jour est déclenché lorsque la construction du projet de CI. Le développeur devra à distance sur le serveur, un VSS, faire de façon sélective une entrer dans le « diffusion publique » copie de travail de l ', puis forcer une usine de construction par CI.

Je vois de L'inconvénient de c'est
1) Avoir à distance pour faire sélectivement obtient.
2) Je ne sais pas comment permettre à un seul projet d'usine CI d'avoir deux copies différentes du dossier produit de travail, de sorte que chaque bloc de configuration du projet a son propre.
3) J'ai peur de ce genre d'étrangeté cela pourrait causer. Je ne suis pas tout à fait sûr encore comment spécifier un bloc de contrôle de code source dans le bloc de configuration du projet CCNet, mais l'empêcher de faire une dernière quand il se construit. Je suis toujours comprendre peu à peu ce que les choses sont dans les scripts et peuvent être facilement pris sans casser d'autres choses, par rapport à ce n'est pas censé être sali autour avec et / ou n'est pas configurable.

Je voudrais vraiment entendre comment les autres traitent de cette question de libération sélective des changements, si vous avez une situation similaire. Je suis contraint de VSS, donc mon besoin immédiat est de résoudre ce avec cela à l'esprit, mais en même temps, je serais intéressé à entendre comment vous gérer cela avec d'autres systèmes de contrôle de source. Je suppose que vous auriez probablement une branche qui est votre dernière branche développements, puis fusionner les modifications dans le tronc chaque fois que vous voulez les libérer? Je ne vraiment pas confiance VSS pour branchement / fusion, et je pense que les concepts de branchement pourrait être un peu trop frais généraux et la courbe d'apprentissage pour cette boutique. Comme je l'ai dit cependant, des histoires avec d'autres systèmes de contrôle de source seraient connaissance future utile pour moi.

Merci d'avance.

Était-ce utile?

La solution

Vous avez besoin d'une structure de branchement dans votre référentiel pour faciliter ce processus. Quelque chose comme la méthode de branche de sortie. sélectionnez Seuls les individus peuvent engager à cette branche (ou une version / stable pour cela). Configurez votre CI manuel lance à tirer de la branche de sortie en sortie nocturne à promouvoir étape ou final à partir de là. Je n'aime pas l'idée de modifier manuellement les choses sur votre machine de construction. Mettre en place les changements dans le contrôle de version, dans un endroit sûr pour préparer votre libération et nous allons CI construire à partir de là, mais. Déclenché manuellement

Découvrez ces modèles de branchement. Je suggère C3, codeline-per-libération, souvent appelé ramification libération.

sur VSS de branchement qui comprend un lien vers la fusion.

apparence similaire.

Peut-être que vous pourriez passer à un autre système de contrôle de source avec un meilleur soutien pour ce genre de chose. Toutes les suggestions de personnes MS là-bas?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top