正文
git-commit-id-maven-plugin插件,会根据当前分支的版本号生成一个git.properties文件。git.properties内容形如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
git.branch=master git.build.host=xxx git.build.time=2022-03-01T20\:33\:43+0800 git.build.user.email=aaa@qq.com git.build.user.name=aaa git.build.version=1.0-SNAPSHOT git.closest.tag.commit.count= git.closest.tag.name= git.commit.id=6dab4430864e3e4a9fc1ba6f6b93f278100d4e2e git.commit.id.abbrev=6dab443 git.commit.id.describe=6dab443-dirty git.commit.id.describe-short=6dab443-dirty git.commit.message.full=Add README.md git.commit.message.short=Add README.md git.commit.time=2022-03-01T16\:24\:48+0800 git.commit.user.email=aa@example git.commit.user.name=aa git.dirty=true git.remote.origin.url=http://hello git.tags= git.total.commit.count=1 |
如何使用
本文以springboot项目为例,springboot项目的parent pom里面已经内嵌git-commit-id-maven-plugin插件管理依赖。如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
< pluginManagement > < plugins > < plugin > < groupId >pl.project13.maven</ groupId > < artifactId >git-commit-id-plugin</ artifactId > < executions > < execution > < goals > < goal >revision</ goal > </ goals > </ execution > </ executions > < configuration > < verbose >true</ verbose > < dateFormat >yyyy-MM-dd'T'HH:mm:ssZ</ dateFormat > < generateGitPropertiesFile >true</ generateGitPropertiesFile > < generateGitPropertiesFilename >${project.build.outputDirectory}/git.properties</ generateGitPropertiesFilename > </ configuration > </ plugin > </ plugins > </ pluginManagement > |
项目中做如下配置
1、在我们的项目中显式引入git-commit-id-plugin插件
1
2
3
4
5
6
7
8
|
< build > < plugins > < plugin > < groupId >pl.project13.maven</ groupId > < artifactId >git-commit-id-plugin</ artifactId > </ plugin > </ plugins > </ build > |
2、通过和actuator集成,显示git信息
a、在项目中引入actuator GAV
1
2
3
4
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-actuator</ artifactId > </ dependency > |
b、浏览器访问http://ip : port/actuator/info
如果觉得上面的信息不够多,我们可以通过自定义端点或者自己写一个controller把信息展示出来
详细的信息可以通过org.springframework.boot.info.GitProperties展示
本示例以自定义端点为例。示例如下
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@Endpoint (id = "git" ) @Component public class GitEndpoint { @Autowired (required = false ) private GitProperties gitProperties; @ReadOperation public Object info() throws IOException { if (ObjectUtils.isEmpty(gitProperties)){ return new HashMap<>(); } return gitProperties; } } |
在application.yml中开放自定义端点
1
2
3
4
5
|
management: endpoints: web: exposure: include: 'git' |
浏览器访问http://ip : port/actuator/git
如果仍然觉得上述的信息还是不够详细,那可以通过解析git.properties文件显示。示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@Endpoint (id = "gitDetail" ) @Slf4j @Component public class GitDetailEndPoint { @ReadOperation public Object detail() throws IOException { Properties props = null ; try { props = PropertiesLoaderUtils.loadAllProperties( "git.properties" ); return props; } catch (IOException e) { log.error( "git.properties not found" ); } finally { } return new HashMap<>(); } } |
在application.yml中开放自定义端点
1
2
3
4
5
|
management: endpoints: web: exposure: include: 'gitDetail' |
浏览器访问http://ip:port/actuator/gitDetail
总结
git-commit-id-maven-plugin在分布式或者微服务项目中,用来验证项目版本还是挺有用的,推荐大家有机会用一下
以上就是git验证线上的版本是否符合预期的详细内容,更多关于git验证线上版本的资料请关注服务器之家其它相关文章!
原文链接:http://166z.cn/86tP