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

GitHub Action推送Docker镜像到GitHub Packages报write_package权限错误问询

问题排查及解决方案

核心原因汇总

  • GitHub Action 默认的GITHUB_TOKEN未显式开启包写入权限:2023年之后GitHub新建仓库的Workflow默认权限为只读模式,未单独配置的情况下没有packages写入权限
  • 仓库/组织的Packages权限配置未开放Workflow写入权限
  • 镜像命名路径不匹配:推送的镜像路径需要和实际所属的组织/仓库名完全对应,大小写也要一致
  • 旧版GitHub Packages域名(docker.pkg.github.com)的权限校验规则更严格,也可能触发权限拦截

可行解决方案

第一步:显式配置Workflow权限

在你的工作流yaml文件根层级(和on、jobs平级)添加权限配置:

permissions:
  contents: read
  packages: write

这个配置会给GITHUB_TOKEN开放包写入权限,是最常见的问题修复方案。

第二步:检查仓库Packages权限配置

  1. 进入你的仓库设置页面,找到「Packages」板块
  2. 确认「Actions access」配置为「Allow GitHub Actions to create and publish packages」
  3. 如果是组织级别的包,需要额外在组织设置的Packages权限中确认工作流有写入权限

第三步:校验镜像命名规则

确认你打标签的docker.pkg.github.com/organization/repository/image:latest路径中的organization是你的组织名/用户名,repository是当前仓库名,完全和实际值匹配,大小写保持一致。

可选优化:切换到新版GitHub Container Registry

目前GitHub更推荐使用ghcr.io作为容器镜像仓库域名,替换原有docker.pkg.github.com,权限校验逻辑更清晰:

  1. 登录步骤替换为:
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
  1. 镜像标签替换为:
docker tag image:latest ghcr.io/organization/repository/image:latest
  1. 推送命令对应替换为ghcr.io的镜像地址即可。

修改后的完整工作流参考:

name: Docker Image CI
permissions:
  contents: read
  packages: write

on:
  workflow_dispatch:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 16
      uses: actions/setup-java@v3
      with:
        java-version: 16
        distribution: 'temurin'
    - name: Build with Maven
      run: mvn -f ACS/pom.xml clean install dependency:copy-dependencies
    - name: Login to GitHub Container Registry
      run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Build the Docker image
      run: docker build -t image:latest .
    - name: Tag the Docker image
      run: docker tag image:latest ghcr.io/organization/repository/image:latest
    - name: Push the Docker image to the registry
      run:  docker push ghcr.io/organization/repository/image:latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:57:02