Невозможно отправить изображение в GCR из Jenkins Pipeline - PullRequest
0 голосов
/ 04 мая 2018

Я использую виртуальную машину в облаке Google с сервером Jenkins (в контейнере Docker). Я пытаюсь создать образ Docker для своего приложения и отправить его в Реестр контейнеров Google с помощью конвейера Jenkins.

  1. Я установил все необходимые плагины Jenkins: Плагин Google OAuth Credentials, Docker Pipeline Plugin, Подключаемый модуль аутентификации реестра Google

  2. Создана учетная запись службы + ключ с ролями администратора хранилища и просмотра объектов. Скачал файл json.

  3. Создал учетные данные в Jenkins, используя имя проекта Google в качестве идентификатора и ключ json.

  4. Мой конвейерный код для сборки выглядит так:

    stage('Build Image') {
        app = docker.build("<gcp-project-id>/<myproject>")
    }
    
  5. Мой конвейерный код для сборки выглядит так:

    stage('Push Image') {
    docker.withRegistry('https://us.gcr.io', 'gcr:<gcp-project-id>') {
        app.push("${commit_id}")
        app.push("latest")
    }
    

    }

Однако сборка завершается неудачно на последнем шаге с этой ошибкой:

unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

Я потратил несколько часов, пытаясь понять это. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 04 мая 2018

У меня идентичная проблема. Я обнаружил, что Дженкинс, похоже, не использует эти учетные данные: при использовании он говорит: «Эти учетные данные не были записаны как использованные где-либо». , При использовании с утилитой gcloud служебная учетная запись и ключ работают нормально, поэтому проблема где-то в Jenkins.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...