生产环境hotfix部署流程

针对生产环境发布新版本后有bug需要紧急修复的情况,协作流程思路:新建对应的hotfix补丁分支,相关开发人员基于hotfix分支进行bug修复,修复完毕验证无误后,同样通过Merge Request合并至主仓库,然后由hotfix分支构建重新发布至生产。

      其中Master成员负责tag和branch的创建,全体相关开发人员基于分支进行开发。详细流程如下(以JIRA Sprint 31为例,该迭代结束后需要发布版本R-XYPJ-S-CAMS-0.11.0)

     

      一. Master成员:

       1. 迭代结束后生产上线,上线后打tag,tag名:R-XYPJ-S-CAMS-0.11.0,tag名与JIRA中发布版本保持一致,随后每次发布变更小版本号

       2. 如果生产发现问题需要修复,建立分支B-R-XYPJ-S-CAMS-0.11.0,branch名以“B-”开头,后面加上JIRA发布版本,同时在GitLab上将分支设为受保护。例如B-R-XYPJ-S-CAMS-0.11.0,该分支永久存在。

       3. 当相关人员代码开发修复后,处理Merge Request,基于主仓库的B-R-XYPJ-S-CAMS-0.11.0分支再次构建发布新版本,每次发布生产后,再次打tag,同时tag中小版本号递增,例如修复若干bug重新发布后,新的tag名为:R-XYPJ-S-CAMS-0.11.1,再修复若干bug重新发布后,新的tag名为R-XYPJ-S-CAMS-0.11.2,以此递增。

       

      二. 相关开发人员:

       1. 明确当前生产环境问题基于哪个branch进行修复, 可询问Master成员。例如, 当前bug修复分支为:B-R-XYPJ-S-CAMS-0.11.0

       2. 本地运行 git fetch upstream 更新远端repo的信息。

       3. 本地运行 git branch -a, 查看所有分支。输出结果中应该可以看到远端分支:remotes/upstream/B-R-XYPJ-S-CAMS-0.11.0

       4. 本地运行git checkout B-R-XYPJ-S-CAMS-0.11.0,切换至hotfix分支

       5. 在 B-R-XYPJ-S-CAMS-0.11.0分支上修改,提交。

       6. 本地运行git push origin B-R-XYPJ-S-CAMS-0.11.0,将更改提交至个人仓库origin。

       7. 在Gitlab上发起Merge Request, 从 origin/B-R-XYPJ-S-CAMS-0.11.0 -> upstream/ B-R-XYPJ-S-CAMS-0.11.0

       8. 注意必要情况下使用cherry-pick,例如B-R-XYPJ-S-CAMS-0.11.0上修复的内容同时需要合并到master,则:git checkout master,切换到master分支,然后执行 git cherry-pick [commit-id],合并无误后,push到origin master并提MR到upstream master。反之,如果要同步master上一个commit到B-R-XYPJ-S-CAMS-0.11.0同样方法进行操作。

     

      三. 相关命令参考

      1. 分支操作

## 查看分支

git branch -a

 

## 新建分支

git checkout -b B-R-XYPJ-S-CAMS-0.11.0

## 从某个commit新建分支,后面跟commit id

git checkout -b B-R-XYPJ-S-CAMS-0.11.0 8c8ecc322753c36ff49d01b490a882485a1c3e59

## 从tag创建分支 git branch

git branch  B-R-XYPJ-S-CAMS-0.11.0  R-XYPJ-S-CAMS-0.11.0

 

## 删除本地分支(参数可以是-d或者-D,-d是处于别的分支时删除,-D是强制删除)

git branch -d B-R-XYPJ-S-CAMS-0.11.0

## 删除远程分支

git push origin --delete B-R-XYPJ-S-CAMS-0.11.0

git push upstream --delete B-R-XYPJ-S-CAMS-0.11.0

 

## 推分支到远程

git push origin B-R-XYPJ-S-CAMS-0.11.0

git push upstream B-R-XYPJ-S-CAMS-0.11.0

      2. tag操作

## 查看tag

git tag -l

 

## 新建tag,

git tag -a R-XYPJ-S-CAMS-0.11.0 -m "Sprint 31发布版本0.11.0"

 

## 如果要从某个commit打tag

git tag -a R-XYPJ-S-CAMS-0.11.0 8c8ecc322753c36ff49d01b490a882485a1c3e59 -m "Sprint 31发布版本0.11.0"

 

## 删除tag

git tag -d R-XYPJ-S-CAMS-0.11.0

## 删除远程tag

git push origin --delete tag R-XYPJ-S-CAMS-0.11.0

git push upstream --delete tag R-XYPJ-S-CAMS-0.11.0

 

## 获取远程tag

git fetch upstream tag R-XYPJ-S-CAMS-0.11.2

## 推tag

git push origin R-XYPJ-S-CAMS-0.11.0

git push upstream R-XYPJ-S-CAMS-0.11.0

## 推所有tag

git push origin --tags

      3. cherry-pick

## 单个commit, git cherry-pick加commit id

git cherry-pick d01b490

## 多个commit,git cherry-pick commitid1..commitid100,中间两个点

## 注意,不包含第一个commitid , 即  git cherry-pick (commitid1..commitid100]

git cherry-pick d01b490..a1c3e59

你可能感兴趣的:(bug,git)