You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下用LCOV生成代码覆盖率报告,GitLab流水线执行遇阻

解决GitLab流水线中生成LCOV代码覆盖率报告的问题

核心问题原因

GitLab CI的每个Job默认运行在独立的干净环境中,若你将构建、测试、生成报告拆分为不同Job,后续Job无法访问前序Job生成的build目录。需将完整流程整合到单个Job中,同时确保路径正确并配置产物留存。

具体解决方案

  1. 在单个Job中完成全流程
    将cmake配置、构建、测试、覆盖率报告生成的所有步骤放在同一个GitLab CI Job内,确保build目录的连贯性:

    # 进入项目对应目录(根据你的repo结构调整)
    cd application
    # 创建并进入build目录
    mkdir -p build && cd build
    # 执行cmake配置
    cmake ..
    # 构建项目
    make
    # 运行测试
    make test
    # 生成覆盖率报告
    make coverage_TEST_NAME
    
  2. 确保CI环境依赖齐全
    在Job的before_script中安装所有必需工具,避免因依赖缺失导致流程失败:

    before_script:
      - apt-get update && apt-get install -y cmake gcc g++ lcov libgtest-dev git
    
  3. 配置Artifacts留存报告
    生成报告后,通过GitLab CI的artifacts配置将报告文件上传,方便后续查看:

    artifacts:
      paths:
        - application/build/coverage_report/  # 替换为你实际的报告输出路径
      expire_in: 7 days  # 按需设置留存时间
    

完整的.gitlab-ci.yml示例

generate_coverage:
  image: ubuntu:latest
  before_script:
    - apt-get update && apt-get install -y cmake gcc g++ lcov libgtest-dev git
  script:
    - cd application
    - mkdir -p build
    - cd build
    - cmake ..
    - make
    - make test
    - make coverage_TEST_NAME
  artifacts:
    paths:
      - application/build/coverage_report/
    expire_in: 1 week

额外注意事项

  • 确认CI中的路径与本地完全匹配:若本地使用../application/build,需确保CI中项目的目录层级和本地一致,避免路径错误。
  • 若你的项目使用cmake --build而非直接make,可将脚本中的make替换为cmake --build .。

内容的提问来源于stack exchange,提问作者Nidhin Rajeevan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:30:42