zoukankan      html  css  js  c++  java
  • git flow

    研发开发git分支模型

     
     

     

    15155752120953.jpg

     

    1.发布流程

    #开始发布
    mvn -DpushRemote=true -DallowSnapshots=false  gitflow:release-start
    #发布完成
    mvn -DpushRemote=true -DallowSnapshots=false -DskipTestProject=true -DkeepBranch=false -DdigitsOnlyDevVersion=true gitflow:release-finish

    规范下上线版本:前提是,如果想和产品提的版本号做对齐的话.

    1.后面每次新的上线,版本号都要往上迭代,
    2.如果单次上线有问题,需要重新上,可以打以下几个版本号,如:
       1.1.1,
       1.1.1-Alpha,
       1.1.1-Beta,
       1.1.1-Final
       理论上一次上线不应该超过4个版本.
       如果单次上线超过了4次,我们可以一起再讨论下具体解决的细节.

    2.新特性开发

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

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

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

    3.bug修复

    mvn gitflow:hotfix-start # 确定分支版本,如1.0.8.OSS
    git push origin hotfix/1.0.8.OSS
    mvn gitflow:hotfix-finish
    git push origin develop
    git push origin master
     

    特性开发

    编辑
    从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.上线完成

    线上回归测试通过后.需要执行上线结束的相关工作,这时在项目执行emoticon_unhappy当然,这步可能提前到步骤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
  • 相关阅读:
    迁移Veil:手工打造Windows下编译的免杀Payload
    设置快速的debian源的方法:
    最新织梦的一个延时注入
    关于web后门权限防删的一个新思路
    安全狗两个中危提权+NET提权
    python抓取中文网页乱码通用解决方法
    SSRF漏洞的挖掘经验
    Hive中自定义Map/Reduce示例 In Java
    Hive学习之Locking
    Cloudera Manager及CDH最新版本安装全程记录
  • 原文地址:https://www.cnblogs.com/redBack/p/12921747.html
Copyright © 2011-2022 走看看