gitlab CI/CD 中的代码覆盖率

Ami*_*mir 1 continuous-integration code-coverage gitlab docker gitlab-ci

我曾经Docker-dind构建和测试我的 python 代码。我混淆了如何在gitlab-ci以下两个选项之间运行覆盖。

1) Gitlab 本身有覆盖范围[这里]

2)我遵循python的覆盖教程并使用以下内容创建自己的覆盖范围:

 coverage:
  stage: test
  script:
      - docker pull $CONTAINER_TEST_IMAGE
      - docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
      - docker run $CONTAINER_TEST_IMAGE python -m coverage report -m
Run Code Online (Sandbox Code Playgroud)

当 gitlab 抛出异常时No data to report.

在此处输入图片说明

我猜coverage report命令无法访问/查找.coverage容器中的文件。


所以我的问题是coverage在这种情况下运行的优雅方式是什么?

Ja8*_*its 7

由于const 的回答已经使第一部分变得更容易,即获得覆盖细节,我已经尝试解决how to get reports?

这是由Gitlab 覆盖范围文档给出的。所以你的coverage工作必须这样写

 coverage:
  stage: test
  script:
      - docker pull $CONTAINER_TEST_IMAGE
      - docker run $CONTAINER_TEST_IMAGE /bin/bash -c "python -m coverage run tests/tests.py && python -m coverage report -m"
  coverage: '/TOTAL.+ ([0-9]{1,3}%)/'
Run Code Online (Sandbox Code Playgroud)

mondwan 博客中提到了正则表达式

添加在

如果您在README.md文件中添加以下行,您将获得一个很好的徽章(在主 README.md 中),用于捕获您的覆盖范围详细信息。

[![coverage report](https://gitlaburl.com/group_name/project_name/badges/master/coverage.svg?job=unittest)](https://gitlaburl.com/group_name/project_name/commits/master)

覆盖截图