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

GitHub Actions推送Docker镜像至ghcr.io遇权限拒绝问题求助

解决GitHub Actions推送GHCR镜像权限拒绝问题

问题场景

尝试通过GitHub Actions将Docker镜像推送到GitHub Container Registry(ghcr.io)时,出现权限拒绝错误:

#10 ERROR: denied: installation not allowed to Write organization package
------
 > pushing ghcr.io/michaellihs/texlive:latest with docker:
------
ERROR: denied: installation not allowed to Write organization package
Error: buildx call failed with: ERROR: denied: installation not allowed to Write 
organization package

已完成的前置操作:

  • 创建了具备包读写删权限的GitHub个人访问令牌(PAT)
  • 本地通过PAT成功推送镜像至ghcr.io
  • 在包设置页面将工作流所在仓库添加为Actions Access并赋予admin角色

解决方案

1. 将自定义PAT添加到工作流仓库的Secrets

  • 打开工作流所在仓库的Settings页面
  • 进入Secrets and variables > Actions
  • 点击New repository secret,名称设为CR_PAT,值填入你之前创建的PAT

2. 修改GitHub Actions工作流配置

修改登录步骤的参数,替换默认的GITHUB_TOKEN为自定义的CR_PAT,同时修正registry格式:

name: ci

on:
  push:
    branches:
      - 'main'

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Log in to the Container registry
        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
        with:
          registry: ghcr.io  # 移除https://前缀
          username: ${{ github.actor }}
          password: ${{ secrets.CR_PAT }}  # 替换为自定义PAT的Secret名称

      - name: Build and push Docker image
        uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
        with:
          context: image/
          push: true
          tags: ghcr.io/michaellihs/texlive:latest

3. 验证PAT权限

确保你的PAT拥有以下权限:

  • write:packages:允许推送包
  • read:packages:允许拉取包
  • delete:packages(可选):允许删除包
  • workflow:允许在工作流中使用该令牌

关键说明

默认的GITHUB_TOKEN是仓库范围的令牌,对于用户个人托管的GHCR包,即使在包设置中添加了仓库的Actions Access,该令牌仍无法获得写入权限。使用具备包权限的自定义PAT是解决这类权限问题的可靠方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:47:26