【问题标题】:Jenkins: Create and Pass SVN Tag to ANT and Subversion Tagging PluginJenkins:创建 SVN 标记并将其传递给 ANT 和 Subversion 标记插件
【发布时间】: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。

提前致谢,

马特

【问题讨论】:

    标签: svn jenkins


    【解决方案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-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2012-04-10
      • 2020-12-14
      相关资源
      最近更新 更多