2010-10-03 72 views
2

Y a-t-il un moyen de passer l'ensemble de modifications CruiseControl à une tâche personnalisée?La modification de CruiseControl doit-elle être définie dans une tâche personnalisée?

Mon installation: J'ai une instance de CruiseControl (l'original, pas CC.NET ou autre) qui surveille un dépôt SVN de paquets binaires en attente de test. Chaque fois qu'un nouveau paquet binaire apparaît, ce paquet devrait être envoyé à un autre "hôte de test" pour le tester. Cela fonctionne en général via une tâche ant personnalisée, mais a un arraché ...

Le problème est que les paquets binaires sont construits pour plusieurs architectures. Ma tâche ant personnalisée doit sélectionner cet "hôte de test" qui correspond à l'architecture du paquet binaire (il maintient une liste interne des "hôtes de test" à cette fin). À l'heure actuelle, tous les «hôtes de test» sont notifiés pour exécuter leurs tests chaque fois qu'un nouveau package pour une architecture apparaît.

Donc, mon idée d'une logique de projet CruiseControl idéal serait:

  • CruiseControl surveille un répertoire SVN des changements via <modificationset> (et aussi un fichier local qui devrait déclencher tous les « hôtes de test »)
  • sur toute modification, est appelé un script ANT par CruiseControl, qui appelle à son tour une tâche ANT personnalisée
  • Cette tâche ANT personnalisée a besoin de savoir qui fichiers ont été modifiés exactement pour déclencher les Cruis eCONTROL exécuter de manière à pouvoir sélectionner le « hôte de test » correcte sur la base des noms des fichiers modificated (ils contiennent l'architecture en leur nom)

Ma question est: Comment puis-je passer le modificationset à cette tâche ANT ?

Une idée de la solution que je suis tombé sur était le plugin "Modification Writer", mais celui-ci est apparemment disponible uniquement pour CruiseControl.NET. :-(

Répondre

0

True, le fichier journal contient toutes les informations. Mais vous n'avez pas de chance si vous voulez l'utiliser dans votre tâche de fourmi. Ce fichier n'est pas écrit sur le disque avant la fin de la construction. Hélas, vous ne voyez pas la modification lorsque vous le souhaitez.

0

Il n'y a pas déjà une solution prête pour ce fait, mais il est difficile de ne pas résoudre votre problème en procédant comme suit:.

Pour chaque projet un fichier journal spécifique existe au format .xml Le fichier a un nom comme celui-ci:.. log20110913113343.xml la tâche fourmi connaît le journal en tout temps maintenant ce que vous devez faire est d'extraire les informations que vous voulez à partir de ce fichier, par exemple:

<modification type="clearcase"> 
    <file action="checkin"> 
    <revision>\main\axpro_LATESTfo\4</revision> 
    <filename>expected</filename> 
    <project>calibration\algorithms\test.u\DetectMarkersMetaTest</project> 
    </file> 
    <date>2011-09-12T14:22:28</date> 
    <user>z002tv9v</user> 
    <comment><![CDATA[Added file element "testcase_1.01.txt". 
       Added file element "testcase_1.02.txt". 
       Added file element "testcase_1.03.txt". 
       Added file element "testcase_1.04.txt". 
       Added file element "testcase_1.05.txt". 
       Added file element "testcase_1.06.txt".]]></comment> 
    <revision>\main\axpro_LATESTfo\4</revision> 
</modification> 

Là, vous pouvez trouver tous les fichiers qui ont été modifiés par l'ensemble de modification en cours.Une fois que vous faites cela, vous pouvez les transmettre à votre tâche personnalisée et remonter à partir de là. d utiliser xsl pour extraire les données que je veux du fichier mais bien sûr vous pouvez utiliser la technologie que vous voulez :)

Espérons que ça a aidé!