目前 Github Actions 中的 workflows 执行记录在页面上没有提供批量删除的功能,只能单个点击鼠标操作删除。
如果有很多的记录需要清理,目前只能通过调用 github 的 api 进行删除,具体方法如下:
准备工作
批量删除 Github Actions Workflows 执行记录需要做一些准备工作。
我这里直接在命令行中使用 shell 脚本进行处理,用到的工具有 jq 和 gh,这两个工具不是系统自带的,需要自行安装。
安装 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 的执行记录。以上步骤简单明了,适合需要定期清理工作流记录的开发者和团队。