请教下各位大佬:
1
virusdefender 2020-08-27 11:10:58 +08:00
ci 中加一项跑你的验证,依赖 staging 那一步,跑完了整个 ci 才结束
|
2
css3 OP @virusdefender
加了啊,问题在于,现有顺序是先提交后才触发执行 ci 。应该要先执行 ci,验证结果通过后才能 push 或 merge |
3
Chingim 2020-08-27 11:18:47 +08:00
Pipelines for Merge Requests
https://docs.gitlab.com/ee/ci/merge_request_pipelines/ |
4
maichael 2020-08-27 11:19:51 +08:00
锁分支,不给直接推送,然后手动在界面上提交合并请求
|
5
AngryPanda 2020-08-27 11:21:27 +08:00
走 MR,不要给权限直接客户端操作
|
6
virusdefender 2020-08-27 11:31:20 +08:00
@css3 你们直接 push master ? 应该用 merge request
|
7
NauxLiu 2020-08-27 11:34:01 +08:00
1. 将 master 设置为 protect branch,不允许直接 Push
2. 打开项目的 Merge Request 设置里的 Pipelines must succeed |
8
css3 OP @virusdefender 有 MR,但大家不遵守规范,一股脑提过来,要人工检查,索性就写了个脚本自动验证,这不是没按预计想的那样运行么😂😂
|
9
wxsm 2020-08-27 11:42:02 +08:00 via iPhone
我刚好也在搞这个。目前在尝试 gitlab 前面再对接一个 gerrit
|
10
wxsm 2020-08-27 11:45:46 +08:00 via iPhone
但是不太顺利,怎么说呢,gerrit 能 push 的,人也能,人不能 push 的,gerrit 也不能。ce 没有评审功能很蛋疼。
|
14
taogen 2020-08-27 12:04:20 +08:00
The branch you are building and testing on is only for building and testing.
On your dev branch if any tests fail you just fix it and push it again. |
15
skyadmin 2020-08-27 12:09:24 +08:00
master 分支设为保护分支,不允许任何人,直接推送代码至 master 分支。就可以让大家必须都在 merge request 了。
|
16
skyadmin 2020-08-27 12:10:09 +08:00
项目的 settings - repository - Protected Branches 里设
|
17
skyadmin 2020-08-27 12:14:42 +08:00
然后勾选 settings - General - Merge request,勾选 Only allow merge requests to be merged if the pipeline succeeds 。
和#7 说的一样,只是给了下具体操作路径。 |
18
1109599636 2020-08-27 12:31:20 +08:00
我的理解是个人提交到个人分支,然后个人分支跑 ci 各种流程,ci 通过了才可以 merge 到公共分支吧。如果在 commit 之前就做检查可以用 pre-commit hooks
|
19
StarUDream 2020-08-27 12:34:54 +08:00
目前用的就是 15-17 楼所说的方法,目测可以解决楼主问题。
|
20
594duck 2020-08-27 12:41:58 +08:00
|
21
nightwitch 2020-08-27 12:57:37 +08:00
禁止提交到 master,要提交到 master 发 pull request 。发 pull request 的时候自动触发 CI 测试,CI 测试不过不允许合并
|
22
zmxnv123 2020-08-27 13:04:15 +08:00
git hook?
|
23
Rwing 2020-08-27 13:09:47 +08:00
@nightwitch 这个是正解
|
24
Sapp 2020-08-27 13:43:38 +08:00
coommit 可以添加钩子啊,前端就有个叫哈士奇的,不通过 commit 都没办法提交
|
25
phy25 2020-08-27 14:21:43 +08:00 via Android
比较优雅的办法,自动提交 MR:
https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html https://docs.gitlab.com/ee/user/project/push_options.html git push -o merge_request.create -o merge_request.target=my-target-branch -o merge_request.merge_when_pipeline_succeeds |
26
janxin 2020-08-27 15:21:35 +08:00
禁止 master 分支直接提交
设置 Protected Branches 合并 MR 需要在 pipelines 执行成功 设置 Only allow merge requests to be merged if the pipeline succeeds |
27
maltoze 2020-08-27 15:26:40 +08:00
|
28
gen900 2020-08-27 15:33:51 +08:00 via iPhone
gitlab 里 没有通过 pipeline 的 merge request 不让合并的。就是你 push 后就在做 ci 了如果失败 mr 不让合并
|
29
wshcdr 2020-08-27 15:38:06 +08:00
同意 MR 的做法
|
30
otakustay 2020-08-27 20:12:44 +08:00
按照楼主的要求,其实你一开始就应该用 gerrit 而不是 gitlab
|
31
dddd1919 2020-08-27 23:10:20 +08:00
提 git 的人不按规范执行,总有方法绕过你的设置,不统一提交规范,其他的就别扯了
用 git 靠的是约定,不是靠各种限制,如果大家都不遵守约定,那就找人专门来干这事,或者换个工具吧。 统一 git flow,再用 ci 才能达到比较好的效果,比如配置 ci 在 feature 上执行,禁用 remote push master,合并 mr 前要 ci 通过,ci 同时配置 build 和 run test 等等 |
32
icylogic 2020-08-28 06:55:19 +08:00 via iPhone
我们 master/develop 任何人都不能推的,所有更改都要通过其他分支提 mr,mr 只能由 reviewer 点合并,如果 ci pipeline 挂掉或者有 conflict,合并按钮都是灰的没法点(可以选项里改)
|
33
wxsm 2020-09-23 15:27:45 +08:00
我通过 gitlab 的 webhook 和 api 自己实现了一套评审系统,详见: https://wxsm.space/posts/2020-09-23-gitlab-ce-code-review-bot.html
|
34
dengxuejiu 2022-01-12 16:07:41 +08:00
亲测可用,在 merge 之前做代码规范检查等工作还是挺好用的
|