Job-DSL生成的Jenkins作业没有拾取默认的Maven设置



我正在Windows Server 2012上运行Jenkins 2.25服务器。目前,我们使用Maven Integration插件2.12.1和作业DSL插件1.57。

我已经为服务器上的大约200个现有作业编写了DSL脚本。

对于任何使用Maven的工作,无论是作为构建步骤还是实际的Maven,我都有一个非常令人沮丧的问题。当我运行生成的作业时,它们会失败以下输出。

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

最初,我们认为我们确定了问题是我们缺少XML摘要,甚至认为这些设置似乎是在UI中。

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

因此将其添加到脚本中:

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

但是,即使我试图运行它们时,工作仍然失败,即使XML现在包含了预期的该片段。

现在,我无法解决的两个非常奇怪的事情显然是相关的。首先,在作业失败之后,如果我手动选择"配置"为作业,然后保存(即不要进行任何实际更改),该作业将永远运行得更多(直到我们运行的种子作业,然后它再次失败)。

其次,在运行种子作业后的作业配置历史记录中,我看到种子作业在系统用户下运行时所做的更改。但是,在几秒钟内,尽管我没有对工作配置进行任何更改,但每次都会在我的用户名下记录另一种配置更改 - 这与我无关我保存工作而不进行更改,以便,立即发生。

我应该补充说,进一步的检查向我表明,Maven有一些默认设置,这些设置未应用于我的DSL生成的作业。在将-X切换添加到Maven目标时,我可以看到有关这些作业在哪里失败的更多信息。输出为:

 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:datajenkinsworkspaceprojecttarget</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>

在成功运行中(伪造的配置更改)中,其中一些字段已满,例如钥匙店的URL。这显然是问题所在,但我不知道该怎么办。据我所知,应该通过在Groovy中包括上面的配置块来解决此问题,但是我的工作缺少了这一点(但是他们在没有更改的情况下再次保存工作后拥有它)。

谁能看到我在这里做错了什么?

问题是自动生成的XML中的该代码:

<jvmOptions></jvmOptions>

看来,尽管空无一人,但这还是覆盖了任何默认的Maven选项,但是当作业再次保存时,这将被取出,因为它是空的。通过将其添加到Groovy脚本中来解决:

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

这似乎是DSL中的一个错误,但我和我的同事们找不到任何提及的东西令人惊讶。无论如何,上述为我解决了。

相关内容

  • 没有找到相关文章

最新更新