2014-08-27 49 views
3

Copy Artifacts Plugin上是否有任何文檔/示例,即「由構建參數指定」選項?如何在「鑽石加入」Jenkins構建管道中複製工件?

我試圖做一個「連接鑽石」管道,如在this SO question,並不能找出什麼把Parameter Name選項的「從其他項目複製工件」生成步驟來複制我的工件正常。

enter image description here

我所有的工作都具有PL_BUILD_NUMBER參數,我想用它來選擇哪個打造的文物從複製。

這個mailing list post表示參數必須是XML。所以我試過這個:

BUILD_SELECTOR=<SpecificBuildSelector><buildNumber>$PL_BUILD_NUMBER</buildNumber></SpecificBuildSelector> 

但它沒有工作。我在日誌中得到這個異常:

java.lang.NullPointerException 
    at java.io.StringReader.<init>(Unknown Source) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1035) 
    at hudson.plugins.copyartifact.BuildSelectorParameter.getSelectorFromXml(BuildSelectorParameter.java:80) 
    at hudson.plugins.copyartifact.ParameterizedBuildSelector.getBuild(ParameterizedBuildSelector.java:52) 
    at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:280) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:772) 
    at hudson.model.Build$BuildExecution.build(Build.java:199) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:160) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:535) 
    at hudson.model.Run.execute(Run.java:1740) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:233) 

我應該怎麼做?

另外還有「此版本的參數化 - >爲複製神器打造選擇」我不知道我是否應該使用它...

謝謝!

回答

5

你混合通過構建參數特定的構建指定。目前還不清楚你問的是哪一個。

對於通過構建參數指定,則需要在地方配置:

  • 在「此版本是參數」,選擇「爲複製神器構建選擇「
  • 此參數的名稱是我們將在稍後複製構件步驟中提供的內容。
  • 從用戶界面的角度來看,用戶會被提示一個構建選擇器界面(它允許所有類型的選擇:最後構建,特定構建,最新升級等)。
  • 在「複製神器」構建步驟,「哪個構建」下,選擇「由生成參數指定」。
  • 它將顯示另一個名爲「參數名稱」的字段(默認爲BUILD_SELECTOR)。
  • 名稱「構建選擇了複製神器」參數,我們在前面創建的
  • 由於默認值爲BUILD_SELECTOR,如果您也調用了參數BUILD_SELECTOR,則不需要更改任何內容。

BUILD_SELECTOR參數的值將根據您在構建之前在參數屏幕上選擇的參數而發生很大變化。您可以通過將參數值作爲測試(Windows上的echo %BUILD_SELECTOR%,* nix上的echo $BUILD_SELECTOR),然後手動運行構建並嘗試不同的選擇器來查看其可能的值。

具體而言,的值:當用戶參數屏幕上選擇特定生成
<SpecificBuildSelector><buildNumber>123</buildNumber></SpecificBuildSelector>
將被使用,並且如果需要設置從該參數值進入值123

在工作之外(例如從腳本或Parameterized Trigger plugin),您需要遵循此特定結構,具體取決於所需選擇的類型。

編輯:在重新閱讀你的問題,你的實際需要(這不是問題的標題是什麼)

在你的情況後,就不需要「爲複製神器構建選擇「參數。你只需要:

  • 複製文物構建步驟
  • 輸入項目名稱
  • 下副本哪個構建,選擇特定的構建
  • 內部版本號,鍵入$PL_BUILD_NUMBER(你說你已經在工作中)
+0

感謝您的回覆(順便說一句,如果您知道如何更清晰地更新標題,我沒有;))。我不確定我是否按照你最後的編輯方式進行:在我的「鑽石加入項目」測試中,我有4份工作。所有作業可以有不同的BuildNumber(因爲失敗,異常終止等),PL_BUILD_NUMBER只是管道初始作業的內部版本號,我手動將它傳遞給所有作業,所以很可能,PL_BUILD_NUMBER是* not * BuildNumber從中複製工件的工作。我將編輯問題以更好地反映這一點。 – dstj 2014-08-27 17:16:30

+0

那麼,你確實需要'BUILD_NUMBER'作品你想要複製的工件。如果你的管道是同步的,你可以使用「Last successful build」。或者,如果通過參數化觸發器插件觸發下游作業,則可以將'BUILD_NUMBER'傳遞到下游 – Slav 2014-08-27 17:22:12

+0

如果要在**作業'2'和'3'中複製工件**,則可以使用「觸發的上游構建這份工作「的選擇。但是你不能在'4'這個工作中使用它(就像你在引用問題中發現的那個人一樣)。這一切都取決於你如何觸發下游工作,以及你需要這些。 – Slav 2014-08-27 17:27:16

相關問題