Jenkins:创建并将SVN标记传递给ANT和Subversion标记插件

时间:2012-12-15 21:53:02

标签: svn jenkins

我正在尝试使用BUILD_NUMBER环境属性创建一个标记,我可以将其传递给我的ANT脚本(以便我可以将其写入我的WAR / JAR清单)以及在此过程中使用它标记过程由“Subversion标记插件”执行。

一个小问题是我想在使用之前对BUILD_NUMBER进行零填充。例如,如果BUILD_NUMBER为14,则我的标记看起来像1.0.0.00014。

我发现EnvInject插件有一个“评估的Groovy脚本”功能,这个脚本适合我,但我确实有问题:

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选项是否是我想要做的最佳方式?
  • 是否有更直接的API来获取“此构建”而不是通过Jenkins.instance.getItem()?我知道这有效,但似乎很脆弱,因为约伯的名字可能随时改变,从而破坏剧本。我尝试了manager.build.getEnvironment(manager.listener)['BUILD_NUMBER'],但收到[EnvInject] - [ERROR] - SEVERE ERROR occurs: No such property: manager for class: Script1
  • 错误

如果它有助于我运行Jenkins v1.488,Jenkins Subversion标记插入v1.16和环境注入器插入v1.73。

提前致谢,

马特

1 个答案:

答案 0 :(得分: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

它很棒!