jenkins - 与 Jenkins 一起使用gcloud

标签 jenkins gcloud

我一直在尝试编写一个脚本,以定期轮询Google Cloud Storage。当我正常运行它时,它可以很好地工作,但是如果我将它作为Jenkins的构建步骤包括在内,则会产生403 Forbidden错误。这是因为Jenkins用户尚未完成gcloud auth login流程,因此需要复制验证码。如何使用Jenkins做到这一点?

编辑:

我在以下位置尝试了步骤:https://cloud.google.com/storage/docs/authentication#service_accounts并下载了一个类似于以下内容的JSON key :

{"web":{"auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","client_email":"....@project.googleusercontent.com","client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/....@project.googleusercontent.com","client_id":"....project.googleusercontent.com","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"}}

这真是奇怪,因为所有链接都指向诸如bad request, invalid request之类的东西。我一定做错了什么。我运行的命令是:
gcloud auth activate-service-account ...@project.googleusercontent.com --key-file /var/lib/jenkins/....project.googleusercontent.com.json

最佳答案

最好的选择可能是使用“服务帐户”来通过GCS服务对gcloud/gsutil进行身份验证。主要步骤是按照此处的说明使用生成JSON格式的私钥:

https://cloud.google.com/storage/docs/authentication#service_accounts

将该 key 复制到Jenkins用户可以阅读的位置,并在Jenkins用户运行时
gcloud auth activate-service-account ...

(请参阅https://cloud.google.com/storage/docs/authentication#service_accounts)。请注意,对JSON key 文件的支持是非常新的,您将需要最新的gcloud版本。

从那里,您的Jenkins进程应该能够照常访问GCS。

key 文件应具有以下格式:
{
  "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "private_key": "-----BEGIN PRIVATE KEY-----\n ...  \n-----END PRIVATE KEY-----\n",
  "client_email": "...@developer.gserviceaccount.com",
  "client_id": "..."
  "type": "service_account"
}

关于jenkins - 与 Jenkins 一起使用gcloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356497/

相关文章:

jenkins - 为什么在运行从正在运行的 jenkins 容器提交的镜像时作业和系统配置会丢失?

Jenkins 脚本管道 Sonar 集成

c# - 在Docker内部将npm安装后没有node_modules文件夹

windows-10 - 如何将 gcloud 添加到 Windows 10 中的路径

Jenkins 。如何从 POST BODY 获取触发器构建远程数据

ios - Crashlytics - 不允许协同设计用户交互

css - 根据数据更改css

google-cloud-platform - 如何以非交互式方式为 gcloud CLI 传递数据库的密码?

google-cloud-platform - 如何释放我错误保留的静态内部 IP 地址?

dns - 避免 gcloud edit 中不必要的转义