请教利用 gitlab-ci 在发 merge request 的时候去执行 sonarqube 代码扫描的正确姿势

2023-02-15 14:33:57 +08:00
 paranoiagu
目前情况:
1 、代码在公司自己的 gitlab 服务器。
2 、root 下建项目,每个用户 fork 。
3 、然后在自己的项目上开发,开发完成后,发 mr 到 root 的 develop 分支。项目 master review mr 的代码,无异议后 merge 。

现在需求:希望在 mr 发出后,先通过 sonarqube 扫描代码。通过质量门禁后,才可以合并。

现在的做法:
1 、root 下的项目打开 ci/cd 功能,设置必须通过代码扫描才能合并。
2 、sonarqube 、gitlab 已经配置完成。
3 、.gitlab-ci.yml 文件写好。

现在的问题:
1 、项目 master 或 owner 角色,去发其他任何用户的 mr ,正常触发 pipelines ,且正常完成扫描。
2 、其他用户( developer 角色)发 mr ,无法触发正常触发 pipelines 。 [希望能触发]
3 、如果打开用户 fork 过的项目的 ci/cd 功能,用户的每次 commit 都将触发扫描。 [分支名称是 develop ,在 only 参数范围内,所以会扫码,希望用户的 commit 不要扫描,只要扫描 mr ]

疑问:我这种需求,是不是 only 参数只要:merge_requests ?不需要扫码 develop 分支?
888 次点击
所在节点    程序员
3 条回复
cheng6563
2023-02-15 14:50:31 +08:00
test:
stage: test
script:
- JAVA_HOME=$JAVA_8_HOME ./mvnw test
only:
refs:
- merge_requests
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"



类似这样就行了
paranoiagu
2023-02-15 14:56:34 +08:00
@cheng6563 我来试试。
刚才还发现,如果 only 是 merge_requests ,fork 的项目不会扫描,但是 mr 也不触发。
paranoiagu
2023-02-15 15:23:32 +08:00
发现 master 或 owner 在 mr 的 Pipelines 下点击一下就触发了。必须手工触发。developer 发的 mr 不能自动,手动点击也会报错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX