Дженкинс с Google Cloud Source Repository
Я пытаюсь использовать Jenkins для CI/CD. Я разработал приложение для колпачков Python. Я развертываю это приложение в Google App Engine. Пока я использую gcloud app deploy app.yaml
для развертывания приложения в Google App Engine.
Код для этого приложения присутствует в Google Cloud Source Repository.
Поскольку для аутентификации git (Хранилище Google Cloud Source) требуется Google OAuth, я установил плагин Google OAuth Credentials
Теперь я столкнулся с двумя проблемами
- Когда я использую учетную запись "Служба учетных записей Google из метаданных", я не вижу учетных данных, перечисленных в "Управление исходными кодами".
- когда я использую "Учетную запись службы Google из закрытого ключа", я могу видеть учетные данные. Но когда я запускаю свою работу jenkins, я становлюсь ниже ошибки
FATAL: не удалось вызвать com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject(): не удалось выполнить сериализацию com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ для прокси-сервера # для класса com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote ---- Отладочная информация ---- сообщение: Не удалось вызвать com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject() cause-exception: java.lang.RuntimeException причина-сообщение: не удалось выполнить сериализацию com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote # учетные данные для класса com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote -------------------- ----------- java.lang.UnsupportedOperationException: отказ от маршала org.joda.time.DateTime по соображениям безопасности; см. https://jenkins.io/redirect/class-filter/ at hudson.util.XStream2 $ BlacklistedTypesConverter.marshal(XStream2.java:543) в com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69 ) в com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58) в com.thoughtworks.xstream.core.AbstractReferenceMarshaller $ 1.convertAnother(AbstractReferenceMarshaller.java:84)
Вопрос: Как я могу аутентифицировать репозиторий Google Cloud Source в Jenkins? Каковы шаги: плагины, необходимые для использования репозитория Google Cloud Source в Jenkins?
Ответы
Ответ 1
Решение
Вероятно, вам нужно добавить недостающую область в экземпляр VM Compute Engine, в котором запущен Jenkins, который предоставит ему доступ к репозиторию Cloud Source. Вы можете следить за документацией или этими шагами, которые когда-либо вам удобны.
- Откройте диспетчер развертывания облаков
- Нажмите на название рассматриваемого развертывания Jenkins
- Нажмите на имя экземпляра в левой информационной панели и перенаправит вас на
VM instance details
-
Stop
экземпляр - Нажмите "
Edit
и установите правильную область доступа для хранилища облачных источников
После запуска экземпляра виртуальной машины повторите попытку добавления своего репозитория git и после выбора учетных данных "Учетная запись службы Google из метаданных" или из учетной записи службы, все должно работать должным образом.
разработка
Я наткнулся на "Недействительные учетные данные". при попытке добавить репозиторий Cloud Source после развертывания Jenkins из Launcher.
В моем случае причина, по которой это произошло, заключалась в том, что в процессе развертывания область доступа облачных API-интерфейсов для хранилищ облачных источников на экземпляре VM Compute Engine была Disabled
, что предотвращало любое взаимодействие с этим экземпляром, даже если учетная запись службы имела все необходимые роли/разрешения.
Вот области, которые перенастроены Launcher:
scopes:
- 'https://www.googleapis.com/auth/cloud.useraccounts.readonly'
- 'https://www.googleapis.com/auth/devstorage.read_only'
- 'https://www.googleapis.com/auth/logging.write'
- 'https://www.googleapis.com/auth/monitoring.write'
{% if enableComputeApi %}
- 'https://www.googleapis.com/auth/compute'
{% endif %}
- 'https://www.googleapis.com/auth/cloudruntimeconfig'
Добавление следующей области к экземпляру VM, на котором запущен Jenkins, было достаточно, чтобы исправить ошибку:
https://www.googleapis.com/auth/source.read_only
Дополнительно:
Список областей применения API Google.
Ответ 2
Я обновил плагин до версии 0.6. В версии 0.6 у меня такая же проблема в проекте "Свободный стиль" Дженкинса. Бит. Я могу добиться успеха в проекте "трубопровод" Дженкинса. Я просто копирую синтаксис проверки в проекте других и заменяю 2 части синтаксиса справа:
credentialsid → заменить на свой собственный идентификатор учетных данных, что вы создали учетную запись службы Google из частного ключа в jenkins. url → заменить на URL-адрес репозитория источника google