我有一个问题,我的gitlab覆盖率徽章报告为“未知”的NodeJS项目我工作。我已经阅读了几十篇关于这个问题的stackoverflow文章,并尝试了所有建议的解决方案,但都无济于事,所以我想我会把我的设置细节放在这篇文章中,看看是否有人能找出可能导致这个问题的原因。
我在gitlab-ci.yml文件中的任务如下:
test_coverage:
image: node:16
stage: test_coverage
before_script:
- echo "This skips any predefined before scripts to ensure clean environments"
tags:
- Nexus
script:
- npm run test:ci
coverage: /All\sfiles.*?\s+(\d+.\d+)/
artifacts:
when: always
reports:
junit:
- ./junit.xml
cobertura: coverage/cobertura-coverage.xml
dependencies:
- install
except:
- tags
我的package.json文件中的脚本npm run test:ci如下:
"test:ci": "CI=true NODE_ENV=test ENVIRONMENT=CI_CD NODE_OPTIONS=--experimental-vm-modules jest --coverage --collectCoverage --coverageDirectory=\"./coverage\" --ci --reporter=html --reporter=text --reporter=cobertura --reporters=default --reporters=jest-junit --watchAll=false"
我在Gitlab的测试覆盖率报告设置部分得到了以下正则表达式
/All\sfiles.*?\s+(\d+.\d+)/
我在gitlab中设置了徽章链接和URL。
当我在本地运行我的npm run test:ci脚本时,我得到了一个可爱的覆盖率报告。当我的作业在gitlab管道中运行时,我的覆盖率报告对每个文件都是0。它告诉我所有的测试都通过了。它告诉我,我的junit和cobertura工件已经成功完成了,工作也成功了。
我有一种强烈的感觉,如果我在gitlab作业日志中看到实际的覆盖率数字,就像我在本地运行脚本时看到的那样,徽章会起作用。但我不知道为什么我得到的都是0。有没有人能根据这里提供的信息看到我做错了什么?
1条答案
按热度按时间polhcujo1#
GitLab项目页面上的测试覆盖率徽章显示默认分支上的测试覆盖率。
此外,应确保两件事:
jest.config.js
需要包含text-summary和cobertura作为报告器。其次,需要将cobertura报告作为工件上传到GitLab。