2012-12-15 31 views
1

我試圖使用BUILD_NUMBER環境屬性創建一個標記,我可以傳遞給我的ANT腳本(以便我可以將它寫入我的WAR/JAR清單)以及在由「Subversion Tagging Plugin」執行的標記過程中使用它。Jenkins:創建並將SVN標記傳遞給ANT和Subversion標記插件

一個小小的複雜情況是,我想在使用之前零點填充BUILD_NUMBER。例如,如果BUILD_NUMBER是14,我的標籤看起來像1.0.0.00014。

我發現它有一個「評估的Groovy腳本」功能,這劇本對我的作品的EnvInject插件,但我確實有疑問:

import jenkins.model.* 

def tagPrefix = "1.0.0." 
def env = Jenkins.instance.getItem("BnL Build").getLastBuild().getEnvironment() 
def buildNumber = env['BUILD_NUMBER'] 
def tag = tagPrefix + buildNumber.padLeft(5,'0') 

def map = [AP_SVN_TAG: tag] 

return map 

的問題是:

  • 是EnvInject選項甚至是我想要做的最好的方式?
  • 是否有比通過Jenkins.instance.getItem()更直接的API來獲取「此版本」?我知道這是有效的,但由於任務的名稱隨時可能改變,從而破壞劇本,這似乎很脆弱。我嘗試manager.build.getEnvironment(manager.listener)['BUILD_NUMBER'],但我得到一個錯誤,[EnvInject] - [ERROR] - SEVERE ERROR occurs: No such property: manager for class: Script1

如果有幫助我運行Jenkins v1.488,Jenkins Subversion Tagging Plugin v1.16和Environment Injector Pluging v1.73。

由於提前,

馬特

回答

1

該插件目前已被gboissinot更新到1.75版本,使變量currentJobcurrentBuild提供給Groovy腳本。所以我新的Groovy腳本是:

import jenkins.model.* 

def tagPrefix = "1.0.0." 
def buildNumber = currentBuild.getNumber().toString() 
def tag = tagPrefix + buildNumber.padLeft(5,'0') 

def map = [AP_SVN_TAG: tag] 

return map 

它的工作原理非常棒!