目前 Github Actions 中的 workflows 执行记录在页面上没有提供批量删除的功能,只能单个点击鼠标操作删除。

如果有很多的记录需要清理,目前只能通过调用 github 的 api 进行删除,具体方法如下:

准备工作

批量删除 Github Actions Workflows 执行记录需要做一些准备工作。

我这里直接在命令行中使用 shell 脚本进行处理,用到的工具有 jqgh,这两个工具不是系统自带的,需要自行安装。

安装 jq 和 gh

例如,在 macOS 上安装:

brew install jq
brew install gh

其他系统可参考官方文档。

jq 是一个轻量级且灵活的命令行 JSON 处理器,类似于 sed、awk、grep 及其它用于 JSON 数据的工具。它是用便携式 C 语言编写的,没有运行时依赖,使您能够轻松地切割、过滤、映射和转换结构化数据。

gh,或者称为 GitHub CLI,是 Github 官方的命令行工具,用于在终端或脚本中使用 GitHub。

执行删除

jq 和 gh 都有了,就可以开始一键清除 workflows 执行记录了。执行以下命令:

1. 环境变量设置你的 github 信息

export OWNER="用户名"
export REPOSITORY="仓库名"

2. 登录 github

gh auth login

3. 调用 api 删除 workflows 记录

gh api -X GET "/repos/$OWNER/$REPOSITORY/actions/runs?per_page=300" | jq '.workflow_runs[] | .id' | xargs -I{} sh -c 'echo {} && gh api --silent -X DELETE /repos/$OWNER/$REPOSITORY/actions/runs/{}'

执行时会输出被删除记录的 ID,这个方式存在一个问题是它不一定每次都能删干净,如果没有删干净可以多执行几次就行。

执行以下命令可以查询剩余的 workflows 记录:

gh api -X GET "/repos/$OWNER/$REPOSITORY/actions/runs?per_page=300" | jq '.workflow_runs[] | .id' | xargs -I{} echo {}

常见问题解答 (FAQ)

为什么需要批量删除 GitHub Actions 的执行记录?

长期积累的执行记录可能会占用仓库的存储空间,并导致界面混乱。定期清理有助于保持项目的整洁和高效管理。

使用 GitHub CLI 和 API 删除记录是否安全?

使用 gh 命令行工具和 GitHub API 是安全的,前提是你必须确保自己的权限设置正确,并妥善管理访问令牌。

是否可以设置定期清理的任务?

可以通过将上述命令放入脚本中,结合 cron 任务在服务器上定期运行,从而实现自动清理。

总结

通过使用 jq 和 gh,用户可以高效地批量删除 GitHub Actions 的执行记录。以上步骤简单明了,适合需要定期清理工作流记录的开发者和团队。


也可以看看