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

如何实现GitHub Action中任一Job失败时自动关闭Pull Request?

在GitHub Action中实现PR自动代码检查并在Job失败时关闭PR

要实现你的需求,只需在现有工作流基础上添加权限配置和失败时关闭PR的步骤,具体修改如下:

完整修改后的工作流代码

name: Lint and Test

# 配置工作流权限,需要pull-requests的写入权限来关闭PR
permissions:
  pull-requests: write
  contents: read

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]
    # 明确触发PR的事件类型:创建、同步代码时触发
    types: [opened, synchronize]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [20.x]
    
    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install
    - run: npm run lint
    # 当lint步骤失败时,自动关闭当前PR
    - name: Close PR if lint fails
      if: failure()
      run: |
        gh pr close ${{ github.event.number }} --comment "代码检查(Lint)未通过,已自动关闭PR。请修复代码后重新提交。"
      env:
        # 使用GitHub提供的令牌进行认证
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

关键修改说明

  • 权限配置:添加permissions字段,授予pull-requests: write权限,确保工作流有操作PR的权限(默认令牌权限有限)。
  • 触发事件优化:给pull_request添加types,明确在PR创建(opened)和代码同步(synchronize)时触发检查,覆盖常见的PR更新场景。
  • 失败关闭PR步骤:
    • 使用if: failure()确保只有当之前的步骤(lint)失败时才执行该步骤。
    • 利用GitHub CLI(gh)的pr close命令关闭PR,通过github.event.number获取当前PR的编号。
    • 添加关闭时的评论,告知用户关闭原因,提升体验。

注意:ubuntu-latest环境默认已预装GitHub CLI,无需额外安装。如果使用其他环境,可能需要先安装gh工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:43:16