ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven-Gitflow插件发布项目

2022-07-20 14:03:37  阅读:274  来源: 互联网

标签:插件 finish develop 版本号 feature Gitflow Maven start release


特性开发

从develop分支创建feature分支, 使用之前的版本号更新pom(s), 可选择更新或不更新版本号, 默认使用feature名字更新版本号更新pom(s)

# 确保没有未提交的修改
mvn -DpushRemote=true gitflow:feature-start
# 输入feature名称
# 检查所有出现版本号的位置是否被正确修改
# 进行开发
# 提交所有未提交的修改
将feature分支merge到develop分支, 使用之前的版本号更新pom(s), 删除feature分支

mvn -DskipTestProject=true gitflow:feature-finish
# 选择要完成的feature名称(可以同时有多个feature)
# 检查所有出现版本号的位置是否被正确修改
# -DskipTestProject=true 跳过测试
# -DkeepBranch=true 保留分支
git push origin develop:develop
# 可选的 触发ci发布新版本

BUG修复

mvn -B -DhotfixVersion=1.6.0-fixOrder gitflow:hotfix-start

# 做bug修复的代码提交,提交完了执行
git push origin hotfix/1.6.0-fixOrder

# 上线完毕后执行finish
mvn -DskipTestProject=true gitflow:hotfix-finish

项目发布

1.准备上线产物

切换到项目develop分支并执行

mvn -DpushRemote=true -DallowSnapshots=false  gitflow:release-start

PS: !!!执行完上面的操作,会自动同步release分支到远端仓库,这里配置了自动构建,如gitlab-ci,请静静的等待CI的结束

2.执行预发布操作

进入部署工具,如jenkins,将正式版本的产物如1.1.0,部署到预生产环境进行初步验证.没有预生产环境?好吧,那就使用测试环境替代.

3.预发布环境回测

配合QA进行预生产环境产物的验证.验证不通过,将原来的发布分支删除,不需要做finish操作.然后从develop再次做release-start的操作.这时会出一个小版本的产物,如1.1.1.(原则:仅在产物部署到生产环境,才做release-finish)

4.执行上线操作

进入部署工具,如jenkins,将正式版本的产物如1.1.0,部署到生产环境完成上线.

6.上线完成

线上回归测试通过后.需要执行上线结束的相关工作,这时在项目执行:(当然,这步可能提前到步骤3和步骤5进行,并重新开一个新的小版本产物出来)

mvn -DskipTestProject=true gitflow:release-finish

最佳实践:

  1. 验证并修复maven版本号的工具[有必要时候再做]
mvn -B build-helper:parse-version org.codehaus.mojo:versions-maven-plugin:2.5:set -DnewVersion=1.0.0-SNAPSHOT
  1. 请熟悉参考资料里的参数,有惊喜.

参考资料

Maven-Gitflow插件参数说明

参数说明生命周期其他
skipTestProject 是否跳过maven的test goal,默认false release-start release-finish xxx-finish  
skipFeatureVersion 控制是否跳过feature名追加到maven项目版本号后面,默认是false feature-start  
featureNamePattern 特性分支名称规则 feature-start  
allowSnapshots 是否允许有Snapshot的依赖 release-start release-finish  
commitDevelopmentVersionAtStart   release-start release-finish  
fromCommit 控制从哪次提交开启发布动作 release-start  
fetchRemote 是否同步远端分支到本地分支,默认true xxx-start  
pushRemote 是否同步到远端分支,默认false xxx-start xxx-finish start默认不会推送,finish默认推送.
keepBranch 本地是否保留分支,默认false xxx-finish pushRemote为true,keepBranch为false,则会同步删除远端的分支
skipTag 是否跳过Tag,默认值为false,(对于release和hotfix的操作,会打tag) release-finish hotfix-finish  
digitsOnlyDevVersion 是否移除版本号额外的标志,默认false. release-finish 如,release的版本号:1.1.0-Final,下一个develop的版本号会是:1.1.1-SNAPSHOT
versionDigitToIncrement 下个develop版本从哪个位置迭代,默认为空.可指定(0,1,2,3…) release-finish 如versionDigitToIncrement=1,release版本号是1.2.3.4 ,则下一个版本号会是:1.3.0.0-SNAPSHOT
commitDevelopmentVersionAtStart 控制develop分支的版本号变更的时机,默认为false release-start release-finish true:在开始做release的时候,也就是release-start的时候,先把develop分支的版本号变更到release的版本号,紧接着完成release分支的创建后,把版本变更到下一个版本号 false:在release分支做finish操作合并并到develop和master后触发develop版本的变更
useSnapshotInHotfix 是否允许使用快照方式发布hotfix hotfix-start hotfix-finish  
releaseRebase 是否采用rebase的方式进行合并,默认false,使用merge的操作    
preReleaseGoals 执行release操作前执行的maven的goals   如,-DpreReleaseGoals=test
postReleaseGoals 执行release操作后需要执行的maven goals   如 -DpostReleaseGoals=deploy
featureName -B模式下指定分支名 feature-startfeature-finish  
fromBranch -B模式下指定从那个分支开出 hotfix-start  
hotfixVersion -B 指定版本号 hotfix-start hotfix-finish  
featureName -B模式下指定分支名 feature-startfeature-finish  
developmentVersion -B模式下指定develop版本号 release-finish  
releaseVersion -B模式下指定release版本号 release-start  

相关连接

标签:插件,finish,develop,版本号,feature,Gitflow,Maven,start,release
来源: https://www.cnblogs.com/0001b/p/16497724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有