NOTRE processus actuelComment synchroniser l'activité CI (Hudson) dans un processus de construction automatisé existant (phing, svn)?
Nous sommes une petite équipe de développeurs (2 à 4 personnes selon le projet) qui utilisent actuellement Phing pour déployer le code dans un environnement de mise en scène, avant d'aller vivre. Nous gardons notre code dans un repo SVN, où le tronc détient le développement actif actuel et, à certains moments, nous faisons des branches que nous testons et ensuite (en cas de succès), marquons et exportons vers l'environnement de transfert. Si tout va bien là aussi, nous les déployons enfin dans des serveurs de production. Les actions sont hautement automatisées, mais toujours déclenchées par une intervention humaine.
DOUTE
Nous aimerions maintenant vous présenter l'intégration continue (avec Hudson) dans le processus; Malheureusement, nous avons quelques doutes sur la synchronisation des activités, car nous avons peur que CI puisse quelque peu interférer avec notre processus de construction et causer certains problèmes.
Considérant qu'un cycle de CI automatisé a une certaine fréquence d'actions exécutées automatiquement, nous voyons 2 cas possibles pour « l'intégration », chacun avec ses propres problèmes:
Cas A: chaque cycle de CI produit un nouvelle branche avec son propre nom; nous utilisons un tel nom manuellement (par l'intermédiaire de phing comme il se passe maintenant) exporter le code de la SVN à la mise en scène env. Le problème que je vois ici est que (sauf contre-mesures spécifiques sont pris - IE suppression) le nombre de branches que nous avons peut facilement devenir hors de contrôle (supposons que nous nous engageons souvent, de sorte que nous avons une nouvelle construction/branche tous les N minutes).
Cas B: chaque cycle de CI crée une nouvelle branche nommée « actuelle », qui est ensuite marqué avec un nom unique que lorsque nous décidons manuellement à exporter vers la mise en scène; la branche actuelle, en tout cas est alors supprimé, dès que le prochain cycle CI démarre. Le problème que nous voyons ici est qu'un nouveau cycle pourrait lancer pendant que quelqu'un est marquage/exportation de la branche « actuelle » à la mise en scène créant ainsi une construction incohérente (mais peut-être ici je suis trop pessimiste, puisque je avouer je ne sais pas si SVN offre une protection intégrée contre cela).
Avec tout cela étant dit, je me demandais si quelqu'un avec des expériences similaires pourrait être si bon pour nous donner quelques conseils sur le sujet, puisque aucune des approches décrites ci-dessus semble satisfing complètement à nous.
Y a-t-il quelque chose d'important que nous avons complètement oublié dans l'image globale? Merci pour votre attention & (à l'avance) pour votre aide!
Merci pour votre réponse, Ritesh. Notre problème est en fait un peu différent de déclencher Hudson lorsque des changements se produisent dans le coffre (déjà vu quelques messages sur le sujet). Notre souci est en fait d'éviter les situations dans lesquelles la branche CURRENT (qui a été créée automatiquement par Hudson pendant le dernier cycle de construction si le code de la ligne a passé tous les tests) devient incohérente à cause d'une prochaine construction automatique d'Hudson.) déploiement de transfert. Il s'agit essentiellement d'un problème de synchronisation entre CI et le déplacement manuel vers la mise en scène. Y at-il quelqu'un qui a fait face (et résolu) un tel problème? – maraspin
Juste une suggestion: Cant vous utilisez une autre branche pour faire juste CI. Dans hudson vous pouvez spécifier que la construction devrait fonctionner sur quelle branche de votre code. Vous pouvez utiliser une branche distincte uniquement pour l'intégration continue et une branche séparée pour les validations sur le code. –