2010-03-09 3 views
2

Je veux créer un travail hudson, qui prend un identifiant en tant que paramètre. Et utilisez cet identifiant pour calculer le chemin svn-repo. Où je travaille, vous avez un chemin svn pour chaque problème que vous résolvez. Et puis tous les problèmes sont réunis dans un seul svn-path.Pouvez-vous le faire avec Hudson?

Ce que je veux faire est d'exécuter l'analyse de code statique sur les problèmes partiels.

Donc je pense que peut-être avoir un Ant build.xml que j'utilise pour chaque problème, puis, paramétrer le travail avec l'ID de problème.

J'ai essayé d'y parvenir mais le chemin svn ne remplace pas le paramètre. J'ai essayé avec #issueId, %issueId%, ${issueId} et ${env.issueId} sans succès.

erreur de saut comme:

Location 'http://svn-path:8181/svn/devSet/issues/${env.chuid}' does not exist 
Checking out a fresh workspace because C:\Documents and Settings\dnoseda\.hudson\jobs\test\workspace\${env.chuid} doesn't exist 
Checking out http://svn-path:8181/svn/devSet/issues/${env.chuid} 
ERROR: Failed to check out http://svn-path:8181/svn/devSet/issues/${env.chuid} 
org.tmatesoft.svn.core.SVNException: svn: '/svn/!svn/bc/46190/devSet/issues/$%7Benv.chuid%7D' path not found: 404 Not Found (http://svn-path:8181) 
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) 
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) 
    at 

Je pense que je ne peux pas faire ce que je veux. Savez-vous comment je peux configurer la configuration correcte pour réaliser ce problème?

Merci pour toute aide.

Modifier La section du travail configurent que je veux mettre ce paramètre est la suivante:

<scm class="hudson.scm.SubversionSCM"> 
<locations> 
     <hudson.scm.SubversionSCM_-ModuleLocation> 
     <remote>http://svn-path:8181/svn/devSet/issues/${env.issueid}</remote> 
     </hudson.scm.SubversionSCM_-ModuleLocation> 
    </locations> 

New Edition: Résolu

Ma version de hudson était le dernier (1.349), mais la version de svn plugin il était 1.11, étant le dernier le 1.13, et il fonctionne avec ${issueId}

T hank pour les anwsers

+0

"vous avez un chemin svn pour chaque problème que vous résolvez" = une branche pour chaque problème/bug/sujet? –

+0

oui, merci pour la clarification – user2427

Répondre

3

J'ai configuré un projet svn qui fait le paramètre substitution avec succès. La syntaxe est en effet ${issueId} donc je suppose que vous faites quelque chose de mal, ou utilisez une très ancienne version de Hudson. Pourriez-vous mettre à jour la question avec les versions de Hudson et le plugin subversion que vous utilisez?

<project> 
    <actions/> 
    <description></description> 
    <keepDependencies>false</keepDependencies> 
    <properties> 
    <hudson.model.ParametersDefinitionProperty> 
     <parameterDefinitions> 
     <hudson.model.StringParameterDefinition> 
      <name>issueId</name> 
      <description></description> 
      <defaultValue>none</defaultValue> 
     </hudson.model.StringParameterDefinition> 
     </parameterDefinitions> 
    </hudson.model.ParametersDefinitionProperty> 
    </properties> 
    <scm class="hudson.scm.SubversionSCM"> 
    <locations> 
     <hudson.scm.SubversionSCM_-ModuleLocation> 
     <remote>https://svn.dev.java.net/svn/hudson/trunk/${issueId}</remote> 
     </hudson.scm.SubversionSCM_-ModuleLocation> 
    </locations> 
    <useUpdate>true</useUpdate> 
    <excludedRegions></excludedRegions> 
    <excludedUsers></excludedUsers> 
    <excludedRevprop></excludedRevprop> 
    </scm> 
    <canRoam>true</canRoam> 
    <disabled>false</disabled> 
    <triggers class="vector"/> 
    <concurrentBuild>false</concurrentBuild> 
    <builders/> 
    <publishers/> 
    <buildWrappers/> 
</project> 

Voici la sortie de génération.La vérification échoue en raison d'un problème d'authentification, mais le paramètre est remplacé avec succès:

Started by user anonymous 
Building on master 
Checking out a fresh workspace because C:\hudson\jobs\test-svn\workspace\${issueId} doesn't exist 
Checking out https://svn.dev.java.net/svn/hudson/trunk/www 
ERROR: Failed to check out https://svn.dev.java.net/svn/hudson/trunk/www 
org.tmatesoft.svn.core.SVNCancelException: svn: No credential to try. Authentication failed 
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) 
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) 
    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:168) 
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:534) 
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:273) 
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:261) 
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:516) 
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98) 
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1001) 
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:178) 
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:482) 
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:851) 
    at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:534) 
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:893) 
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:791) 
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:615) 
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:541) 
    at hudson.FilePath.act(FilePath.java:676) 
    at hudson.FilePath.act(FilePath.java:660) 
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:534) 
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:482) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:898) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:400) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:349) 
    at hudson.model.Run.run(Run.java:1106) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:93) 
    at hudson.model.Executor.run(Executor.java:122) 
Notifying upstream projects of job completion 
Finished: FAILURE 
4

De l'hudson wiki:

« Le paramètre sont disponibles en tant que paramètres d'environnement. Ainsi, par exemple une coquille (FOO $,% FOO%) ou Ant ($ {} env.FOO) peut accéder à ces valeurs. »

Votre syntaxe ne correspond pas à celle du wiki.

+0

Vous avez raison. J'ai essayé cela. Je viens de modifier la question avec les informations correctes. – user2427

+0

Hudson convertit votre nom de variable en majuscule et vous utilisez shell (je suppose) donc vous voulez utiliser 'http: // svn-path: 8181/svn/devSet/problèmes/$ ISSUEID' – prestomation

+0

Vous pouvez mettre un 'env' directement dans votre script de construction pour imprimer l'environnement actuel afin de confirmer que le paramètre le rend si loin – prestomation

2

Dans ce comment, il est mentionné qu'ils utilisent le $ {ISSUEID}, c'est pourquoi je l'ai suggéré, mais tous les autres signes que je vois disent que cela ne fonctionne pas réellement

Sinon, je recommanderais de ne pas utiliser le plugin SCM et de faire le SVN opération dans une étape de script de construction.Cela vous permettrait d'utiliser les paramètres comme variables d'environnement comme $ ISSUEID

+0

Je vois. Mais, pouvez-vous configurer hudson pour interroger le SCM pour les mises à jour de l'étape de script de construction? – user2427

+0

Cela semble fonctionner. Alors comment configurer le travail, par script, pour vérifier s'il y a un changement dans le SCM, et seulement si c'est le cas, pour exécuter le job? Avec le plugin SCM, vous pouvez le faire, et c'est la seule raison pour laquelle j'ai essayé de l'utiliser. – user2427

+0

Je ne suis pas familier avec SVN, mais vous devez le script. Grep la sortie de votre commande svn pour déterminer de continuer ou non. – prestomation