cicd 结合git的版本控制概要

cicd 结合git的版本控制概要
首先,不同项目不同团队git的规范和习惯会有区别
使用原生git更自由和定制化,为了简单不少项目会选择git flow的方案
使用git flow的,一方面是简化规范一些操作,避免可能因不熟悉git和多人操作的冲突,因为git flow是在git的一个受约束的环境和规范下使用git,分枝管理并不如git一样自由
一般的简单项目的上线环境分为测试,预览,正式,再深入到灰度/金丝雀,ci/cd自动上线的话,需要规范好git branch/tag 和 测试/预览/正式的关系
则项目的开发流程如下
* 1 git flow feature start feature_01
在develop分枝上新建feature_01分枝
* 2 git commit -a -m "feature_01 finish"
在feature_01分枝开发完成后提交更改
* 3 git flow feature finish feature_01
将feature_01分枝merge至develop分枝,cicd自动执行布署test运行环境
* 4 git flow release start v0.1
在develop上新建v0.1分枝,在这个分枝上可以再做一部分修改,但不建议这样操作。
* 5 git commit -a -m "release_v0.1 finish"
提交修改
* 6 git flow release finish v0.1
merge release_v0.1分枝至master,cicd自动执行布署preview运行环境
发布为该次合并的结果创建tag 例如v0.1,cicd自动执行布署prod运行环境
---
补充
主要纠结在git flow和gitlab runner结合的切入点
git flow 流程里分三类master develop tag
develop对应test环境,通常都没有疑问
默认git push会提交master分枝,而tag需要手动指定
master分枝做为prod的话容易误操作,小型项目/单人维护的项目的版本控制没这么严格,太严格了反而低效,developer基本都有master操作权限。
为避免误提交至master,因此把master做为preview环境,tag作为prod环境。
也可以禁用developer的master权限,所有master在gitlab/github页面手动审核,也是种办法,这要根据个人/团队的习惯,项目规模的大小而定。
posted @ 2021-02-28 16:50  cclient  阅读(438)  评论(0编辑  收藏  举报