【问题标题】:GitHub: denied: permission_denied: write_packageGitHub:拒绝:permission_denied:write_package
【发布时间】:2021-09-01 13:31:39
【问题描述】:

我目前正在尝试运行一个 docker GitHub Action,它构建一个 docker 图像并将其推送到 GitHub 包,但我收到了一个我从未见过的错误。由于某种原因,它无法推送 docker 映像,因为 write_permission 被拒绝,但我有一个令牌允许我写,所以我不明白问题是什么。

这是我的动作文件:

name: Docker Image CI

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

jobs:
  build:
    runs-on: ubuntu-latest

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

这是我的错误:

运行 docker push docker.pkg.github.com/organization/repository/image:latest 推送是指存储库 [docker.pkg.github.com/organization/repository/image] f0eaf014e806:准备 7d0bad636b3f:准备 aa0870e7c621: 准备 36d2f9f005e6:准备 22bb3686ee25:准备 05e198868a20:准备 b5cea4a3dd43:准备 93c7a8a0e1f4: 准备 7f4b55b885b0:准备 05e198868a20:等待 b5cea4a3dd43: 等待 93c7a8a0e1f4:等待 7f4b55b885b0:等待被拒绝: permission_denied: write_package

【问题讨论】:

标签: docker github github-actions


【解决方案1】:

尝试在您的工作中添加登录步骤:

- name: Login to GitHub Container Registry
  uses: docker/login-action@v1
  with:
    registry: ghcr.io
    username: ${{github.actor}}
    password: ${{secrets.GITHUB_TOKEN}}

【讨论】:

  • 我已经这样做了。还尝试了您的代码,但没有任何改变。
  • 是的,我看到您使用的是旧注册表 docker.pkg.github.com。我的GITHUB_TOKEN 示例仅适用于新的ghcr.io
  • 您知道此更改是否影响了docker.pkg.github.com 的工作方式吗?
【解决方案2】:

提出的解决方案对我不起作用,我必须将我的存储库添加到包设置中,如问题 https://github.community/t/unable-to-push-to-ghcr-io-from-github-actions/191761/3 中所述

转到包的包设置(右/下)

并配置“管理操作访问”部分以允许有问题的 git 存储库对此包/docker 存储库的写入权限 - 因此请确保在添加存储库时也选择“写入”。

【讨论】:

    【解决方案3】:

    对于那些感兴趣的人,我设法解决了我的问题,尽管我不太确定我使用了哪些步骤或更准确地帮助我解决了问题。

    所以基本上,我首先撤销了我的令牌并制作了一个新令牌。然后我像 docker login -u USERNAME -p TOKEN ghcr.io 这样登录到 docker,而在我使用 docker.pkg.github.com 之前,然后设法将我的 docker 映像手动推送到 GitHub Package Registry,然后使 GitHub Action 流程也能正常工作,尽管我在那里没有做任何改变.

    希望对遇到同样问题的人有所帮助。

    【讨论】:

      【解决方案4】:

      目前您确定了您的 github 令牌,但没有确定 DOCKERHUB_USERNAME 和 DOCKERHUB_TOKEN 的秘密。您需要在您的存储库中定义一个新的秘密 DOCKERHUB_USERNAME 和 DOCKERHUB_TOKEN,如 https://docs.github.com/en/actions/reference/encrypted-secrets 所示。

      您还必须在 dockerhub 网站门户上创建一个 dockerhub 令牌。

      您还需要在构建和推送操作之前添加此示例代码。

              name: Login to DockerHub
              uses: docker/login-action@v1 
              with:
                username: ${{ secrets.DOCKERHUB_USERNAME }}
                password: ${{ secrets.DOCKERHUB_TOKEN }}

      【讨论】:

      • 我不需要 dockerhub。
      • 无论是 DOCKERHUB 还是其他容器注册表(如 Azure ACR 或个人容器注册表),您都需要容器注册表才能推送容器映像。
      • 在你的代码中你需要一个 docker.pkg.github.com 的秘密
      猜你喜欢
      • 2013-12-09
      • 2021-09-07
      • 1970-01-01
      • 2018-05-08
      • 2016-11-08
      • 2012-01-18
      • 2012-04-25
      • 2020-01-08
      相关资源
      最近更新 更多