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 并行化设置如下:

  1. prepare阶段的retrieve-tests-metadata作业可确保我们有一个knapsack/report-master.json文件:
    • 从 S3 提取knapsack/report-master.json文件,如果不在此处,则使用{}初始化文件.
  2. 每个[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 .
  3. 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环境变量.

Return to Testing documentation