如何通过GitHub Actions管控合并按钮并解决Vercel部署问题
问题解决方案
问题1:PR可在Workflow运行/失败时合并
要实现「仅当PR触发的所有Actions任务通过后才能合并」,需完成以下操作:
1. 配置仓库分支保护规则
进入仓库的「Settings」→「Branches」→「Branch protection rules」,针对目标分支(如main):
- 勾选「Require status checks to pass before merging」
- 在「Status checks that are required」中,将
WORKFLOW CONTROLLER下的frontend、backend检查项添加为必填项 - 可选:勾选「Require branches to be up to date before merging」,确保PR基于最新主分支
2. 优化Workflow触发事件(可选)
原触发逻辑已覆盖PR打开、重开、编辑场景,可明确指定类型减少不必要触发:
name: WORKFLOW CONTROLLER on: workflow_dispatch: pull_request: types: [opened, reopened, synchronize] # synchronize对应PR编辑/推送新代码 jobs: frontend: uses: ./.github/workflows/frontend-test.yml backend: needs: frontend uses: ./.github/workflows/backend-test.yml
问题2:PR合并后Vercel部署被Skipped
原Workflow的判断条件错误:pull_request closed事件触发时,github.ref指向的是PR的源分支而非目标分支main,导致条件不成立。修正判断逻辑如下:
修改后的VERCEL DEPLOY Workflow:
name: VERCEL DEPLOY on: pull_request: types: - closed jobs: vercel-deploy: # 修正条件:判断PR是否合并到main分支 if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' }} runs-on: ubuntu-latest strategy: matrix: node-version: [18.x] architecture: [x64] steps: - name: Check out Git Repository uses: actions/checkout@v3 - name: RUN DEPLOY [VERCEL] uses: amondnet/vercel-actions@v20 with: vercel-args: '--prod' vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} github-token: ${{ secrets.GITHUB_TOKEN }}
内容的提问来源于stack exchange,提问作者THIAGO DE BONIS
相关产品推荐
相关产品推荐

