You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向GitHub容器镜像仓库(ghcr.io)推送Docker镜像时遇403错误

解决GHCR推送403 Forbidden问题(仓库从个人转组织后)

核心问题

仓库转到组织后,GHCR镜像的命名空间仍沿用个人用户名,导致Workflow尝试推送到你个人名下的GHCR包空间,但当前触发Workflow的GITHUB_TOKEN仅拥有组织仓库的权限,无法操作个人包,因此返回403错误。


具体修复步骤

1. 修正镜像命名空间

修改env中的IMAGE_NAME,将个人用户名替换为组织名:

env:
  DOCKER_REGISTRY: docker.io
  GITHUB_REGISTRY: ghcr.io
  # 把个人用户名替换为组织名
  IMAGE_NAME: The-Kernel-Brothers/kernelos_buildtools

同时修正release步骤中GHCR的硬编码标签:

- name: Build and push Docker image on release (GitHub registry)
  id: build-and-push_release
  uses: docker/build-push-action@v4.0.0
  with:
    context: .
    push: ${{ github.event_name != 'pull_request' }}
    # 标签路径改为组织名
    tags: ghcr.io/The-Kernel-Brothers/kernelos_buildtools:latest
    labels: ${{ steps.meta_github.outputs.labels }}
    cache-from: type=gha
    cache-to: type=gha,mode=max
  if: ${{ github.event_name == 'release' }}

2. 优化GHCR登录配置

登录GHCR时,无需硬编码组织名,直接使用${{ github.actor }}自动获取触发账号,更灵活:

- name: Log into registry ${{ env.GITHUB_REGISTRY }}
  if: github.event_name != 'pull_request'
  uses: docker/login-action@v2.1.0
  with:
    registry: ${{ env.GITHUB_REGISTRY }}
    username: ${{ github.actor }}
    password: ${{ secrets.GITHUB_TOKEN }}

3. 确认组织包权限

作为组织管理员,检查以下设置:

  • 进入组织的Settings > Packages,确认允许仓库的Workflow推送包
  • 确认当前仓库的Workflow权限中,packages: write已启用(你的配置里已经设置,此步骤为双重验证)

4. 清理旧个人包(可选)

如果个人GHCR名下有同名的kernelos_buildtools包,建议手动删除,避免路径混淆导致后续问题。


内容的提问来源于stack exchange,提问作者Minionguyjpro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:24:56