gpt4 book ai didi

Grails 3.x 和 Jenkins : Save BUILD_NUMBER and date when deploying

转载 作者:行者123 更新时间:2023-12-02 14:30:15 26 4
gpt4 key购买 nike

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

我找到了this tutorial/code snippet但它似乎只适用于 Grails 2.x 应用程序?我还考虑了 Grails 3.x 应用程序中“_Events.groovy”文件的“src/main/scripts”文件夹的新位置。

任何人都可以帮助我将内部版本号和日期动态获取到我的 grails 应用程序中以显示它们,例如在页脚?

谢谢!

最佳答案

Grails 2.x 构建系统基于 Gant .当给定的 gant 脚本执行时,它可以触发某些事件,您可以 Hook 并提供自定义行为。一个这样的事件是 eventCreateWarStart ,这就是 _Events.groovy脚本在您提供的链接中。

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

显现

要执行类似于您提供的链接的操作,即附加 Implementation-Build-Number属性到 list 文件,您需要将其添加到您的 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)

我们是 defining a custom task调用 addBuildNumber并配置现有的 war依赖的任务 addBuildNumber当它被调用时。 addBuildNumber任务尝试检索内部版本号并将其附加到 war list 。

意见

在 View 中获取内部版本号和其他变量有点不同。要使其正常工作,您需要将所有您感兴趣的变量添加到 application.yml文件。让我们将带有占位符的内部版本号添加到已经存在的元数据中:
info:
app:
name: '@info.app.name@'
version: '@info.app.version@'
grailsVersion: '@info.app.grailsVersion@'
build-number: '@info.app.build-number@'

然后你需要在你的页脚 gsp 页面中使用 <g:meta> tag 渲染它。 name是来自 application.yml 的配置属性:
<footer>
<span class="build-number"><g:meta name="grails.info.app.build-number"/></span>
</footer>

最后,您需要更换 @info.app.build-number@ application.yml 中的占位符作为构建过程的一部分,我们将配置现有的 processResources通过将以下内容添加到 build.gradle 来完成任务:
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])
}

来自 Gradle documentation ,

When you use the ReplaceTokens class with the “filter” operation, the result is a template engine that replaces tokens of the form “@tokenName@” (the Apache Ant-style token) with a set of given values.

关于Grails 3.x 和 Jenkins : Save BUILD_NUMBER and date when deploying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com