2017-01-25 100 views
1

我正在運行一個Build Flow作業,它可以並行執行多個構建,然後使用生成後行爲來發布HTML報告。從Jenkins的另一項工作中獲取內部版本號作爲變量

如何獲取每個單個作業的內部版本號作爲變量,以便在獲取HTML報告時可以使用?

編輯

這是我的並行代碼如下所示:

parallel (
    { uarr = build("Baseline - Secure - UARR", param1: build.properties.get("number")) }, 
    { login = build("Baseline - Secure - Login", param2: build.properties.get("number")) } 
) 

而這正是我試圖使用發佈的索引頁[S] HTML報告時使用,但它沒有看到$ {param1}作爲變量並試圖從字面上找到它:

*Secure Baseline*Secure_UARR-${param1}.html 

這是我使用在Maven構建什麼工作,它是在與包含版本號正確的文件名找到工作報告大:

*Secure Baseline*Secure_UARR-${BUILD_NUMBER}.html 

的問題是,如果我使用的是在相同的邏輯Build Flow並行作業,它使用該作業的內部版本號,而不是創建報告的Maven作業。 (我希望是有道理的)

+0

高清N =構建(「JOB_NAME」,PARAM_1:「值1」,PARAM_2:真實, ...) – Rik

+0

但是,我如何在生成後操作中使用這些參數? –

+0

啊哈,這就是你要找的。我認爲如果你想要的話,你將不得不讓他們的環境變量 – Rik

回答

0

可以存儲在一個變量作業引用

parallel(
job1: { def n = build("JOB_NAME", PARAM_1: "value-1", PARAM_2: true, ...) } 
... 
) 

,甚至將它們存儲在一個數組,如果你喜歡

def jobs = [:] 

parallel(
    job1: { 
     def n1 = build("job1", param1: "value1", ...) 
     jobs["job1"] = n1.number 
    }, 
    job1: { 
     def n2 = build("job2", param1: "value1", ...) 
     jobs["job2"] = n2.number 
    }, 
    job1: { 
     def n3 = build("job3", param1: "value1", ...) 
     jobs["job3"] = n3.number 
    }, 
    jobm: { 
     def nm = build("jobm", param1: "value1", ...) 
     jobs["jobm"] = n1.number 
    } 
) 

然後你可以閱讀當你想要的地圖

以下answer顯示如何將其導出爲環境變量。

def buildEnv = build.getEnvVars(); 
buildEnv.putAll(jobs) 
import org.jenkinsci.plugins.envinject.EnvInjectPluginAction 
def envInjectAction = build.getAction(EnvInjectPluginAction.class); 
envInjectAction.overrideAll(buildEnv) 

你可以在你postbuild步驟(S)爲$job1$job2,... $jobm使用它。

resolved bug建議你那麼可以在HTML-publisher plugin使用它(我不是檸熟悉的插件)

+0

來源也提示它(沒有完全追溯)https://github.com/jenkinsci/htmlpublisher-plugin/blob/cc21888701a965e5a47b23dbf57d55825166de17/src/main/java/htmlpublisher/HtmlPublisher的.java#L150 – Rik

相關問題