【问题标题】:In Grails, how can I append a build number when using 'set-version'在 Grails 中,使用“set-version”时如何附加内部版本号
【发布时间】:2011-02-17 03:40:22
【问题描述】:

我正在使用 Jenkins (Hudson) 和 Grails 插件在更新 svn 时进行构建。我找到了这个示例脚本,它允许您从 env var 中合并内部版本号:

set-version 1.1.0.${env['BUILD_NUMBER']}

但正如您所见,前缀是硬编码的。我想使用 application.properties 文件中设置的版本号。我该怎么做:

set-version ${app.version}.${env['BUILD_NUMBER']}

尝试了各种作用域/语法都无济于事。

【问题讨论】:

    标签: grails jenkins


    【解决方案1】:

    开箱即用是不可能的。 Jenkins 或者特别是 Grails 插件不会读取 application.properties 文件的内容,因此现有的应用程序版本不能作为变量使用。

    您可能需要考虑在您的应用程序中编写一个自定义脚本(如append-version),该脚本将读取application.properties 并附加传入的值。您可以调用现有的set-version 脚本来修改参数。

    我还创建了一个简单的脚本来完成这项工作:

    includeTargets << grailsScript("Init")
    
    target(main: "Append a string to the existing version number") {
        depends(checkVersion, parseArguments)
    
        def newVersion = metadata.'app.version' + '-' + args
        metadata.'app.version' = newVersion
        metadata.persist()
    }
    
    setDefaultTarget(main)
    

    【讨论】:

    • 谢谢。我正在尝试您的建议,但我坚持使用我的调用“set-version”脚本。我怀疑我需要通过 includeTargets 和 grailsS​​cript 包含 SetVersion groovy 文件,但是在查看 SetVersion 脚本后,我不知道在包含之后要调用什么。
    • 是的。使用 grails 脚本依赖项是一个小挑战。我会试着用一个例子回来。
    • 这确实成功了,我花了一段时间才弄明白。构建号每次都会附加附加(例如 3.0.1、3.0.1.2、3.0.1.2.3),因此请务必在构建过程中执行“svn revert”或等效操作,因为 application.properties 文件是变了。
    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多