gpt4 book ai didi

google-app-engine - Jenkins 与谷歌云源存储库

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:04 25 4
gpt4 key购买 nike

我正在尝试将 Jenkins 用于 CI/CD。我开发了一个 Python flask 应用程序。我正在将此应用程序部署到 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 服务帐户”凭据类型时,我没有看到“源代码管理”中列出的凭据。 See screenshot
  2. 当我使用“来自私钥的 Google 服务帐户”时,我能够看到凭据。但是当我运行我的 Jenkins 工作时,我遇到了以下错误

FATAL: Could not call com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject() : Failed to serialize com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule$ForRemote#credentials for class com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule$ForRemote ---- Debugging information ---- message : Could not call com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject() cause-exception : java.lang.RuntimeException cause-message : Failed to serialize com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule$ForRemote#credentials for class com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule$ForRemote ------------------------------- java.lang.UnsupportedOperationException: Refusing to marshal org.joda.time.DateTime for security reasons; see 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) at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58) at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84)

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

最佳答案

解决方案

您可能需要向运行 Jenkins 的 Compute Engine VM 实例添加一个缺失的范围,以使其能够访问 Cloud Source Repository。可以关注documentation或此步骤,您觉得哪个方便。

  1. 转到 Cloud Deployment Manager
  2. 单击相关 Jenkins 部署的名称
  3. 单击左侧信息 Pane 中的实例名称,它会将您重定向到VM 实例详细信息
  4. 停止实例
  5. Edit 并为 Cloud Source Repository 设置正确的访问范围

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

阐述

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

在我的例子中,它发生的原因是在部署过程中 Cloud API access scope Cloud Source Repositories 在 Compute Engine VM 实例上 设置为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'

添加以下 scope运行 Jenkins 的 VM 实例足以修复错误:

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

额外:

List of scopes for Google APIs.

关于google-app-engine - Jenkins 与谷歌云源存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49650148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com