Administrator
Administrator
Published on 2024-10-28 / 36 Visits
0
0

IT产品研发Gitlab flow管理方案

IT产品研发Gitlab flow管理方案

角色与职责

  • Developer:开发人员,在各自的代码分支里面进行功能开发,开发完成之后发起Merge Request,请求代码合并
  • Master:开发Leader,负责开发、成员管理、代码审查与合并
  • Owner:项目管理人员,具有Developer与Master权限的同时,可对项目进行管理,包括修改项目名、删除项目等

具体的权限分配参见:https://docs.gitlab.com/ee/user/permissions.html

分支管理

  • feature分支:每个开发人员的开发分支,每天需要将代码push到该分支
    • 命令:git add . --> git commit -m "message" --> git push origin <your_branch_name>
    • 开发人员分支命名一般规则:feature/<your_name>
    • 开发人员每天开发之前需要先同步develop分支代码到自己的开发分支,避免过多冲突,指令:git pull origin develop
  • develop分支:所有开发人员代码汇总的主分支
    • 开发人员代码自测没有问题之后,发起merge request,请求将个人feature分支的代码合并到该分支
    • 开发Leader收到merge request之后,通过Gitlab审查代码,通过之后将分支合并
  • release分支,develop分支处于快速迭代之中,因此在完成某一阶段功能开发的时候,将相对稳定的develop分支代码合并到release分支,供测试人员测试,测试之中产生的bug也在该分支进行,修复完成之后注意将修改内容合并到开发分支中
    • 一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支
    • 不同开发人员的release修复需要创建分支,例如:release/<your_branch_name>, 修复完成之后合并到release主分支
  • master分支,本方案中发行版代码的最终来源,release分支代码经测试无误之后,合并到master分支打上tag,为最终发行做准备
  • hotfix分支,用于修复线上版本的紧急bug,当线上版本出现紧急bug的时候,将线上版本代码从master分支中pull到hotfix分支,在hotfix分支上将bug修复之后,代码同步到develop分支并合并到master分支打上tag
    • 不同开发人员的bug需要创建不同的分支进行修复,如hotfix/<your_branch_name>,修复完成之后合并到hotfix主分支

分支工作流程

  • 初始分支
    • 所有在Master分支上的Commit应该Tag

image

  • Feature 分支
    • 分支名 feature/*
    • Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留

image

  • Release分支
    • Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
    • 发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。

image

  • 维护分支 Hotfix
    • 分支名 hotfix/*
    • hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag

image

git flow代码事例

  • a. 创建develop分支
git branch develop
git push -u origin develop 
  • b. 开始新Feature开发
git checkout -b some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature  

# 做一些改动  
git status
git add some-file
git commi
  • c. 完成Feature
git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop

git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature   
  • d. 开始Relase
git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit
  • e. 完成Release
git checkout master
git merge --no-ff release-0.1.0
git push

git checkout develop
git merge --no-ff release-0.1.0
git push

git branch -d release-0.1.0

# If you pushed branch to origin:
git push origin --delete release-0.1.0   


git tag -a v0.1.0 master
git push --tags
  • f. 开始Hotfix
git checkout -b hotfix-0.1.1 master   

g. 完成Hotfix

git checkout master
git merge --no-ff hotfix-0.1.1
git push


git checkout develop
git merge --no-ff hotfix-0.1.1
git push

git branch -d hotfix-0.1.1

git tag -a v0.1.1 master
git push --tags

参考链接


Comment