Grails3.x和Jenkins:部署时保存构建号和日期

Grails3.x和Jenkins:部署时保存构建号和日期,grails,jenkins,groovy,deployment,build,Grails,Jenkins,Groovy,Deployment,Build,我有一个Grails3.1应用程序,它是用Jenkins构建和部署的。现在我正在寻找一种方法,在我的Grails应用程序中保存和其他几个变量,以便稍后在GSP中显示它们 我发现了,但它似乎只适用于Grails2.x应用程序?我还考虑了grails3.x应用程序中“\u Events.groovy”文件的“src/main/scripts”文件夹的新位置 有人能帮我在grails应用程序中动态获取构建编号和日期,例如在页脚中显示它们吗 谢谢 Grails2.x构建系统基于。当执行给定的甘特脚本时,

我有一个Grails3.1应用程序,它是用Jenkins构建和部署的。现在我正在寻找一种方法,在我的Grails应用程序中保存和其他几个变量,以便稍后在GSP中显示它们

我发现了,但它似乎只适用于Grails2.x应用程序?我还考虑了grails3.x应用程序中“\u Events.groovy”文件的“src/main/scripts”文件夹的新位置

有人能帮我在grails应用程序中动态获取构建编号和日期,例如在页脚中显示它们吗


谢谢

Grails2.x构建系统基于。当执行给定的甘特脚本时,它可以触发某些事件,您可以将这些事件挂钩并提供自定义行为。一个这样的事件是
eventCreateWarStart
,这就是
\u Events.groovy
脚本在您提供的链接中所做的

Grails3.x使用Gradle作为构建系统。因此,任何以前存在的甘特脚本都必须转换为使用Gradle

显示 要执行类似于您提供的链接的操作,即将
实现版本号
属性附加到清单文件中,您需要将其添加到Grails 3项目的
Build.gradle
文件中:

task addBuildNumber() {
    def unknownValue = 'UNKNOWN'
    def buildNumberEnvironment = 'BUILD_NUMBER'
    def buildNumberProperty = 'build.number'
    def buildNumber = System.getenv(buildNumberEnvironment)

    if (!buildNumber) {
        buildNumber = System.getProperty(buildNumberProperty, unknownValue)
    }

    war {
        manifest { attributes "Implementation-Build-Number": buildNumber }
    }
}

tasks.war.dependsOn(addBuildNumber)
我们被称为
addBuildNumber
并将现有的
war
任务配置为在调用时依赖于
addBuildNumber
addBuildNumber
任务尝试检索生成号并将其附加到war清单中

意见 在视图中获取内部版本号和其他变量有点不同。要使其正常工作,需要将所有感兴趣的变量添加到
application.yml
文件中。让我们将带有占位符的内部版本号添加到已经存在的元数据中:

info:
  app:
    name: '@info.app.name@'
    version: '@info.app.version@'
    grailsVersion: '@info.app.grailsVersion@'
    build-number: '@info.app.build-number@'
然后,您需要在页脚gsp页面中呈现它,其中
名称
application.yml
中的配置属性:

<footer>
    <span class="build-number"><g:meta name="grails.info.app.build-number"/></span>
</footer>

当您将ReplaceTokens类与“filter”操作一起使用时,结果是一个模板引擎,该引擎用一组给定的值替换形式为“@tokenName@”(Apache Ant样式的令牌)的令牌


非常感谢您提供的详细信息!这对我帮助很大!但有一个小错误。它必须是GSP中的“”。注意:“grails.”必须从name参数中删除。非常感谢你。
processResources {
    def unknownValue = 'UNKNOWN'
    def buildNumberEnvironment = 'BUILD_NUMBER'
    def buildNumberProperty = 'build.number'
    def buildNumber = System.getenv(buildNumberEnvironment)

    if (!buildNumber) {
        buildNumber = System.getProperty(buildNumberProperty, unknownValue)
    }

    filter(ReplaceTokens, tokens: ['info.app.build-number': buildNumber])
}