如何配置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
相关产品推荐
相关产品推荐

