通过 groovy 脚本添加 Google 服务帐户凭据

Adding Google Service Account Credentials by a groovy script

我想在 init.groovy.d 上使用 groovy 文件初始值设定项添加 Google 服务帐户凭据。到目前为止,我可以定义 UserName-Password 凭据和 String 凭据。但是,Google API 密钥需要特殊的凭据类型:GoogleRobotPrivateKeyCredentials。我无法添加那种类型的凭据。

如何通过 groovy 脚本定义 Google 类型 GoogleRobotPrivateKeyCredentials 的服务帐户凭据?

似乎有一个答案link:https://github.com/jenkinsci/google-oauth-plugin/issues/5

我稍微修改了一下,因为这个答案在最新的 Jenkins 安装上不起作用:

import com.cloudbees.plugins.credentials.Credentials
import com.cloudbees.plugins.credentials.CredentialsStore
import com.cloudbees.plugins.credentials.SystemCredentialsProvider
import com.cloudbees.plugins.credentials.domains.Domain
import com.google.jenkins.plugins.credentials.oauth.GoogleRobotPrivateKeyCredentials
import com.google.jenkins.plugins.credentials.oauth.JsonServiceAccountConfig
import hudson.model.FileParameterValue.FileItemImpl
import org.apache.commons.fileupload.FileItem

def jsonFile = new File("/myfilepath/key.json")
def fileItem = new FileItemImpl(jsonFile)

def config = new JsonServiceAccountConfig()
config.setJsonKeyFileUpload(fileItem)

Credentials credentials = new GoogleRobotPrivateKeyCredentials("gpc", config, null)

SystemCredentialsProvider instance = SystemCredentialsProvider.getInstance()
CredentialsStore store = instance.getStore()
store.addCredentials(Domain.global(), credentials)