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

如何在GitLab CI中通过单个父阶段触发所有E2E测试作业?

一键触发全部E2E测试作业的实现方案

完全可以实现,只需要新增一个手动触发的控制作业,配合变量规则让四个E2E作业在控制作业触发后自动运行。具体配置调整如下:

1. 调整阶段顺序

首先在CI配置的stages中新增一个触发阶段,确保它在E2E测试阶段之前:

stages:
  - setup-project
  - trigger-e2e  # 新增的触发阶段
  - e2e-test
  # 其他已有阶段...

2. 新增手动触发控制作业

添加一个仅用于触发的作业,点击它就能激活所有E2E分片作业:

trigger-e2e-all:
  stage: trigger-e2e
  needs: ['setup-project']  # 确保前置环境准备完成后才能触发
  tags:
    - private
  rules:
    - when: manual  # 仅手动触发
  script:
    - echo "已触发全部E2E测试分片"
  variables:
    TRIGGER_E2E: "true"  # 传递触发信号的变量

3. 修改E2E模板的规则逻辑

更新原有的.e2e-config-template,让四个E2E作业在两种场景下自动运行:合并请求目标为master分支时,或者触发变量存在时。其他情况不会显示手动按钮,避免误操作:

.e2e-config-template: &e2e-config-template
  stage: e2e-test
  needs: ['trigger-e2e-all']  # 依赖触发作业(间接保证setup完成)
  interruptible: true
  image: xxx/xxx/...
  allow_failure: false
  tags:
    - private
  rules:
    - if: "$CI_MERGE_REQUEST_IID != null && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'master'"
      when: always
    - if: "$TRIGGER_E2E == 'true'"
      when: always
    - when: never  # 其他情况不运行,也不显示手动按钮

4. 保留原有E2E分片作业

四个E2E分片作业无需修改脚本部分,继续沿用原配置即可:

e2e 1/4:
  <<: *e2e-config-template
  script:
    - yarn install --check-files
    - echo "127.0.0.1 abc.def.gh" >> /etc/hosts
    - apt install lsof
    - yarn test:e2e --shard=1/4

e2e 2/4:
  <<: *e2e-config-template
  script:
    - yarn install --check-files
    - echo "127.0.0.1 abc.def.gh" >> /etc/hosts
    - apt install lsof
    - yarn test:e2e --shard=2/4

# e2e 3/4、e2e 4/4 配置同上...

运行逻辑说明

  • 日常开发时,只需点击trigger-e2e-all的"运行"按钮,该作业完成后会自动触发四个E2E分片作业全部运行,无需再逐个点击。
  • 当合并请求目标分支为master时,四个E2E作业会自动启动,无需手动触发,保留原有自动测试逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:27:38