Question

J'essaie d'utiliser CruiseControl 2.7.3 (d'origine) pour construire un projet Java qui se trouve dans un référentiel SVN.

Ma configuration de croisière utilise le plug-in svn pour l'ensemble de modifications. Lorsqu'une modification est détectée, une construction est planifiée à l'aide de Ant. Ce fichier de construction Ant utilise ensuite la tâche Ant svnant pour effectuer une extraction complète du projet. Pendant un certain temps, nous avons défini cette option sur "Checkout", mais nous avons eu des cas où la construction ne se déclencherait pas pour un enregistrement ou deux, car l'enregistrement a eu lieu après la vérification du jeu de modifications, mais avant l'appel de ant. à svn checkout. Par conséquent, nous essayons de modifier le fichier de construction ant pour qu'il utilise le numéro de révision que la vérification de modification récupère.

La page de référence sur la configuration de CruiseControl affirme qu’une propriété, svnrevision , est défini et transmis aux générateurs, tout comme la propriété label est définie par le labelincrementers . Il semble ne pas être défini lorsque j'appuie sur le bouton Force Build .

Y a-t-il quelque chose que je dois faire pour y arriver?

Était-ce utile?

La solution

En examinant le code du contrôle de source SVN, il semble que svnrevision devrait être transmis au constructeur, et donc à votre invocation Ant. Avez-vous essayé d'utiliser la propriété de votre script Ant?

En réponse à la question dans le commentaire:

En effet, dans le cas de construction forcée, il n'y a pas eu de modification. Il n'y a donc pas de numéro de révision. Dans ce cas, svnlabelincrementer transmettra le dernier numéro de révision pour ce que vous avez localement, qui sera également le dernier.

Autres conseils

L’invocation de cruisecontrol ant n’a rien à voir avec le libellé (svn) construit en tant que tel. Le label svn est utilisé pour annoter les noms de construction, tandis que le fichier build.log n’est en réalité que la sortie de ant lorsqu’il est transmis via cruisecontrol.

Si vous souhaitez que le numéro de révision soit écrit dans la sortie de la génération ant, vous avez deux possibilités:

Une solution consiste à faire en sorte que ant interagisse avec svn d’une manière ou d’une autre. Svn in ant est uniquement disponible via une tâche contrib ant du tigre, elle n'est donc pas trivial à mettre dans votre dossier de fourmi. Mais avec cela dans votre construction, vous pouvez créer un svn info et obtenir le numéro de révision en tant que propriétés ant à votre disposition.

Vous pouvez également utiliser svnlabelincrementer pour attribuer le numéro de révision à l'étiquette et le transmettre au script ant à l'aide de buildproperties transmises de cruisecontrol aux scripts de génération. Comme Jay l'a mentionné dans les commentaires, l'étiquette ne contient que la dernière révision de construction réussie, ce qui n'est pas ce qu'il veut. Un correctif a été proposé sur sur ce blog , mais en effectuant la travailler dans le fichier build ant semble plus approprié.

Pouvez-vous utiliser le paramètre quietperiod? Après une validation, CruiseControl peut attendre un certain temps (par exemple, 30 secondes) avant de lancer une construction.

Il ne lancera pas de builds individuels pour chaque commit. Les commits à peu près au même moment donneront le coup d'envoi à une construction unique.

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