已成功登录GitHub Action,推送镜像至GHCR.io时遇403错误
解决GHCR推送镜像时的403 Forbidden错误
可能的原因及解决方案
1. GITHUB_TOKEN权限不足
默认的GITHUB_TOKEN在GitHub Actions工作流中,可能未授予推送GHCR包所需的packages:write权限。需显式配置权限:
在工作流的docker任务下添加权限设置:
jobs: docker: runs-on: ubuntu-latest permissions: packages: write contents: read # 用于拉取仓库代码,按需配置
或者在仓库的Settings > Actions > General页面,将"Workflow permissions"设置为"Read and write permissions",确保所有工作流默认拥有读写权限。
2. 镜像名称大小写或路径错误
GHCR对用户名/组织名的大小写敏感,确认REGISTRY_IMAGE中的<my github>与你的GitHub用户名/组织名完全一致(包括大小写)。例如:
- 正确格式:
ghcr.io/your-username/your-repo - 避免大小写不匹配,比如
Ghcr.io/Your-Username/your-repo会导致权限验证失败。
3. 包所有权与权限验证
尽管你是包的管理员,仍需确认:
- 包的命名空间正确:个人仓库的包应归属个人用户名,组织仓库的包应归属组织名。
- 若为组织仓库,确保你的账号在组织中拥有足够权限(比如组织的Packages管理员权限)。
4. 工作流触发与推送条件确认
你的推送条件是push: ${{ github.event.action == 'published' }},仅当Release状态为Published时才会执行推送。确认触发工作流的Release不是Draft状态(Prerelease仍属于Published状态,无需排除)。
内容的提问来源于stack exchange,提问作者Olivier
相关产品推荐
相关产品推荐

