【问题标题】:Analyze pull requests using SonarCloud使用 SonarCloud 分析拉取请求
【发布时间】:2018-02-15 19:55:47
【问题描述】:

我想使用 SonarQube 分析对我的项目提出的任何拉取请求 (PR)。

几个要点:

  • 我的项目托管在 Github 上,它是公开的,是用 C# 编写的,我使用 Appveyor 进行持续集成 (CI);
  • 我正在使用SonarCloudSonarQube 的公共实例)进行代码质量检查,它已经在分析内部 PR(即从主存储库生成的 PR,例如,将dev 分支合并到master 分支上);
  • 我希望它可以分析外部 PR(即,由我的项目的任意分支生成的 PR),这可以使用 SonarQube Github plugin
  • 最重要的是:我不会将我的 API 密钥放在任何公共文件上,Appveyor 也不会在公共 PR 上公开我的安全令牌

鉴于这些要点,这就是我所做的:

  • 创建了一个机器人并授予它对我的仓库的写入权限(如here 所述);
  • 在sonarcloud 和Administration -> Settings -> Pull Requests (Alpha) 下,我使用机器人的令牌设置Authentication token,并使用<Organization>/<Repo> 格式的我的回购地址设置Repository identifier
  • 更新我的项目的appveyor.yml 文件,以便在所有 PR 上运行 SonarQube 分析;类似于以下内容:
build_script:
choco install "msbuild-sonarqube-runner" -y
MSBuild.SonarQube.Runner.exe begin /k:"REPO" /o:"ORGANIZATION" /d:"sonar.host.url=https://sonarcloud.io" /d:"sonar.analysis.mode=preview"
MSBuild.exe /t:Rebuild
MSBuild.SonarQube.Runner.exe end 

但是,我仍然没有看到 SonarQube 使用机器人来评论新的 PR(类似于 their demo

【问题讨论】:

    标签: c# github sonarqube pull-request sonar-runner


    【解决方案1】:

    您尝试激活的功能尚未准备好使用 - 这就是为什么它被命名为“Alpha”(Administration -> Settings -> Pull Requests (Alpha))。

    无论如何,即使此功能已准备就绪,虽然这将保护您的 GitHub 令牌,因为您只会将其保存在 SonarCloud 上(这很棒),您仍然需要提供您的 GitHub 令牌 strong>SonarCloud 令牌 来执行分析。由于您不想公开您的 SonarCloud 令牌,因此您将无法分析外部拉取请求。不幸的是,我们目前没有解决此限制的解决方案。

    【讨论】:

    • CodeCov 有一个很好的解决方案,可以在不暴露 API 令牌的情况下分析 PR 的覆盖率:如果请求来自 可信 CI 服务(例如 Appveyor、Travis 等) ,则无需API密钥即可处理请求。
    • 另外一点,虽然您最好用Alpha 后缀命名该功能,但我会认为它是这是功能性的,但会受到服务器更改的影响。因此,在此配置选项卡顶部清楚地提及 它还没有功能 可能不是一个坏主意。
    【解决方案2】:

    我不会将我的 API 密钥放在任何公共文件上,Appveyor 也不会 将在公共 PR 上公开我的安全代币。

    为了解决这个问题,您可以在 appveyor 中使用 https://ci.appveyor.com/tools/encrypt 加密令牌。

    然后将该加密值复制粘贴到您的 appveyor.xml 文件中。

    【讨论】:

      猜你喜欢
      • 2022-07-16
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 2016-09-16
      • 2019-12-19
      • 2019-08-30
      • 2019-06-23
      • 2014-11-30
      相关资源
      最近更新 更多