1

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

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

我找到了具有“Evaluated Groovy script”功能的 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 选项甚至是我想做的最好的方法吗?
  • 有没有比 via 更直接的 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 Tagging Pluging v1.16 和 Environment Injector Pluging v1.73。

提前致谢,

马特

4

1 回答 1

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

而且效果很好!

于 2012-12-22T02:51:32.830 回答