You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何一次性取消GitHub仓库中所有已调度的GitHub Actions运行任务?

一次性取消GitHub仓库所有已调度Actions任务的方法

当然有办法解决这个痛点!手动一个个取消调度任务确实太繁琐了,我之前维护仓库的时候也被这个问题烦过,给你分享两个高效的批量取消方法:

方法一:使用GitHub CLI(推荐

首先确保你已经安装了GitHub CLI(gh工具),并且通过gh auth login完成了账号登录认证。

之后在终端里运行下面的命令,记得把<OWNER>换成你的GitHub用户名/组织名,<REPO>换成目标仓库名:

gh run list --repo <OWNER>/<REPO> --status scheduled --json id | jq -r '.[].id' | xargs -I {} gh run cancel {}

拆解一下这个命令的逻辑:

  • gh run list --repo <OWNER>/<REPO> --status scheduled:筛选出目标仓库里所有处于已调度状态的任务
  • --json id:只返回任务ID的JSON格式数据
  • jq -r '.[].id':把JSON里的ID提取成纯文本(如果没装jq,看下面的替代方案)
  • xargs -I {} gh run cancel {}:批量把每个ID传入取消命令,完成批量操作

如果你的环境没有安装jq,可以用Python来处理JSON,命令替换成:

gh run list --repo <OWNER>/<REPO> --status scheduled --json id | python3 -c "import sys, json; print('\n'.join([item['id'] for item in json.load(sys.stdin)]))" | xargs -I {} gh run cancel {}

方法二:直接调用GitHub API

如果你习惯用API操作,可以用curl来实现。首先需要生成一个带有repo权限的个人访问令牌(PAT),在GitHub的设置里就能创建。

然后运行下面的命令,替换<OWNER><REPO><YOUR_PAT>为你的信息:

curl -s -H "Authorization: token <YOUR_PAT>" "https://api.github.com/repos/<OWNER>/<REPO>/actions/runs?status=scheduled" | jq -r '.workflow_runs[].id' | xargs -I {} curl -X POST -H "Authorization: token <YOUR_PAT>" "https://api.github.com/repos/<OWNER>/<REPO>/actions/runs/{}/cancel"

这个逻辑和CLI方法一致:先获取所有已调度任务的ID,再逐个调用取消接口完成批量操作。

注意事项

  • 如果仓库里已调度的任务数量非常多,建议分批次执行命令,避免触发GitHub的API速率限制
  • 取消后的任务状态会变为“Cancelled”,不会再按原定时间自动运行

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

火山引擎 最新活动