Как войти в реестры Docker с помощью Github Actions - PullRequest
4 голосов
/ 03 октября 2019

Я пытаюсь отправить образ докера в общедоступное хранилище докеров, используя действия github, следуя их документации, но я не могу заставить его работать:

name: CI

on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/docker/login@master
        with: # Set the secret as an input
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWPORD: ${{ secrets.DOCKER_PASSWPORD }}
        env: # Set the secret in the env
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWPORD: ${{ secrets.DOCKER_PASSWPORD }}
      - name: Test
        run: mvn clean verify -U
      - name: build
        run: ./mvnw compile jib:dockerBuild
      - name: push
        run:  docker push odfsoft/guess-game:latest

Я получаю следующую ошибку:

/usr/bin/docker run --name bb8146f4246c56a44203bb2667ccfbdcab81_f18969 --label 04bb81 --workdir /github/workspace --rm -e DOCKER_USERNAME -e DOCKER_PASSWPORD -e INPUT_DOCKER_USERNAME -e INPUT_DOCKER_PASSWPORD -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/spring-boot-guess-game/spring-boot-guess-game":"/github/workspace" 04bb81:46f4246c56a44203bb2667ccfbdcab81
Error: Cannot perform an interactive login from a non TTY device

это связано с моим действием или ограничением в действиях github?

Ответы [ 3 ]

1 голос
/ 04 октября 2019

https://github.com/marketplace/actions/docker-login

Попробуйте выполнить это действие, поскольку actions/docker/login@master устарело.

1 голос
/ 04 октября 2019

Действие actions/docker устарело. Если вы посетите репозиторий, вы увидите, что репозиторий заархивирован и имеет следующее сообщение:

Это действие не рекомендуется в пользу использования шага сценария запуска на новом языке YAML для запуска докера.

https://github.com/actions/docker

Поэтому рекомендуемый способ входа в реестры Docker - использовать команду сценария run следующим образом.

Для общедоступного DockerHubregistry:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Login to DockerHub Registry
        run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin

Для частного реестра, такого как новый реестр пакетов GitHub, вам также необходимо указать имя хоста:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Login to GitHub Package Registry
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login docker.pkg.github.com -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

Также см. этот ответ для полных примеров рабочего процесса публикации изображений Docker.

0 голосов
/ 04 октября 2019

Для входа в dockerhub вы можете использовать действие, предусмотренное в actions / docker repo .

, которое выглядит так:

action "Docker Login" {
  uses = "actions/docker/login@master"
  secrets = ["DOCKER_USERNAME", "DOCKER_PASSWORD"]
}
...