GitLab for c++ 中的 CodeClimate 报告未显示

CodeClimate report in GitLab for c++ not showing

我正在尝试为 GitLab 中的合并请求管道激活代码气候报告。 CodeClimate 分析器是 运行 但是当我添加一些错误代码时没有显示任何警告。可能有一些我遗漏的配置。

我已将以下内容添加到项目 rot 文件夹中的 .gitlab-ci.yml 文件中:

include:
    - template: Code-Quality.gitlab-ci.yml

我添加了 .codeclimate.yml 文件,如下所示:

plugins:
  cppcheck:
    enabled: true
    config:
      check: all
      language: c++
      stds:
        - c++14
        - c++17

构建作业完成并在日志末尾显示以下行:

f47a75dcba39: Pull complete
Digest: sha256:c8afb8c2037f7b9c5c9ae198aff00b1cf80db11d3591fbe89dfb3c69192663f1
Status: Downloaded newer image for codeclimate/codeclimate:0.72.0
WARNING: A new version (v0.85.3) is available. Upgrade instructions are available at: https://github.com/codeclimate/codeclimate#packages
Uploading artifacts...
gl-code-quality-report.json: found 1 matching files 
Uploading artifacts to coordinator... ok            id=227197201 responseStatus=201 Created token=4xyzSXzN
Job succeeded

这里可能有什么问题,因为合并请求没有显示任何 CodeClimate 报告?

在 GitLab 中,我创建了一个带有配置更改的合并请求(合并到 master 中)。以及一个包含错误代码的合并请求,基于第一个带有配置的合并请求(合并到 master 中)。

错误代码:

int non_used_int;

int non_initialized_int;

int dummy = non_initialized_int;





// empty for loop
for (int i=0; i<100; i++) {

}

最后一点:我正在使用 GitLab 提供的共享 GitLab 运行程序。

我遵循的指南:

[TLDR 向下滚动到解决方案]

您必须对 gitlab.yml 文件进行更多控制,最好的方法是在本地安装 gitlab-runner

在您的 gitlab-runner 和 docker 正确安装到您的本地机器上之后

运行 它在本地存储库中(您必须位于与 .gitlab.yml 文件相同路径的存储库文件夹中) 从最小的 .gitlab.yml 文件开始

本地运行的命令是

sudo gitlab-runner exec docker <Task-Name>

例如让我们使用这个最小的 gitlab.yml 文件

image: walberla/cppcheck

cppcheck:
  script:
    - cppcheck --error-exitcode=1 . 

命令将是

sudo gitlab-runner exec docker cppcheck

输出将如下所示:

现在,如果一切正常以遵循我制作的 gitlab 管道输出为例 一个简单的 gitlab repo 只包含你的示例文件和 gitlab.yml

https://gitlab.com/Naor-Tedgi/cpp-ci-runner/-/jobs/235981732

现在我们获得了对所有进程的控制权,您可以准确地看到 ci 和 运行 内部的相同进程,例如在管道中 他们使用的图像是 docker:stable-did 在 运行 执行相同的步骤后你会明白你错过了什么

请记住,因为您在 docker 中使用 docker,所以您需要添加 --docker-privileged

 sudo gitlab-runner exec docker <Task-Name> --docker-privileged

[更新! 19 年 6 月 20 日]

经过我们的交谈,进一步调查 我使用代码质量创建了一个简单的示例,并且 gitlab.yml 与上面提到的相同,但遇到了同样的问题

https://gitlab.com/Naor-Tedgi/cpp-ci-runner/-/jobs/235981732

工件链接 [404]:https://gitlab.com/Naor-Tedgi/cpp-ci-runner/-/jobs/235981732/artifacts/keep

我们发现自昨天以来 gitlab 代码质量工件存在一个未解决的问题

Code Quality no 'Download' option and 'Keep' results in 404

https://gitlab.com/gitlab-org/gitlab-ee/issues/12274

并且需要跟进此线程以获取更多信息

[解决方案]

7heviking

在对模板进行更多调查后 Code-Quality.gitlab-ci.yml

在 6 天前更改此文件的最后一次提交中, 他们将 paths 属性 更改为 reports

如图所示

https://gitlab.com/gitlab-org/gitlab-ee/commit/f0773d9ec8628e301c5a673ff7b7c2193569395d

使用带有路径工件的先前文件修复了 404

的问题

解决问题的步骤:

  • 等待 Gitlab 修复此问题
  • 或者你可以在没有模板文件的情况下使用codeclimate 正如我在我的示例项目中使用的那样

https://gitlab.com/Naor-Tedgi/cpp-ci-runner/blob/master/.gitlab-ci.yml

这是上传工件后的结果

https://gitlab.com/Naor-Tedgi/cpp-ci-runner/-/jobs/236205051