gitlab PR 中的强制覆盖率增加
Force coverage increase in gitlab PRs
为了通过要求对托管在 gitlab 上的 EmberJS 项目的每个拉取请求进行单元测试来增加测试覆盖率,我希望管道 如果覆盖率没有增加就会失败 .
我可以使用 istanbul 获取覆盖率输出,并使用以下正则表达式正确显示覆盖率标志:
并使用这个 gitlab-ci.yml
:
image: sergiolepore/ember-cli
before_script:
- yarn --ignore-engines
- bower --allow-root install
"Ember Unit Tests":
script:
- COVERAGE=true npm test -- --filter=Unit
- grep -o '"pct":\d*\.\d*' coverage/coverage-summary.json | head -1
如果 PR 中的覆盖率下降,我怎样才能让下一个管道失败?
经过大量挖掘 https://docs.gitlab.com/ee/ci/yaml/,这是我找到的解决方案:
1。执行测试时生成代码覆盖率
该管道将使用 artifacts
存储作业之间 coverage/.current
下的覆盖百分比
"Ember Unit Tests":
artifacts:
paths:
- coverage/.current
script:
- COVERAGE=true yarn test --filter=Unit
after_script:
- grep -o <regex> coverage.json >> coverage/.current
2。将代码覆盖率与存储的 "max" 覆盖率(默认为 0)
进行比较
如果覆盖率下降,只需return一个非零退出代码(谢谢 Lux!)
"Increase Coverage":
before_script:
- MAX=`if [ -f coverage/.max ] ; then cat coverage/.max ; else echo 00.00 ; fi`
- CURRENT=`cat coverage/.current`
script: if [[ $CURRENT < $MAX ]] ; then exit 1 ; fi
3。合并拉取请求时更新 "max" 覆盖范围
"Update Max Coverage":
except:
- pushes
before_script:
- NEW_MAX=`cat coverage/.current`
script: echo $NEW_MAX > coverage/.max
运行 这三个管道连续使用 stages 并且不要忘记缓存管道之间的 "max" 覆盖范围:
cache:
paths:
- coverage/.max
为了通过要求对托管在 gitlab 上的 EmberJS 项目的每个拉取请求进行单元测试来增加测试覆盖率,我希望管道 如果覆盖率没有增加就会失败 .
我可以使用 istanbul 获取覆盖率输出,并使用以下正则表达式正确显示覆盖率标志:
并使用这个 gitlab-ci.yml
:
image: sergiolepore/ember-cli
before_script:
- yarn --ignore-engines
- bower --allow-root install
"Ember Unit Tests":
script:
- COVERAGE=true npm test -- --filter=Unit
- grep -o '"pct":\d*\.\d*' coverage/coverage-summary.json | head -1
如果 PR 中的覆盖率下降,我怎样才能让下一个管道失败?
经过大量挖掘 https://docs.gitlab.com/ee/ci/yaml/,这是我找到的解决方案:
1。执行测试时生成代码覆盖率
该管道将使用 artifacts
存储作业之间coverage/.current
下的覆盖百分比
"Ember Unit Tests":
artifacts:
paths:
- coverage/.current
script:
- COVERAGE=true yarn test --filter=Unit
after_script:
- grep -o <regex> coverage.json >> coverage/.current
2。将代码覆盖率与存储的 "max" 覆盖率(默认为 0)
进行比较如果覆盖率下降,只需return一个非零退出代码(谢谢 Lux!)
"Increase Coverage":
before_script:
- MAX=`if [ -f coverage/.max ] ; then cat coverage/.max ; else echo 00.00 ; fi`
- CURRENT=`cat coverage/.current`
script: if [[ $CURRENT < $MAX ]] ; then exit 1 ; fi
3。合并拉取请求时更新 "max" 覆盖范围
"Update Max Coverage":
except:
- pushes
before_script:
- NEW_MAX=`cat coverage/.current`
script: echo $NEW_MAX > coverage/.max
运行 这三个管道连续使用 stages 并且不要忘记缓存管道之间的 "max" 覆盖范围:
cache:
paths:
- coverage/.max