我正在尝试使用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
现在我面临两个问题
致命:无法打电话 com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject() :序列化失败 com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote#凭证 上课 com.google.jenkins.plugins.source.GoogleRobotUsernamePasswordModule $ ForRemote ----调试信息----消息:无法调用com.google.jenkins.plugins.source.GoogleRobotUsernamePassword.writeObject() cause-exception:java.lang.RuntimeException cause-message: 无法序列化 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)
问题:如何在Jenkins中验证Google Cloud Source存储库?在Jenkins中使用Google Cloud Source资源库需要哪些步骤?
答案 0 :(得分:4)
您可能需要向运行Jenkins的计算引擎虚拟机实例添加一个缺少的范围,以使其可以访问Cloud Source Repository。您可以按照documentation或此步骤进行操作,这些步骤很方便。
VM instance details
Stop
实例Edit
并为Cloud Source Repository设置正确的访问范围启动VM实例后,尝试再次添加git存储库,一旦选择了凭据,就可以从#34; Google服务帐户中获取元数据"或者从服务帐户,一切都应该正常工作。
我偶然发现了"无效的身份验证凭据。"尝试在部署Jenkins from Launcher后添加云源存储库时出现问题。
就我而言,发生这种情况的原因是,在部署过程中,计算引擎虚拟机实例上的云源存储库的Cloud API access scope设置为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
答案 1 :(得分:1)
我将插件更新为0.6版本。 在0.6版本中,我在Jenkins“Free-style”项目中遇到了同样的问题。 我可以在Jenkins“管道”项目中成功结账。 我只是在其他项目中复制“checkout语法”并将右边的两部分语法替换为:
凭证 - >替换为您在jenkins中从私钥创建Google服务帐户的正确凭据ID。 url - >替换为您的google源代码库网址