V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
paranoiagu
V2EX  ›  程序员

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

  •  
  •   paranoiagu · 2023-02-15 14:33:57 +08:00 · 899 次点击
    这是一个创建于 648 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前情况:
    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 分支?
    3 条回复    2023-02-15 15:23:32 +08:00
    cheng6563
        1
    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
        2
    paranoiagu  
    OP
       2023-02-15 14:56:34 +08:00
    @cheng6563 我来试试。
    刚才还发现,如果 only 是 merge_requests ,fork 的项目不会扫描,但是 mr 也不触发。
    paranoiagu
        3
    paranoiagu  
    OP
       2023-02-15 15:23:32 +08:00
    发现 master 或 owner 在 mr 的 Pipelines 下点击一下就触发了。必须手工触发。developer 发的 mr 不能自动,手动点击也会报错。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:04 · PVG 18:04 · LAX 02:04 · JFK 05:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.