GitHub: отказано: разрешение_дано: write_package

#docker #github #github-actions

Вопрос:

В настоящее время я пытаюсь запустить действие docker на GitHub, которое создает и помещает образ 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: Ожидание отклонено: разрешение_дано: пакет для записи

Ответ №1:

Попробуйте добавить шаг входа в систему в свою работу:

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

Комментарии:

1. Хотя я уже это делаю. Также попробовал ваш код, но ничего не изменилось.

2. Да, я вижу, вы используете старый реестр docker.pkg.github.com . Мой пример с GITHUB_TOKEN работает только для нового ghcr.io .

3. Знаете ли вы, повлияло ли это изменение на то, как docker.pkg.github.com это работает?

Ответ №2:

Для тех, кто заинтересован, мне удалось решить мою проблему, хотя я и не совсем уверен, как или точнее, какие из шагов, которые я использовал, помогли мне решить проблему.

Итак, по сути, я сначала отозвал свои токены и сделал новый. Затем я вошел в докер таким docker login -u USERNAME -p TOKEN ghcr.io образом, прежде чем использовать docker.pkg.github.com , а затем мне удалось вручную перенести изображение докера GitHub Package Registry , которое затем заставило GitHub Action поток работать так же, хотя я ничего там не изменил.

Я надеюсь, что это поможет людям, у которых такая же проблема.

Ответ №3:

в настоящее время вы уточняете свой токен github, но не секреты для DOCKERHUB_USERNAME и DOCKERHUB_TOKEN. Вам необходимо определить в своих репозиториях новые имена DOCKERHUB_USERNAME и DOCKERHUB_TOKEN, как указано в https://docs.github.com/en/actions/reference/encrypted-secrets.

Вы также должны создать токен dockerhub на портале веб-сайта dockerhub.

Вам также необходимо добавить этот пример кода перед сборкой и действием push.

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

Комментарии:

1. Мне не нужен докерхаб.

2. Будь то DOCKERHUB или другой реестр контейнеров (например, Azure ACR или личный реестр контейнеров), вам обязательно нужен реестр контейнеров, чтобы иметь возможность отправлять образ контейнера.

3. В вашем коде вам нужен секрет для docker.pkg.github.com