显示导航

将提交信息添加到您的365bet地区应用程序

知道应用程序正在运行的确切代码版本很重要

科林·哈灵顿

365bet地区版本 3.3.1

365bet地区培训

365bet地区培训由创建并积极维护365bet地区框架的人们开发和交付

入门

在本指南中,我们将git commit信息添加到您的grails构建工件并运行应用程序中。

  • 提交信息封装在构建的工件中

  • 识别环境中正在运行哪些特定代码的快速权威方法

  • 此解决方案不依赖外部跟踪机制

  • 调查问题时的透明度和可重复性

如果您喜欢摘要结帐tl博士

您将需要什么

要完成本指南,您将需要以下内容

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

  • 安装了JDK或更高版本JAVA首页适当配置

如何完成指南

要开始,请执行以下操作

要么

365bet地区指南存储库包含两个文件夹

  • 初始初始项目通常是一个简单的365bet地区应用程序,其中包含一些其他代码,可以帮助您快速入门

  • 完成一个完整的示例它是按照指南中介绍的步骤进行操作并将这些更改应用于文档的结果。初始

要完成指南,请转到初始

  • 光盘进入grails指南添加初始提交信息

您可以直接前往如果你光盘进入grails指南添加提交信息完成

历史

过去有几种不同的方法可以完成此任务,值得一提

早期方法

365bet地区在365bet地区的早期,有一些方法可用于构建事件,例如eventCompileStart脚本事件groovy捕获git shagit rev解析HEAD执行文本并按照说明将其包含在应用程序中这个帖子.

应用程序属性

365bet地区365bet地区 x及以下具有应用程序属性365bet地区可用于存储提交属性的位置,这与365bet地区用于存储其应用程序名称和版本的位置相同

在此示例中,需要一些机制将更新提交信息追加到应用程序属性可能是在产生战争之前将git commit信息附加为构建步骤的构建系统

将提交信息添加到之后应用程序属性我们可以通过几种方式访问​​该元数据

  • 365bet地区365bet地区Application通过grails应用程序元数据git sha

  • 使用taglib在视图中

构建信息插件

365bet地区在365bet地区 x中流行的另一种流行方法是利用构建信息插件构建信息插件通过利用通过诸如Jenkins之类的构建系统提供的环境变量来工作

  • 建筑编号

  • 建置ID

  • 内置标签

  • SVN版本

  • GIT委员会

  • GIT分支

然后,通过访问buildInfo终点

编写申请

有两个基本步骤

让我们开始吧

Gradle插件

365bet地区365bet地区 x的功能之一是应用程序与Gradle打包在一起作为构建工具

与其实施我们自己的机制来捕获git commit信息,我们可以利用gradle git属性插件该插件的目的是捕获提交信息并将其存储在名为git属性

添加Gradle插件相当简单,这涉及几个步骤

  1. 将依赖项添加到构建脚本封锁建立gradle这意味着您将依赖性添加到构建中,而不是可交付应用程序中

  2. 确保构建脚本依赖关系将通过适当的Maven存储库解决

  3. 应用插件

完成构建gradle
buildscript存储库Maven网址"https插件gradle org m"依赖类路径"gradle插件com gorylenko gradle git属性gradle git属性"应用插入: "com gorylenko gradle git属性"

现在,每次应用程序被编译或专门运行时,Java插件任务您会发现已经生成了git属性。在本地运行该应用程序时,可能会在以下位置找到该文件建立资源主要的git属性当包装成战争罐或独立罐时,您会发现git属性包括在WEB INF类:

解压缩l构建库完整的war grep git属性WEB INF类git属性

检查中git属性揭示捕获的提交信息

git branch master git commit id d bb fc aae cd ddd git commit id abbrev d git commit用户名Colin Harrington电子邮件保护git commit message short添加gradle git properties插件git commit message full添加gradle git properties plugin git提交时间

通过配置gradle任务,可以配置影响如何生成git属性的方法建立gradle).

gitProperties dateFormat"yyyy MM dd T HH mmZ"dateFormatTimeZone"MST"
}

Spring Boot执行器端点

现在,我们已经捕获了git commit信息,并通过git属性是时候利用它了

365bet地区365bet地区 x基于Spring Boot,我们可以利用应用程序中已经包含的一些基础工具

Spring Boot包含许多附加功能,可帮助您在将应用程序推送到生产环境时对其进行监视和管理。您可以选择使用带有JMX的HTTP端点,甚至通过远程Shell SSH或Telnet来管理和监视应用程序。自动应用到已内置一些生产就绪功能的应用程序

Spring Boot内置了一个名为弹簧启动器提供这些端点的端点默认情况下处于禁用状态,因此第一步是启用它们


如果你打开grails应用配置会议应用yml您会发现一个如下所示的配置块

