Jenkinsfile中withCredentials支持的凭证类型、参数及GUI显示问询
Jenkins withCredentials 支持的凭证类型详解
下面是Credentials Binding插件中withCredentials支持的所有凭证类型,包含对应的关键字、参数及Jenkins GUI中的呈现方式:
1. 用户名密码凭证
- 关键字:
usernamePassword - 参数:
credentialsId:必填,对应Jenkins凭证库中该凭证的唯一IDusernameVariable:可选,指定存储用户名的环境变量名,默认值为USERNAMEpasswordVariable:可选,指定存储密码的环境变量名,默认值为PASSWORD
- GUI呈现:在Jenkins凭证创建界面选择「用户名和密码」类型,填写用户名、密码,可添加描述信息。
- 示例代码:
withCredentials([usernamePassword( credentialsId: 'prod-db-creds', usernameVariable: 'DB_USER', passwordVariable: 'DB_PASS' )]) { sh 'mysql -u${DB_USER} -p${DB_PASS} -e "SHOW DATABASES;"' }
2. 保密字符串凭证(Secret Text)
- 关键字:
string - 参数:
credentialsId:必填,凭证的唯一IDvariable:必填,指定存储保密字符串的环境变量名
- GUI呈现:选择「Secret text」类型,输入需要保密的字符串(如API密钥、Token),添加描述。
- 示例代码:
withCredentials([string( credentialsId: 'github-api-token', variable: 'GITHUB_TOKEN' )]) { sh 'curl -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/user' }
3. 保密文件凭证(Secret File)
- 关键字:
file - 参数:
credentialsId:必填,凭证的唯一IDvariable:必填,指定存储文件路径的环境变量名(Jenkins会将凭证文件临时复制到节点上,该变量指向临时文件路径)
- GUI呈现:选择「Secret file」类型,上传本地的保密文件(如配置文件、密钥文件),添加描述。
- 示例代码:
withCredentials([file( credentialsId: 'aws-config-file', variable: 'AWS_CONFIG_PATH' )]) { sh 'aws configure --profile prod set config_file ${AWS_CONFIG_PATH}' }
4. SSH用户名+私钥凭证
- 关键字:
sshUserPrivateKey - 参数:
credentialsId:必填,凭证的唯一IDusernameVariable:可选,存储SSH用户名的环境变量名,默认值为USERNAMEprivateKeyVariable:可选,存储私钥内容的环境变量名,默认值为SSH_PRIVATE_KEYpassphraseVariable:可选,存储私钥密码的环境变量名(仅当私钥设置了密码时需要)
- GUI呈现:选择「SSH Username with private key」类型,填写用户名,可选择直接粘贴私钥内容或从本地文件加载私钥,若私钥有密码则填写Passphrase,添加描述。
- 示例代码:
withCredentials([sshUserPrivateKey( credentialsId: 'server-ssh-key', usernameVariable: 'SSH_USER', privateKeyVariable: 'SSH_KEY' )]) { sh 'ssh -i ${SSH_KEY} ${SSH_USER}@server.example.com "uptime"' }
5. 证书凭证(PKCS#12)
- 关键字:
certificate - 参数:
credentialsId:必填,凭证的唯一IDkeystoreVariable:必填,存储密钥库临时文件路径的环境变量名passwordVariable:可选,存储密钥库密码的环境变量名aliasVariable:可选,存储证书别名的环境变量名(当密钥库包含多个证书时使用)
- GUI呈现:选择「Certificate」类型,上传PKCS#12格式的证书文件,填写密钥库密码,可添加证书别名和描述。
- 示例代码:
withCredentials([certificate( credentialsId: 'client-cert', keystoreVariable: 'KEYSTORE_PATH', passwordVariable: 'KEYSTORE_PASS' )]) { sh 'java -Djavax.net.ssl.keyStore=${KEYSTORE_PATH} -Djavax.net.ssl.keyStorePassword=${KEYSTORE_PASS} MyApp' }
6. 多凭证集合
- 关键字:
multi - 参数:
credentials:必填,包含多个其他凭证类型的数组,可同时绑定多种不同类型的凭证
- GUI呈现:无单独的GUI创建类型,需在
withCredentials中组合已创建的各类凭证使用。 - 示例代码:
withCredentials([multi( credentials: [ usernamePassword(credentialsId: 'db-creds', usernameVariable: 'DB_USER', passwordVariable: 'DB_PASS'), string(credentialsId: 'api-token', variable: 'API_TOKEN') ] )]) { sh 'python app.py --db-user ${DB_USER} --db-pass ${DB_PASS} --api-token ${API_TOKEN}' }
内容的提问来源于stack exchange,提问作者cowlinator
相关产品推荐
相关产品推荐

