Я использую виртуальную машину в облаке Google с сервером Jenkins (в контейнере Docker). Я пытаюсь создать образ Docker для своего приложения и отправить его в Реестр контейнеров Google с помощью конвейера Jenkins.
Я установил все необходимые плагины Jenkins:
Плагин Google OAuth Credentials,
Docker Pipeline Plugin,
Подключаемый модуль аутентификации реестра Google
Создана учетная запись службы + ключ с ролями администратора хранилища и просмотра объектов. Скачал файл 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
Я потратил несколько часов, пытаясь понять это. Любая помощь будет принята с благодарностью!