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

能否在GitHub Workflow内部条件性删除对应的Workflow Run记录?

解决方案:在GitHub Actions工作流中条件删除未触发构建的运行记录

可以通过调用GitHub API实现这个需求,具体步骤如下:

  • 首先生成一个具备workflow:write权限的Personal Access Token(PAT),将其添加到仓库的Secrets中(比如命名为GH_PAT),这是调用删除API的必要权限。
  • 修改你的工作流文件,先判断提交信息是否包含[trigger ci],如果不包含,则调用API删除当前的工作流运行记录。

以下是完整的工作流示例:

name: CI
on: [push]

jobs:
  ci-control:
    runs-on: self-hosted
    steps:
      - name: 判断是否触发CI
        id: trigger_check
        run: |
          COMMIT_MSG="${{ github.event.head_commit.message }}"
          if echo "$COMMIT_MSG" | grep -q "\[trigger ci\]"; then
            echo "triggered=true" >> $GITHUB_OUTPUT
          else
            echo "triggered=false" >> $GITHUB_OUTPUT
          fi
      - name: 删除未触发的工作流运行记录
        if: steps.trigger_check.outputs.triggered == 'false'
        run: |
          curl -X DELETE \
            -H "Authorization: token ${{ secrets.GH_PAT }}" \
            "https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}"
      - name: 执行CI构建任务
        if: steps.trigger_check.outputs.triggered == 'true'
        run: |
          # 这里替换成你的实际构建命令
          echo "开始执行CI构建..."
          # 比如:npm install && npm run build

需要注意的细节:

  • 权限验证:确保PAT的workflow:write权限已开启,且Secrets配置正确,否则API调用会失败。
  • 延迟问题:调用删除API后,工作流列表可能需要几秒才能刷新显示删除结果。
  • 可选优化:如果不需要在自托管 runner 上执行删除步骤,也可以改用GitHub托管的ubuntu-latest runner来执行删除,减少自托管资源占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:25:44