Nous avons récemment développé Hudson pour une intégration continue, et nous commençons à profiter des avantages du test automatisé, de l'analyse statique, etc. Notre prochaine étape consiste à lancer notre processus de relâchement manuel encombrant. Ce que j'imagine est un processus en deux phases:Communiqués automatisés avec Hudson + Ant + Subversion
Branche pour une ligne de libération. Une fois que notre ligne de développement se sera stabilisée, nous aimerions nous lancer. Parce que nous avons des utilisateurs à faible densité et à forte demande, il y a souvent un peu d'activité à la suite d'une sortie officielle, ce qui entraîne un peu de stop-and-go-développement au début d'une ligne de lancement (et nous ne vouloir bloquer le développement de la ligne principale pour cela), donc la pratique de se ramifier à un moment opportun, puis de permettre une fenêtre de stabilisation (des heures à un jour ou deux) est logique. (Ceci est fait dans subversion, habituellement nous marquons la version de développement immédiatement avant la branche, puis nous branchons, puis nous poursuivons le développement parallèle)
Couper une version de la branche. Cela implique actuellement
- Un peu de "correction" pour mettre les numéros de version où ils appartiennent.
- Checkin
- Tag
- Export
- Construire
- Un peu de "fixup" pour revenir numéros de version à "devel/instantané".
- Checkin
Donc, pour opérationnaliser quelque chose comme ça à Hudson, proprement, comment pouvons-nous:
exécuter une opération de branche d'Hudson que les branches de l'arbre, étant donné une nouvelle version nom de la branche et génère un nouveau travail Hudson pour créer une nouvelle ligne de construction continue pour cette branche. (Il est proche d'une copie de la configuration -trunk existante, mais doit remplacer certains noms d'espace de travail et des choses ...)
D'où vient la logique d'interagir avec Subversion? (Peut-être pourrait être dans le script ant, pourrait être un script séparé, Hudson/plugins semblent également fournir une partie de cette logique?)
Toute réflexion sur les utilisateurs/autorisations pour Hudson/processus subsidiaires quand il parle à la repo en mode écriture? En ce qui concerne la phase deux, les questions ci-dessus s'appliquent également. Puis-je utiliser le plugin release pour automatiser une logique comme celle-ci?
J'ai lu attentivement la documentation Plugin Hudson et la libération, mais il est plutôt inégale et il n'y a pas beaucoup d'exemples de travail disposés de bout en bout ...
Edité pour ajouter : Je comprends et attendais le "Avez-vous considéré Maven?" réponses ... J'apprécie, et je comprends que Maven est probablement la bonne solution à long terme, mais un changement de système de construction avec toute la force et le drang de passer aux contraintes précises de Maven et d'éduquer le personnel technique n'est pas réalisable À court terme. Vraisemblablement, il y a un moyen de le faire avec Ant et une petite graisse de coude ...
Avez-vous envisagé d'utiliser maven? En maven je changerais la cible du test au déploiement. :-P –
@Peter Lawrey: Nous regardons Maven. J'avoue avoir été brûlé/frustré par un couple de projets Maven il y a des années. J'entends dire que c'est une vieille nouvelle, et nous verrons une transition vers Maven, mais cela devra être une question à plus long terme (problèmes de stabilité/productivité) – andersoj
Ne considérez pas Maven. Maven est horrible et cassé et rigide et sans valeur et stupide. Vous pouvez facilement faire mieux vous-même. –