【发布时间】:2012-12-15 21:53:01
【问题描述】:
我正在尝试使用 BUILD_NUMBER 环境属性创建一个标签,我可以将其传递给我的 ANT 脚本(以便我可以将其写入我的 WAR/JAR 清单)以及在标记期间使用它“Subversion Tagging Plugin”执行的过程。
一个小麻烦是我想在使用之前对BUILD_NUMBER 进行零填充。例如,如果BUILD_NUMBER 是 14,我的标签看起来像 1.0.0.00014。
我发现 EnvInject 插件具有“Evaluated 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 选项是否是完成我想做的事情的最佳方式?
- 是否有比通过
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 Pluging v1.16 和 Environment Injector Pluging v1.73。
提前致谢,
马特
【问题讨论】: