2017-02-23 1 views
1

Je suis sous un serveur Jenkins 2.25 sous Windows Server 2012. Pour le moment, nous utilisons Maven Integration Plugin 2.12.1 et le Job DSL Plugin 1.57 .Le travail Jenkins généré par job-dsl ne reprend pas les paramètres Maven par défaut

J'ai écrit des scripts DSL pour environ 200 tâches existantes sur notre serveur.

Pour tous les travaux qui utilisent Maven, que ce soit en tant qu'étape de construction ou en tant que véritable Maven, j'ai un problème très frustrant. Lorsque j'exécute les travaux générés, ils échouent avec la sortie suivante.

12:17:12 [ERROR] Failed to execute goal com.googlecode.maven-download- plugin:download-maven-plugin:1.3.0:wget (default) on project myprojecy: The  parameters 'url' for goal com.googlecode.maven-download-plugin:download-maven-plugin:1.3.0:wget are missing or invalid -> [Help 1] 
12:17:12 [ERROR] 
12:17:12 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
12:17:12 [ERROR] Re-run Maven using the -X switch to enable full debug logging. 
12:17:12 [ERROR] 
12:17:12 [ERROR] For more information about the errors and possible solutions, please read the following articles: 
12:17:12 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException 

Au départ, nous pensions que nous avons identifié la question comme étant que nous manquions l'extrait de code XML, même pensé il est apparu ces paramètres étaient comme ils devraient être dans l'interface utilisateur.

<settings class="jenkins.mvn.DefaultSettingsProvider"/> 
<globalSettings class="jenkins.mvn.DefaultGlobalSettingsProvider"/> 
<injectBuildVariables>false</injectBuildVariables> 

donc ajouté ceci dans le script:

configure { node -> 
node/settings (class: 'jenkins.mvn.DefaultSettingsProvider') { 
} 
node/globalSettings (class: 'jenkins.mvn.DefaultGlobalSettingsProvider') { 
} 
node/injectBuildVariables ('false') { 
} 
} 

Mais les emplois ne parviennent toujours pas lorsque je tente de les exécuter, même si le XML contient maintenant cet extrait comme prévu.

Maintenant, deux choses très bizarres que je ne peux pas établir qui sont clairement liés. Tout d'abord, après que les travaux échouent, si je sélectionne manuellement "configurer" pour le travail, alors enregistrez-le (c.-à-d. Ne faites pas de changements réels), le travail tourne bien pour toujours plus (jusqu'à ce qu'un travail de graine).

Deuxièmement, dans l'historique de la configuration du travail après avoir exécuté le travail de démarrage, je vois les modifications apportées lorsque le travail de démarrage est exécuté sous l'utilisateur système. Cependant, en quelques secondes, à chaque fois, un autre changement de configuration est enregistré sous mon nom d'utilisateur, malgré le fait que je n'ai apporté aucune modification à la configuration du travail - ceci est indépendant du fait que je sauvegarde le travail sans apporter de modifications , ça arrive instantanément.

Je devrais ajouter qu'une inspection plus poussée me suggère qu'il existe des paramètres par défaut pour Maven qui ne sont pas appliqués à mes travaux générés DSL. Lors de l'ajout du commutateur -X aux objectifs Maven, j'ai pu voir plus d'informations sur l'échec de ces tâches. La sortie est:

15:06:31 [DEBUG] Goal:   com.googlecode.maven-download-plugin:download-maven-plugin:1.3.0:wget (default) 
15:06:31 [DEBUG] Style:   Regular 
15:06:31 [DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> 
15:06:31 <configuration> 
15:06:31 <cacheDirectory>${download.cache.directory}</cacheDirectory> 
15:06:31 <checkSignature default-value="false">${checkSignature}</checkSignature> 
15:06:31 <failOnError default-value="true"/> 
15:06:31 <outputDirectory default-value="${project.build.directory}">D:\data\jenkins\workspace\project\target</outputDirectory> 
15:06:31 <outputFileName>${jarsigner.keystore.filename}</outputFileName> 
15:06:31 <overwrite>${download.overwrite}</overwrite> 
15:06:31 <readTimeOut default-value="0"/> 
15:06:31 <retries default-value="2"/> 
15:06:31 <session>${session}</session> 
15:06:31 <skip default-value="false">${download.plugin.skip}</skip> 
15:06:31 <skipCache default-value="false"/> 
15:06:31 <unpack default-value="false">false</unpack> 
15:06:31 <url>${jarsigner.keystore.url}</url> 
15:06:31 </configuration> 

Lorsque, dans la course réussie du travail (changement de configuration post faux) certains de ces champs sont pleins, par exemple, une URL du fichier de clés. C'est évidemment le problème, mais je ne sais pas quoi faire. Pour autant que je puisse dire cela devrait être résolu en incluant le bloc configure ci-dessus dans le groovy, mais d'une manière ou d'une autre mes travaux manquent ceci (mais ils l'ont après avoir sauvé le travail encore sans des changements).

Quelqu'un peut-il voir ce que je fais mal ici?

+0

Pour la deuxième partie de votre question, voir https://groups.google.com/d/msg/job-dsl-plugin/Ab9dHd1LnZU/dBO--SO2AAAJ – daspilker

Répondre

1

La question est ce code dans le fichier XML qui est généré automatiquement:

<jvmOptions></jvmOptions> 

Il semble qu'en dépit d'être vide c'est outrepassant toutes les options de Maven par défaut mais lorsque le présent est le travail est enregistré à nouveau pris parce que c'est vide. Résolu en ajoutant ce au script groovy:

configure({ 
      it.remove(it/'jvmOptions') 
     }) 

Cela semble susceptible d'être un bogue dans la LIS, mais il est surprenant de constater que mes collègues et moi-même avons pu trouver aucune mention. Quoi qu'il en soit, ce qui précède a résolu cela pour moi.