#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