单测覆盖率
testing:coverage
通过单测结果报告,计算单测覆盖率结果,并上报徽章。
# 适用事件
# 全量覆盖率
从本地覆盖率报告文件解析而来,目前可识别以下格式的报告:
json(js)
(推荐使用)json-summary
lcov
(推荐使用)jacoco
golang
# 增量覆盖率
变更行对应的单测覆盖率,仅支持 pull_request
、pull_request.target
事件
# 参数
# pattern
- type:
String
- required:
false
Glob
格式,指定覆盖率报告文件位置,相对于当前工作目录。
缺省时,将尝试查找当前目录(包括子目录)下的以下文件:coverage.json、jacoco*.xml、lcov.info、*.lcov。
# lines
- type:
Number
- required:
false
指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。
# diffLines
- type:
Number
- required:
false
指定增量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。
pull_request
、pull_request.target
事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。
# allowExts
- type:
String
- required:
false
参与覆盖率计算的代码文件类型白名单,逗号分隔, 如:.json,.ts,.js
。
缺省时报告中的文件都会参与计算。
# lang
- type:
String
- required:
false
当覆盖率结果报告目标格式为 golang
时,请指定此参数 为 go
,否则会出现计算误差。其他情况可忽略该参数。
# breakIfNoCoverage
- type:
Boolean
- required:
false
没有找到覆盖率报告文件时,是否抛出错误终止流程。
# 输出结果
{
// 代码行覆盖率,例如 100,计算出错时值为 NA
lines,
// 代码增量行覆盖率,例如 100,计算出错时值为 NA
diff_pct,
}
# 配置样例
#.cnb.yml
main:
push:
- stages:
- name: coverage
type: testing:coverage
options:
breakIfNoCoverage: false
exports:
lines: LINES
- name: result
script: echo $LINES
← release remove-tag →