如何通过API管理GitHub Packages的Actions访问权限?
如何通过API管理GitHub Packages的Actions访问权限?
嗨,我刚好碰到过和你一模一样的需求——要批量管理GitHub Packages的Actions访问权限,不想手动一个个点那个设置页面!其实GitHub确实提供了REST API来干这个,完全能满足你用GITHUB_TOKEN批量操作的需求,不用折腾系统用户。
先给你理清楚具体怎么操作:
首先,你要用到的是GitHub Packages的Actions权限仓库管理API,分组织名下的包和个人用户名下的包两种情况:
1. 操作组织名下的包
- 授予仓库访问权限:用这个PUT请求端点
举个curl的示例(替换掉里面的占位符):PUT /orgs/{org}/packages/{package_type}/{package_name}/actions/permissions/repositories/{repository_id}
这里的curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <你的GITHUB_TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/orgs/你的组织名/packages/npm/你的包名/actions/permissions/repositories/目标仓库IDpackage_type要对应你的包类型,比如npm、maven、docker这些,得和你实际的包一致。 - 批量获取仓库ID:如果要给多个仓库授权,可以先调用
GET /orgs/{org}/repos拿到组织下所有仓库的ID列表,方便后续批量循环调用授权API。 - 查看已授权的仓库:用
GET /orgs/{org}/packages/{package_type}/{package_name}/actions/permissions/repositories就能看到当前这个包已经授权了哪些仓库。
2. 操作个人用户名下的包
如果你的包是存在个人账号下的,只需要把上面的端点里的orgs/{org}换成user就行:
- 授权端点:
PUT /user/packages/{package_type}/{package_name}/actions/permissions/repositories/{repository_id} - 查看授权端点:
GET /user/packages/{package_type}/{package_name}/actions/permissions/repositories
注意事项
- 你的GITHUB_TOKEN需要有
packages:write和repo权限,而且操作的账号必须是这个包的所有者或者有管理权限。 - 要是包数量和仓库数量都很多,完全可以写个简单的脚本(比如Python或者Shell),先拉取所有目标仓库的ID,然后循环调用授权API,几分钟就能搞定所有配置,比手动点高效太多。
对了,就是你截图里的这个页面:
之前我也是找了好久才发现这个API藏在Packages的权限分类下面,确实不太显眼,不过用它就能完美解决批量授权的问题啦。
备注:内容来源于stack exchange,提问作者Matt Immer
相关产品推荐
相关产品推荐

