gitlab 中的代码覆盖率 CI/CD
Code coverage in gitlab CI/CD
我使用 Docker-dind
构建和测试我的 python 代码。我对如何 运行 在 gitlab-ci
中覆盖以下两个选项感到困惑。
1) Gitlab 本身就有覆盖范围 [here]
2) 我遵循 python 的报道 tutorial 并使用以下内容创建我自己的报道:
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
当gitlab抛出异常时No data to report.
:
我猜coverage report
命令不能access/find .coverage
容器中的文件。
所以我的问题是在这种情况下 运行 coverage
的优雅方法是什么?
I guess coverage report command can not access/find .coverage file in the container.
是的,你的假设是正确的。来自 运行宁:
- docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
- docker run $CONTAINER_TEST_IMAGE python -m coverage report -m
你实际上一个接一个地启动了两个完全独立的容器。
为了提取覆盖率报告,您必须在 coverage run
命令像这样在同一个容器中完成后执行 运行 coverage report
命令(我假设 bash shell 这里):
- docker run $CONTAINER_TEST_IMAGE /bin/bash -c "python -m coverage run tests/tests.py && python -m coverage report -m"
因为 已经使第一部分更容易,即获取覆盖细节,我尝试解决 how to get reports?
这是Gitlab coverage doc给出的。
所以你的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}%)/'
中提到了正则表达式
插件
如果您在 README.md
文件中添加以下行,您将获得一个漂亮的 badge(在 master README.md 中),其中包含您的覆盖详细信息。
[](https://gitlaburl.com/group_name/project_name/commits/master)
我使用 Docker-dind
构建和测试我的 python 代码。我对如何 运行 在 gitlab-ci
中覆盖以下两个选项感到困惑。
1) Gitlab 本身就有覆盖范围 [here]
2) 我遵循 python 的报道 tutorial 并使用以下内容创建我自己的报道:
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
当gitlab抛出异常时No data to report.
:
我猜coverage report
命令不能access/find .coverage
容器中的文件。
所以我的问题是在这种情况下 运行 coverage
的优雅方法是什么?
I guess coverage report command can not access/find .coverage file in the container.
是的,你的假设是正确的。来自 运行宁:
- docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
- docker run $CONTAINER_TEST_IMAGE python -m coverage report -m
你实际上一个接一个地启动了两个完全独立的容器。
为了提取覆盖率报告,您必须在 coverage run
命令像这样在同一个容器中完成后执行 运行 coverage report
命令(我假设 bash shell 这里):
- docker run $CONTAINER_TEST_IMAGE /bin/bash -c "python -m coverage run tests/tests.py && python -m coverage report -m"
因为 how to get reports?
这是Gitlab coverage doc给出的。
所以你的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}%)/'
中提到了正则表达式
插件
如果您在 README.md
文件中添加以下行,您将获得一个漂亮的 badge(在 master README.md 中),其中包含您的覆盖详细信息。
[](https://gitlaburl.com/group_name/project_name/commits/master)