Gitlab测试覆盖率解析失败

时间:2018-01-29 20:30:38

标签: regex code-coverage gitlab-ci lcov

我正在努力让gitlab代码覆盖解析工作。服务器是Gitlab 10.4.1-ee的本地实例。代码覆盖率工具lcov通过this cmake文件的略微修改版本。

我已将正则表达式输入CI设置以及gitlab ci文件中无效。根据我的理解,如果没有提供,代码覆盖甚至不会尝试解析。它确实在一项工作(数百种)中工作,而且从未再次工作(不确定原因)。我已将输出和正则表达式作为输入提供给http://rubular.com,它似乎正确解析。我也愚弄了包括单引号或不包括单引号的各种迭代,或者在正则表达式中没有斜线也无济于事。我无法看到我们可以在哪里获得任何调试输出或显示实际执行此步骤的内容。

项目的CI/CD Settings> Test coverage parsing条目:

\bOverall\D+(\d+[.]\d\%)

该职位的相关.gitlab-ci.yml

coverage:
  stage: build
  image: <redacted>:stable
  script:   
    - mkdir build
    - cd build
    - cmake -DCMAKE_BUILD_TYPE=Debug .. && make coverage
  coverage: '/(?m)\bOverall\D+(\d+[.]\d\%)/'
  artifacts:
    paths:
      - build/coverage/

该职位的相关产出:

Overall coverage rate:
  lines......: 95.2% (749 of 787 lines)
  functions..: 96.5% (110 of 114 functions)
Open ./coverage/index.html in your browser to view the coverage report.
[100%] Built target coverage
Uploading artifacts...
build/coverage/: found 63 matching files           
Uploading artifacts to coordinator... ok            id=20671 responseStatus=201 Created token=kRnB--qX
Job succeeded

1 个答案:

答案 0 :(得分:1)

Turns out gitlab's coverage parser is not multi-line。以下正则表达式最终正在运行lines[\.]+\: (\d+\.\d+)\%。我的ci文件覆盖范围最终成为:

  coverage: '/lines[\.]+\: (\d+\.\d+)\%/'