- Gitlab 管理代码仓库
- Jenkins 管理项目发布
准备一台虚拟机,我使用的是 ubuntu20
, 8g内存,4核cpu
假设我们的开发团队有三个人,一个是 leader
,另外两个是普通 developer
,他们分别负责 projectA
, projectB
,在这个背景下搭建一套代码管理和发布方案
Gitlab
安装
1 | sudo apt-get update |
绑定 host
,访问面板
- 192.168.56.58 gitlab.example.com
1 | # 获取管理员初始密码 |
设置
- 首次登陆管理员账号,需要修改密码,因为临时密码24h过期
- 作为企业内部项目,我们需要关闭注册功能
- 设置为中文
新增用户和项目
新增用户
新增了两个用户 test1
, test2
密码都修改为 a123456.
使用浏览器无痕模式登录 test1
测试
这里要求修改密码,我把他更改为 aa123456.
新增项目
分别给 test1
, test2
对应项目的权限
在用户 test1
test2
的主面板中刷新就可以看到拥有对应的项目了
拉取项目
我们在本机拉取项目
1 | cd ~/code/dev/test |
尝试用 test1
拉取 projectB
1 | # 注意这里加入了选项不要 ssl 验证 |
可以看出我们克隆失败了
切换回对应的账号拉取项目
1 | git -c http.sslVerify=false clone https://test1:aa123456.@gitlab.example.com/root/projecta.git |
修改并推送
修改项目中的代码并尝试提交
1 | cd projecta |
可以看到推送失败了,这是因为 main
分支是一支被保护的分支,它不允许直接推送
因此我们需要在内部定义一套规则:
main
分支作为正式项目同步的分支,开发人员拉取的时候也是拉取这个分支作为项目基础main
分支内部协定只能由dev
分支发起合并请求- 本地开发的时候可以新起功能分支,开发完毕本地
merge
到dev
分支,并推送,然后到gitlab
面板发起合并请求,管理人员code review
无误以后通过合并 - 如果有需要,可以以
dev
分支的代码部署一个线上测试环境
管理员面板新建一个 dev
分支,我们把刚刚改的代码推送到这个分支上
1 | git checkout -b dev |
此时切换到管理员面板,可以看到申请合并的分支,我们可以在查看代码以及询问测试验收结果以后同意合并或者拒绝合并
可以看到 projectA
的 README.md
文件的内容已经变成 1
项目代码版本管理和发布-2到这里我们介绍了
gitlab
的代码版本管理,下一个篇章,介绍如何通过 jenkins 去控制发布项目,为什么没有使用hook action
,是因为觉得全部自动发布,中间如果有什么环节临时要改,会产生一些不可控的因素,所以还是决定通过在jenkins
点击触发发布