13

我正在尝试将 Jenkins 用于 CI/CD。我开发了一个 Python 烧瓶应用程序。我正在将此应用程序部署到 Google App Engine 中。到目前为止,我正在使用gcloud app deploy app.yaml命令将应用程序部署到 Google App Engine。

此应用程序的代码存在于 Google Cloud Source Repository 中。

由于对 git(Google Cloud Source Repository)的身份验证需要 Google OAuth,我已经安装了Google OAuth Credentials Plugin

现在我面临两个问题

  1. 当我使用“来自元数据的 Google 服务帐户”凭据种类时,我没有看到“源代码管理”中列出的凭据。 看截图
  2. 当我使用“来自私钥的 Google 服务帐户”时,我可以看到凭据。但是当我运行我的詹金斯工作时,我遇到了错误

出于安全原因的日期时间;看 https://jenkins.io/redirect/class-filter/ at hudson.util.XStream2$BlacklistedTypesConverter.marshal(XStream2.java:543) at 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)

问题:如何在 Jenkins 中验证 Google Cloud Source 存储库?在 Jenkins 中使用 Google Cloud Source 存储库需要哪些步骤|插件?

4

2 回答 2

6

解决方案

您可能需要向运行 Jenkins 的 Compute Engine VM 实例添加一个缺失的范围,以使其能够访问 Cloud Source Repository。您可以按照文档或此步骤进行操作,只要您觉得方便。

  1. 转到云部署管理器
  2. 单击有问题的 Jenkins 部署的名称
  3. 单击左侧信息窗格中的实例名称,它会将您重定向到VM instance details
  4. Stop实例
  5. 按下Edit并设置 Cloud Source Repository 的正确访问范围

启动 VM 实例后,尝试再次添加您的 git 存储库,一旦选择“来自元数据的 Google 服务帐户”或服务帐户的凭据,一切都应该正常工作。

细化

我偶然发现了“无效的身份验证凭据”。从 Launcher 部署 Jenkins后尝试添加 Cloud Source Repository 时出现问题。

就我而言,发生这种情况的原因是,在部署过程中,Compute Engine VM 实例上Cloud Source Repositories的Cloud API 访问范围设置为角色/权限。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'

将以下范围添加到运行 Jenkins 的 VM 实例足以修复错误:

https://www.googleapis.com/auth/source.read_only 

额外的:

Google API 的范围列表。

于 2018-04-08T11:57:48.677 回答
1

我将插件更新到 0.6 版本。在 0.6 版本中,我在 Jenkins "Free-style" 项目中遇到了同样的问题。位我可以成功结帐在詹金斯“管道”项目。我只是在其他项目中复制“结帐语法”并将语法的两部分替换为右侧:

credentialsid -> 将您从 jenkins 中的私钥创建的 Google 服务帐户替换为您的正确凭据 ID。url -> 替换为您的 google 源代码库 url

于 2018-05-15T02:01:28.740 回答