GitLab tests in the Continuous Integration (CI) context
原文:https://docs.gitlab.com/ee/development/testing_guide/ci.html
GitLab tests in the Continuous Integration (CI) context
Test suite parallelization on the CI
我们当前的 CI 并行化设置如下:
- 在
prepare
阶段的retrieve-tests-metadata
作业可确保我们有一个knapsack/report-master.json
文件:- 从 S3 提取
knapsack/report-master.json
文件,如果不在此处,则使用{}
初始化文件.
- 从 S3 提取
- 每个
[rspec|rspec-ee] [unit|integration|system|geo] nm
作业均使用knapsack rspec
运行,并且应具有均匀分布的测试份额:- 之所以起作用,是因为”默认情况下传递了所有先前阶段的工件”以来,作业可以访问
knapsack/report-master.json
. - 作业将自己的报告路径设置为
"knapsack/${TEST_TOOL}_${TEST_LEVEL}_${DATABASE}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json"
. - 如果背包正在执行任务,则运行的测试文件应列在
Report specs
,而不是”Leftover specs
.
- 之所以起作用,是因为”默认情况下传递了所有先前阶段的工件”以来,作业可以访问
update-tests-metadata
作业(仅在规范项目的预定管道上运行)将所有knapsack/rspec*_pg_*.json
文件合并在一起,然后将它们全部合并为一个knapsack/report-master.json
文件,然后将其上传到 S3.
之后,下一个管道将使用最新的knapsack/report-master.json
文件.
Monitoring
监视 GitLab 测试套件的master
分支以及名称中包含rspec-profile
任何分支.
公共仪表板可供所有人查看. 随意查看最慢的测试文件并尝试对其进行改进.
CI setup
- 由于性能原因 ,CI 中默认情况下禁用 Rails 日志到
log/test.log
. 要覆盖此设置,请提供RAILS_ENABLE_TEST_LOG
环境变量.