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

时间:2019-06-07 11:28:25

标签: c++ gitlab-ci gitlab-ci-runner

我正在尝试为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中,我通过配置更改创建了一个合并请求(合并到主服务器)。还有一个带有一些错误代码的合并请求,该请求基于第一个具有配置的合并请求(合并到主服务器)。

错误代码:

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运行程序。

我遵循的指南:

1 个答案:

答案 0 :(得分:2)

[从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

,输出将如下所示:

enter image description here

现在是否一切正常以遵循gitlab管道输出,例如我所做的 一个简单的gitlab存储库,仅包含您的示例文件和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/06/20]

在我们聊天之后,进一步调查 我使用代码质量和上面提到的相同gitlab.yml创建了一个简单示例,但遇到了相同的问题

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

enter image description here

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

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

  

代码质量没有“下载”选项,并且在404中“保留”结果

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

,需要跟进该线程以获取更多信息

[解决方案]

7heviking

在对模板 Code-Quality.gitlab-ci.yml

进行了进一步调查之后 在6天前的最后一次提交中,

更改了该文件, 他们将paths属性更改为reports

enter image description here

如此处所示

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