Я запускаю виртуальную машину в облаке Google, на которой работает сервер Jenkins (в контейнере докеров). Я пытаюсь создать образ Docker для своего приложения и отправить его в реестр контейнеров Google с помощью конвейера Jenkins.
Я установил все необходимые плагины Jenkins: плагин учетных данных Google OAuth, плагин Docker Pipeline, плагин аутентификации реестра контейнеров Google.
Создал сервисный аккаунт + ключ с ролями Storage Admin и Object Viewer. Скачал json файл.
Создал учетные данные в Jenkins, используя имя проекта Google в качестве идентификатора и ключа json.
Мой код конвейера для сборки выглядит так:
stage('Build Image') { app = docker.build("<gcp-project-id>/<myproject>") }
Мой код конвейера для сборки выглядит так:
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
Я потратил несколько часов, пытаясь понять это. Любая помощь будет принята с благодарностью!