grails应用配置会议应用yml
弹簧执行器端点默认为禁用
终点:
    已启用: 

您只需通过设置启用执行器端点启用true

grails应用配置会议应用yml
终点:
    已启用: 真正

运行应用程序

要运行该应用程序,请使用gradlew bootRun命令将在端口上启动应用程序

在运行应用程序后启用执行器端点后,可以转到信息终点在http本地主机信息并且您应该看到一些JSON格式的信息,例如

{
    一种pp: {
        ñ一种: "完成",
        G[R一种一世s[Rs一世ñ: "3.2.6",
        [Rs一世ñ: "0.1"
    },
    G一世Ť: {
        C一世Ť: {
            Ť一世: "Ť",
            一世d: "f"
        },
        b[R一种ñCH: ""
    }
}

组态

您可能不想启用所有默认执行器端点的数量如果您只想启用信息您将要设置的端点端点信息已启用true通过配置并离开端点启用false:

弹簧执行器端点默认为禁用
终点:
    已启用: 
    信息:
        已启用: 真正
您应注意,启用所有在执行器端点上可能会打开一些您可能不想暴露的端点http docs spring io spring boot docs当前参考html生产就绪端点html

配置显示的提交信息

您可能已经注意到信息端点只是以下属性的一个子集git属性例如缩写的sha commit time和branch您可以通过配置来显示完整的git属性,方法是设置管理信息git模式已满

您将在grails应用配置会议应用yml

完整的grails应用配置会议应用yml
管理:
    信息:
        围棋:
            模式: 充分

然后,当您重新启动应用程序并访问信息终点在http本地主机信息你应该看到类似

{
    一种pp: {
        ñ一种: "完成",
        G[R一种一世s[Rs一世ñ: "3.2.6",
        [Rs一世ñ: "0.1"
    },
    G一世Ť: {
        C一世Ť: {
            ss一种G: {
                F: "启用弹簧执行器端点",
                sH[RŤ: "启用弹簧执行器端点"
            },
            Ť一世: "Ť",
            一世d: "eb c acb acf f a",
            一世d.一种bb[R: "",
            s[R: {
                一种一世: "电子邮件保护",
                ñ一种: "科林·哈灵顿"
            }
        },
        b[R一种ñCH: ""
    }
}
在引擎盖下,这种行为是由GitInfo贡献者InfoEndpoint是可扩展的,并将汇总所有启用的Bean实施组织springframework引导启动信息InfoContributor

而且我们可以添加一个功能测试验证Git信息是否出现在其余响应中

365bet地区数据存储其余客户端您的插件依存关系

完成构建gradle
测试编译"组织grails grails数据存储区其余客户端"
完整的src集成测试groovy演示InfoSpec groovy
演示进口 grails插件rest client RestBuilder
进口 grails测试mixin集成集成
进口 grails交易回滚
进口 spock lang规格

积分
 信息规格 延伸规格定义 "测试git commit信息出现在JSON中"() {
        给定RestBuilder的休息RestBuilder的什么时候:
        定义休息休息"HTTP本地主机${服务器端口}信息"标头"接受", "应用程序json")
        }

        然后分别显示statusCode值200resp json resp json git resp json git提交resp json git提交消息resp json git提交时间resp json git提交ID resp json git提交用户resp json git分支

环境配置

向您的应用程序添加git commit信息对于调试和透明化非常方便。默认的简单模式仅公开了sha时间和分支名称。有些组织希望在其更敏感的环境中进一步限制commit信息。

一种方法是利用每个环境配置根据环境不同地启用禁用和配置端点,例如,如果只想在生产环境中启用简单模式,则可以使用以下配置

完整的grails应用配置会议应用yml
环境:
    :
        管理:
            信息:
                围棋:
                    模式: 简单

必要时保护端点

除了特定于环境的配置外,某些组织可能希望将使用限制为仅通过身份验证的用户或一组特定的角色。这可以通过插入安全性插件来实现。我们将使用Spring Security作为规范示例。信息365bet地区端点不是365bet地区控制器,因此,如果使用默认的基于注释的方法,则必须配置grails插件springsecurity controllerAnnotations staticRules.

grails插件springsecurity controllerAnnotations staticRules图案: '/',               访问: ['allowAll']],
   [图案: '错误',          访问: ['allowAll']],
   [图案: '指数',          访问: ['allowAll']],
   // ...
   [图案: '信息',           访问: ['角色管理', 'isFullyAuthenticated']]
]

请求地图要么简单的地图安全配置方法使用了请求的surl,因此它们不需要任何特殊的处理。Security Core的插件文档更多

tl太久没读

摘要

  • 添加gradle git properties插件

  • 通过以下方式启用执行器端点端点信息已启用true要么启用端点

  • 配置安全根据需要的端点

  • …​

  • 享受准确知道正在运行哪个版本的代码的乐趣利润)