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