2017-02-23 41 views
1

我在Windows Server 2012上運行Jenkins 2.25服務器。目前,我們正在使用Maven Integration Plugin 2.12.1和Job DSL Plugin 1.57 。由job-dsl生成的Jenkins作業沒有選擇默認的Maven設置

我已經爲我們服務器上的大約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現在包含這個片段如預期的就業機會仍然會失敗。

現在兩個很奇怪的事情,我不明白哪一個是明確相關的。首先,在作業失敗後,如果我手動爲作業選擇「配置」,然後保存它(即不做任何實際的更改),作業將永遠運行良好(直到我們運行種子作業,然後再次失敗)。

其次,在運行種子作業後的作業配置歷史記錄中,我看到在種子作業在System用戶下運行時所做的更改。但是,在幾秒鐘內,每次都會在我的用戶名下記錄另一個配置更改,儘管我沒有對作業配置進行任何更改 - 這與我無關地保存作業而不作任何更改順便說一下,它會立即發生。

我應該補充一點,進一步的檢查表明,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:\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> 

凡在職務(崗位假冒配置變化)其中的一些領域都滿了,例如,用於密鑰庫網址的成功運行。這顯然是問題,但我不知道該怎麼做。據我所知,這應該通過在groovy中包含上面的配置塊來解決,但不知何故,我的工作缺少了這一點(但是他們在沒有改變的情況下再次保存工作之後就擁有了它)。

任何人都可以看到我在做什麼錯在這裏?

+0

對於問題的第二部分,請參閱https://groups.google.com/d/msg/job-dsl-plugin/Ab9dHd1LnZU/dBO--SO2AAAJ – daspilker

回答

1

的問題是這個代碼在XML這是自動生成的:

<jvmOptions></jvmOptions> 

看來,儘管是空的,這是重寫所有默認的Maven的選擇,但隨後當工作得到保存再次,這是取出來,因爲它是空的。加入這Groovy腳本解析:

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

這似乎可能是在DSL的錯誤,但令人驚訝的是我的同事和我一直無法找到這個任何提及。無論如何,上述解決了我的問題。