Дженкинс с 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

Теперь я столкнулся с двумя проблемами

  1. Когда я использую учетную запись "Служба учетных записей Google из метаданных", я не вижу учетных данных, перечисленных в "Управление исходными кодами". See screenshot
  2. когда я использую "Учетную запись службы 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. Вы можете следить за документацией или этими шагами, которые когда-либо вам удобны.

  1. Откройте диспетчер развертывания облаков
  2. Нажмите на название рассматриваемого развертывания Jenkins
  3. Нажмите на имя экземпляра в левой информационной панели и перенаправит вас на VM instance details
  4. Stop экземпляр
  5. Нажмите " 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