2015-07-21 119 views
4

將一個命令的輸出放在Jenkins構建名稱中的最佳(或任何!)方式是什麼?如何將'git describe'的輸出轉換成Jenkins構建名稱

我想將git describe命令的輸出放入Jenkins作業的構建名稱中。

我已經安裝了build-name-setter插件與像構建名字爲某事的希望:

${ENV, var="GIT_DESCRIBE"} 

我只是不知道如何設置$GIT_DESCRIBE設置名稱前!我試過使用EnvInject插件。動態設置環境變量的唯一方法是使用groovy腳本。這將工作得很好,除了我的作業運行在遠程從服務器上,groovy腳本(顯然)只在主服務器上運行。

回答

5

如果您需要的「描述」的數據(例如,你不能只使用現有$GIT_BRANCH$GIT_COMMIT環境變量),你可以添加一個「執行殼牌邁」有:

echo GIT_DESCRIBE=$(git describe) > git.properties 

然後,添加一個EnvInject構建步驟,該步驟將注入git.properties文件的屬性。

0

我試過按照Christopher Orr概述的步驟,但我的「Execute shell」腳本似乎只在構建開始後才運行。在我的情況下,GIT_DESCRIBE從未爲構建使用而設置/注入。

經過一段時間的研究,我找到了一個解決方案,使用「評估Groovy腳本」步驟作爲環境注入器插件的一部分。 Groovy腳本是在構建前評估的。但是,主要的注意事項是.groovy腳本不在$ WORKSPACE中運行。我最終做的是從.groovy腳本執行位於我的應用($ WORKSPACE)中的shell腳本,並使用GIT_DESCRIBE將其輸出作爲映射返回。

評估的Groovy腳本

def sout = new StringBuilder() 
def serr = new StringBuilder() 
def proc = "$WORKSPACE/git-describe.sh".execute() 
proc.waitForProcessOutput(sout, serr) 
def map = [GIT_DESCRIBE: sout.toString()] 
return map 

git-describe.sh

#! /bin/bash 

# change working directory to the current script's directory 
cd "${0%/*}" 

echo `git describe` 

從那裏,你應該能夠引用GIT_DESCRIBE在 「構建名」 宏。

${ENV, var="GIT_DESCRIBE"} 
0

隨着build-name-setter插件v1.6.7一個能做到以下幾點:

  • 「執行shell」 打造一步,這確實git describe >version.txt

  • 「更新打造的名字」 生成步驟,其需要從version.txt建立名稱。

相關問題