Gitlab 测试覆盖率解析失败

Gitlab test coverage parsing fails

我正在尝试让 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

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

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