2011-04-20 5 views
1

J'ai deux projets assemblés dans Hudson avec Maven 2, disons: Shared.jar et Server.jar.Hudson: construire un chaînage et deux projets

Le serveur dépend de Shared.

Je veux mettre en œuvre suivant construire des scénarios:

  1. Quand quelque chose est déterminé à serveur - que le serveur est reconstruit.
  2. Lorsque quelque chose est validée à Shared - first Shared est généré, puis Server.
  3. Lorsque quelque chose est engagé à Serveur et partagé (dans un commit comme ils sont dans un repo SVN) - d'abord Shared est construit, puis Server.

C'est un comportement évident, mais ce que j'ai, c'est que j'ai un serveur construit deux fois dans le troisième cas. Y a-t-il une possibilité de régler cela? J'utilise Hudson 1,392

Dans les projets SVN s'annonce suivant:

+ SVN repo root 
| 
+ Server 
| ... 
| pom.xml 
+ Shared 
    ... 
    pom.xml 
+0

Pouvez-vous donner un peu plus d'informations sur votre structure svn repo? Le serveur est-il partagé et partagé dans des sous-répertoires distincts? – artbristol

+0

Un repo, deux répertoires: pour le serveur et pour partagé – glaz666

Répondre

1

je ne vois pas une façon de faire facile, mais je pense qu'il est un moyen pas trop difficile.

Créez un nouveau travail (appelez-le TRIGGER pour cet exemple) qui a un déclencheur de génération qui surveille à la fois le serveur et Shared. Quand quelque chose est commise (sur Serveur ou Partagé), avoir une tâche de construction (dans mon cas, probablement une batte de Windows ou un script PowerShell) qui vérifie ce qui est commis et décide ce qui doit être construit - Serveur ou Partagé. Essentiellement, votre logique de trois cas serait traitée ici. En fonction du résultat, demandez à la tâche de génération de créer/mettre à jour deux fichiers dans l'espace de travail - appelez l'un d'entre eux BUILDSHARED.TXT et l'autre BUILDSERVER.TXT (pour l'exemple). Vous voudrez changer le contenu du fichier (comme le dépôt de $ BUILD_TAG) lorsque vous voulez que ce composant soit reconstruit. REMARQUE: Si vous souhaitez recréer BOTH Server et Shared, vous devez indiquer que le travail partagé doit être reconstruit. Maintenant, faites le travail d'archiver ces deux fichiers.

Modifiez votre travail partagé pour inclure le plug-in URL Change Trigger. Définissez le déclencheur de génération pour surveiller l'URL du permalien du fichier BUILDSHARED.TXT du travail TRIGGER. Lorsque le fichier surveillé est modifié, une nouvelle version de Shared sera déclenchée.

Modifiez également votre travail partagé pour démarrer une version aval du travail du serveur en cas de réussite. Vous pouvez le faire avec l'option "Build other projects", ou utiliser quelque chose comme mon favori personnel, le Parameterized Trigger Plugin

Enfin, modifiez votre travail de serveur pour utiliser le plugin URL Change Trigger aussi. Définissez-le pour surveiller l'URL du permalien du fichier BUILDSERVER.TXT du travail TRIGGER. Maintenant, le travail du serveur sera déclenché si une validation du serveur est effectuée ou si le travail partagé est terminé.

Je pense que cela fait ce que vous voulez ...

+0

Eh bien, c'est certainement un moyen de le faire ...Mais si je ne trouve pas de solution intégrée pour mon problème, je ferais mieux de reconstruire le serveur et de le partager en conséquence lors de la mise à jour des dépôts, bien qu'il soit préférable de les éviter. – glaz666