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

如何配置GitHub Action:仅在指定分支PR部署成功时运行测试

解决GitHub Actions仅在特定PR的部署成功后运行测试的问题

需求说明

要让测试脚本仅在目标分支为dev(后续切换为main)的Pull Request对应的Vercel部署状态为success时运行,避免当前PR触发时测试跳过、部署成功后再运行的两次记录,只保留一次符合条件的测试执行。

解决方案

核心思路是只监听部署状态事件,同时通过条件判断过滤出符合要求的场景:仅当部署关联的PR目标分支为指定分支,且部署状态为成功时,才执行测试任务。

修改后的完整YAML配置如下:

name: Site URL test

run-name: Running sitewide check after successful staging deployment

on:
  # 仅监听部署状态事件,移除PR触发
  deployment_status:

jobs: 
  test-urls:
    if: >
      github.event.deployment_status.state == 'success' &&
      # 校验PR目标分支是否为dev(后续可替换为main)
      github.event.deployment.payload.pull_requests[0].base.ref == 'dev' &&
      # 确保部署来自PR,排除非PR的部署场景
      github.event.deployment.payload.pull_requests != []
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4  
        with:
          node-version: '21.5.0'  

      - name: Install dependencies
        run: npm install
        working-directory: www

      - name: Run sitewide URL check 
        run: npm run test-sitemap
        working-directory: www

关键调整说明

  • 移除pull_request触发项,避免PR提交时触发工作流产生测试跳过的记录
  • 强化if条件判断:
    • 首先确保部署状态为success
    • 通过github.event.deployment.payload.pull_requests[0].base.ref锁定目标分支
    • 增加数组非空判断,只处理关联了PR的部署事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:37