如何在.gitlab-ci.yml中配置按需手动触发的并行测试任务
GitLab CI 按需手动并行测试配置方案
核心配置逻辑
要匹配你的5个浮动测试许可、按需手动触发不同数量并行作业的需求,核心用到以下GitLab CI特性:
- 手动触发规则:通过
when: manual参数控制所有测试作业仅在手动点击后执行,不会自动运行 - 并行作业配置:通过
parallel参数快速生成指定数量的并行测试作业 - 全局并发限制:在项目设置中配置最大并行作业数为5,避免同时运行的作业超过许可数量导致测试失败
前置项目配置
先进入你的GitLab项目,依次打开「设置」→「CI/CD」→「通用管道」,将最大并行作业数设置为5,刚好匹配你的测试许可总数,多个流水线的作业会自动排队,避免许可抢占。
.gitlab-ci.yml 基础示例
# 定义测试作业通用模板,所有测试作业复用该配置 .test_base: script: # 这里替换为你实际的测试脚本,包含连接许可服务器的逻辑 - echo "开始执行测试脚本,连接许可服务器获取许可" - bash run_test.sh tags: # 替换为你实际的运行器标签 - test-runner allow_failure: false # 场景1:单组测试,仅运行1个作业 single_test: extends: .test_base when: manual # 场景2:3组并行测试,触发后同时运行3个作业 parallel_3_test: extends: .test_base when: manual parallel: 3 # 场景3:5组并行测试,触发后同时运行5个作业 parallel_5_test: extends: .test_base when: manual parallel: 5
配置说明
- 所有测试作业均为手动触发,你可以根据实际需求选择对应场景的作业点击运行即可
- 如果不同场景需要执行不同的测试脚本,可以直接在对应场景的作业中覆写
script字段,或者通过CI变量传递测试参数 - 支持同时运行多个独立流水线:只要所有运行中流水线的作业总数不超过5,作业会正常执行;超过5个的部分会自动排队,等前面的作业运行完成释放许可后再执行
- 如果需要区分不同并行作业的测试参数,可以通过
CI_NODE_INDEX内置变量获取当前作业的并行序号,在测试脚本中根据序号加载不同的测试用例分组
内容的提问来源于stack exchange,提问作者Sarah Tekken
相关产品推荐
相关产品推荐

