5

我目前正在尝试运行一个 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: Preparing 7d0bad636b3f: Preparing aa0870e7c621: Preparing 36d2f9f005e6: Preparing 22bb3686ee25: Preparing 05e198868a20: Preparing b5cea4a3dd43: Preparing 93c7a8a0e1f4: Preparing 7f4b55b885b0: Preparing 05e198868a20: Waiting b5cea4a3dd43: Waiting 93c7a8a0e1f4: Waiting 7f4b55b885b0: Waiting denied: permission_denied: write_package

4

4 回答 4

2

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

- name: Login to GitHub Container Registry
  uses: docker/login-action@v1
  with:
    registry: ghcr.io
    username: ${{github.actor}}
    password: ${{secrets.GITHUB_TOKEN}}
于 2021-09-02T05:37:47.793 回答
1

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

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

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

于 2021-09-03T07:16:07.603 回答
1

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

转到包的包设置(右侧/底部)

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

于 2022-02-04T19:49:53.513 回答
-1

目前你精确你的 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 }}

于 2021-09-01T13:40:13.003 回答