在 Jenkins 中使用来自 withCredentials 绑定的客户端证书

Using a Client Certificate from the withCredentials bindings in Jenkins

Jenkins 中有一个选项可以添加名为“X.509 客户端证书”的全局凭证 'Kind',我想在我的构建中安全地使用它来调用 RESTful API 使用 cURL。

我将客户端密钥、客户端证书、服务器 CA 链添加到相应的框中,添加一个 ID、一个描述,然后转到我的 Jenkins 管道。

现在我查阅文档 here 以了解如何使用 'withCredentials' 绑定来安全地实际使用我的密钥和证书。我没有看到任何关于使用 X.509 客户端证书的绑定的参考?我看到 'Certificate' 但这是一个不同的选项,例如不会公开私钥。

有人可以帮我理解在管道代码中,我在 withCredentials 块中使用什么来指定适当的类型,并为客户端证书、客户端密钥和服务器链传递变量名。

withCredentials([WhatHere?(credentialsId: 'myClientCert', variable?: 'key',variable2?: 'cert')]) {
    
}

非常感谢

X.509 客户端证书 选项是 docker 插件的一部分,最近更改了名称,因为它以前被命名为 Docker 证书目录(行为本身没有改变),因此很难在 withCredentials Documentation.
中找到它 您要查找的选项称为 dockerCert(以旧选项命名),它包括两个参数输入 variablecredentialsId:

dockerCert
variable Name of an environment variable to be set during the build.
Its value will be the absolute path of the directory where the {ca,cert,key}.pem files will be created. You probably want to call this variable DOCKER_CERT_PATH, which will be understood by the docker client binary.
Type: String
credentialsId Credentials of an appropriate type to be set to the variable.
Type: String

管道使用示例:

withCredentials([dockerCert(credentialsId: 'myClientCert', variable: 'DOCKER_CERT_PATH')]) {
    // code that uses the certificate files
}

在我的 Jenkins 上,它是

withCredentials([certificate(aliasVariable: 'ALIAS_VAR', 
    credentialsId: 'myClientCert', 
    keystoreVariable: 'KEYSTORE_VAR', 
    passwordVariable: 'PASSWORD_VAR')]) { 
... 
}

提示:如果您将 /pipeline-syntax/ 添加到您的 Jenkins URL,它会将您带到一个片段生成器,它会根据您的输入为您生成一些片段。这就是我用来生成上述代码段的内容。