2015-09-22 4 views
0

Я знаю, что для развертывания на приложение-двигатель можно запустить команду Maven:Maven автоматизированное развертывание на Google App Engine

mvn appengine:update 

Который затем запрашивает код Идент и запускает браузер, чтобы подтвердить, что вы хотите опубликовать на движок приложения. Я ищу автоматизировать это полностью, поэтому его можно просто запустить как команду от maven. У меня есть установка appengine-maven-plugin, но, похоже, нет никакой возможности пропустить ручной шаг.

Неужели кому-нибудь удалось это решить? Я знаю, что вы можете развернуть прямо с Jenkins, но мы ищем решение, которое может быть автоматизирует, если наш сервер Дженкинс вниз

Благодаря

ответ

1

Поток аутентификации, который перенаправляет вас в браузере для входа и согласия является вызов трехногий Oauth, поскольку он включает в себя три шага: 1) запрос на токен 2) логин и согласие 3) вызов API с токеном.

Протокол аутентификации, который не включает логин и согласие пользователя, называется двухсторонним Oauth (от сервера к серверу): 1) запрос для токена, подписанный с закрытым ключом; 2) вызов API с токеном. Для аутентификации сервера к серверу требуется настроить учетную запись службы с соответствующими разрешениями (областями). Вы также должны безопасно распространять закрытый ключ для этой учетной записи службы, чтобы вы могли подписывать свои запросы. См. OAuth2ServiceAccount instructions

Изображение Bitnami Jenkins на самом деле для вас совсем немного. Когда вы устанавливаете Push-to-Deploy, вы запускаете экземпляр с gcloud. Эта команда запуска указывает области, в которых вы хотите, чтобы изображения имели доступ также с параметром --scopes, включая "https://www.googleapis.com/auth/appengine.admin". Разрешение на эти области предоставляется учетной записи службы проекта по умолчанию. Когда Jenkins развертывает ваш код, учетные данные учетной записи службы становятся доступными через Jenkins Google Oauth Plugin.

Вы можете создать еще один инструмент, который будет программировать код. Вам нужно будет создать учетную запись службы, которая генерирует JSON Web Token (JWT). Снова посмотрите инструкции Outh2ServiceAccount. JWT - это ваши личные учетные данные, и вам нужно найти безопасное место для его хранения. SDK App Engine знает, как использовать JWT для получения токенов auth.

Во время выполнения вы можете передать путь к файлу JWT в качестве параметра -service_account_json_key_file в appcfg.py. Чтобы отбросить этот параметр через плагин Maven, вам придется использовать -DadditionalParams = "- service_account_json_key_file", который доступен на кончике github.com/GoogleCloudPlatform/appengine-maven-plugin/master. (Будет в App Engine версии 1.9.27, но вы можете вытащить из Github до тех пор.)

+0

Это полезно, но я спрашиваю, есть ли способ изначально автоматизировать весь процесс? – Fraser

+0

После того как вы приобрели токен OAuth с помощью ручного шага, вы можете развернуть только с помощью «mvn appengine: update». Но вы не можете автоматизировать авторизацию. Вы должны сделать некоторые настройки. –

Смежные вопросы