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

如何在GitHub Release Action前强制通过E2E测试

实现Staging E2E测试通过后方可执行生产发布的质量门禁

问题背景

当前工作流流程:

  • 用户向分支提交变更
  • 创建PR、测试并合并至master分支
  • 自动将发布任务排入staging环境队列
  • 执行Cypress E2E测试验证staging环境
  • 用户手动发布至生产环境

需求:在E2E测试(步骤4)和手动生产发布(步骤5)之间添加质量门禁,若E2E测试失败,禁止执行生产发布。

解决方案

方案1:利用GitHub环境保护规则(推荐)

这是最简洁的原生方案,无需大量修改工作流代码:

  1. 在GitHub仓库的「Settings」→「Environments」中创建Production环境
  2. 开启环境保护,勾选「Required checks」,将你的Cypress E2E测试工作流(cypress.yml)添加到必填检查列表
  3. 修改手动发布工作流(Release ECS),指定部署到Production环境:
name: Release ECS
on:
  workflow_dispatch: 
jobs:
  deploy_production:
    runs-on: ubuntu-latest
    environment: Production # 关联受保护的生产环境
    steps:
      # 此处添加你的生产部署步骤

配置完成后,只有当最近一次master分支的Cypress E2E测试通过,用户才能成功触发生产发布工作流,否则会被GitHub自动拦截。

方案2:在手动发布工作流中添加前置检查

如果无法使用环境保护,可在手动发布工作流中主动验证E2E测试状态:

  1. 确保cypress.yml工作流有明确的名称(比如设置name: Cypress E2E Tests)
  2. 修改Release ECS工作流,添加检查步骤:
name: Release ECS
on:
  workflow_dispatch: 
jobs:
  check_e2e_status:
    runs-on: ubuntu-latest
    steps:
      - name: 验证最新Cypress E2E测试状态
        run: |
          # 获取master分支最近一次E2E工作流的运行结果
          STATUS=$(gh run list --workflow cypress.yml --branch master --limit 1 --json conclusion --jq '.[0].conclusion')
          if [ "$STATUS" != "success" ]; then
            echo "最近一次Cypress E2E测试未通过,禁止发布生产环境"
            exit 1
          fi
        env:
          GH_TOKEN: ${{ github.token }}
  deploy_production:
    runs-on: ubuntu-latest
    needs: check_e2e_status
    steps:
      # 此处添加你的生产部署步骤

方案3:调整流水线触发逻辑

若需要更严格的自动化控制,可修改现有流水线,确保E2E测试通过后才开放发布入口:

  1. 修改deploy_ecs.yml,等待E2E测试完成并成功后,通过GitHub API标记一个成功状态
  2. 在Release ECS工作流中添加对该标记的检查,逻辑同方案2

代码补充说明

确保cypress.yml工作流名称清晰,便于识别:

name: Cypress E2E Tests # 明确工作流名称,用于后续检查
on:
  workflow_dispatch:
  # 保留原有触发逻辑
jobs:
  e2e_test:
    runs-on: ubuntu-latest
    steps:
      # 此处保留你的Cypress测试步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:56:21