为什么GitHub Action推送Docker镜像到GHCR时报write_package权限错误?
GHCR镜像推送write_package权限报错修复方案
这个报错denied: permission_denied: write_package的核心原因是工作流调用的默认GITHUB_TOKEN缺少对应容器仓库的包写入权限,按照以下步骤依次排查即可:
1. 显式配置工作流令牌权限
GitHub Actions默认的GITHUB_TOKEN不会默认开通包写入权限,你需要在工作流YAML中显式声明权限配置,可以在文件顶层(和on、jobs字段同级)或者对应作业的层级添加如下配置:
permissions: contents: read # 用于拉取仓库代码的基础权限 packages: write # 推送GHCR容器镜像的必需权限
配置完成后重新运行工作流,绝大多数场景下该问题会直接解决。
2. 配置容器包的仓库访问权限
如果添加权限配置后仍然报错,说明你的GHCR容器包没有开放当前代码库的写入权限,操作如下:
- 进入对应组织的GitHub主页,打开「Packages」标签页,找到你要推送的镜像包(本次报错对应的是
webrtc) - 进入包详情页,点击右侧的「Settings」进入包设置界面
- 找到「Manage Actions access」区域,点击「Add repository」按钮
- 搜索你要推送镜像的目标代码库,添加完成后将该仓库的权限等级设置为「Write」
3. 检查仓库全局Actions权限
如果上述两步操作完成后仍存在报错,检查代码库本身的Actions权限限制:
- 进入对应代码库的「Settings > Actions > General」页面
- 下拉找到「Workflow permissions」板块
- 确认勾选了「Read and write permissions」选项,确保工作流令牌拥有包写入的基础权限
内容的提问来源于stack exchange,提问作者Hossein Fallah
相关产品推荐
相关产品推荐

