2013-08-20 227 views
3

如何將Jenkins中的參數從構建步驟傳遞到構建後步驟? 我不想通過文件來完成它,因爲它只是一個簡單的字符串(版本號),我想通過。將構建步驟中的參數傳遞給Jenkins中的構建後步驟

在後期構建中,我使用Groovy postbuild插件將此字符串添加到構建摘要中。


更新: 我絕望了)),並決定通過文件的路線走。 無法弄清楚如何在Groovy後期構建步驟中獲取WORKSPACE env var以從中獲取文件。

最終更新: 所以我最終解析了構建日誌,請參閱我自己的答案。

回答

2

我結束了打印信息生成日誌在構建步,然後在後集結 Groovy插件解析它。

有點難看的解決方法,我知道,有時候我很懷念的TeamCity與它的簡單...以下

正則表達式模式顯然是具體到我自己的構建......

def matcher = manager.getLogMatcher("^Build Found: [\\w\\s-]+_(\\d+\\.\\d+\\.\\d+)_\\d{8}(\\.\\d+)?\$") 
if (matcher?.matches()) { 
    def Version = matcher.group(1) 
    manager.addShortText(Version, "grey", "white", "0px", "white") 
    manager.createSummary("fingerprint.gif").appendText("Version: " + Version, false) 
} else { 
    manager.listener.logger.println("ERROR: Version number is not found in the build log") 
    manager.buildFailure() 
} 
+0

感謝您分享您的解決方案。 EnvInject插件不適用於我的用例,其中我需要在構建失敗時導出環境變量。當構建失敗時,EnvInject構建步驟完全不會被調用 - 可能是一個bug。我正在使用您的解決方案在PostBuild Groovy步驟中導出環境變量。這個環境變量然後被另一個構建後步驟(email-ext插件)拾取。拯救生命的人:) – noumenon

0

也許使用envinject plugin

+0

應該這樣做通過一個文件 –

+0

謝謝,coffeebreaks!我試過了。首先,它看起來很有希望 - 增加一個類型爲「Inject environment varialbes」的構建步驟,該步驟聲明它將「將環境變量注入到下面的構建步驟和構建後的操作」。然後我無法弄清楚如何在構建後的Groovy步驟中獲得env var ...謝謝,無論如何! – Ivan