You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中使用parallel_tests运行测试套件

GitHub Action 配置 parallel_tests 运行测试套件方案

核心逻辑是复用GitHub Action自带的matrix并行构建能力,给每个并行节点传入对应的分片参数,即可实现和GitLab CI一致的分布式并行测试效果,完整配置参考如下:

1. 定义并行构建矩阵

在你的GitHub Action workflow文件中配置测试job的并行策略,示例为启动4个并行测试节点:

jobs:
  run-test-suite:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ci_node_total: [4]
        ci_node_index: [0, 1, 2, 3]

参数说明:

  • fail-fast: false 可避免单个节点测试失败就终止其他节点的测试任务,方便一次性查看所有测试结果
  • ci_node_total 为并行节点总数量,可根据你的测试用例规模调整
  • ci_node_index 为每个节点的唯一编号,从0开始计数

2. 配置测试执行步骤

在测试执行步骤中把矩阵参数传入parallel_tests命令即可:

steps:
  # 此处省略代码拉取、Ruby环境配置、依赖安装、数据库初始化等前置步骤
  - name: 执行并行测试
    env:
      CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
      CI_NODE_INDEX: ${{ matrix.ci_node_index }}
    run: |
      # RSpec测试框架使用该命令
      bundle exec parallel_rspec ./spec -n $CI_NODE_TOTAL --only-group $((CI_NODE_INDEX + 1))
      # Minitest测试框架使用该命令
      # bundle exec parallel_test ./test -n $CI_NODE_TOTAL --only-group $((CI_NODE_INDEX + 1))

注意:parallel_tests的分组编号从1开始计数,而GitHub matrix的ci_node_index从0开始,所以需要做加1处理。

3. 可选优化:测试时长自动均衡分片

如果要让不同节点的测试执行时长更均匀,减少整体等待时间,可以按如下操作配置:

  • 本地执行bundle exec parallel_rspec --record-runtime ./spec生成测试运行时长记录文件
  • 将生成的tmp/parallel_runtime_rspec.log提交到代码仓库
  • 修改测试执行命令,添加时长文件参数:
bundle exec parallel_rspec ./spec -n $CI_NODE_TOTAL --only-group $((CI_NODE_INDEX + 1)) --runtime-log tmp/parallel_runtime_rspec.log

常见适配问题

  • Rails项目注意每个并行节点需要独立初始化数据库,使用bundle exec rails parallel:prepare代替默认的数据库初始化命令即可
  • 如果测试过程中出现端口冲突,可配置PARALLEL_TEST_FIRST_PORT环境变量自定义首个节点的端口偏移量

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:51:03