凭证可以是一段字符串如密码,私钥文件等,是Jenkins进行受限操作时的凭据。比如SSH登录远程服务器,用户名,密码或SSH key就是凭证。这些凭据不要明文写在Jenkinsfile中,Jenkins有专门管理凭证的地方和插件。
添加凭证步骤(需要有凭证权限,这里使用超级管理员身份)
image.png
image.png
image.png
参数:
关于Kind凭证类型,有如下几种:
添加凭证后,需要安装"Credentials Binding Plugin"插件,就可以在pipeline中使用withCredentials步骤使用凭证了。
// 通过 credentialsId 取出对应凭证,然后赋值给名为'my_dingtalk_token'(自己起)的变量
// 根据变量在其他step中使用
withCredentials([string(credentialsId: 'dingding-robot-token', variable: 'my_dingtalk_token')]) {
// 注意:构建记录中只会输出 ****
echo "${my_dingtalk_token}"
}
比如钉钉讨论组建立机器人后会提供给你webhook的地址https://oapi.dingtalk.com/robot/send?access_token=123456789abcde
,将后面的access_token 存到 Secret text 中。
如果觉得withCredentials比较麻烦,声明式pipeline还提供了 helper 方法,在environment中使用credentials('credentials-id')就可以方便取出。
注意:credentials 指令只能使用在 environment 段中,而且目前只支持Secret text,Username with password 和 Secret file 三种。
#!groovy
pipeline {
agent any
environment {
ding_robot_token = credentials('dingding-robot-token')
}
stages {
stage('debug') {
steps {
sh "printenv"
}
}
}
post {
success {
script {
// 输出 **** ,即在console中看不到真实信息
echo "${env.ding_robot_token}"
}
// 通知钉钉机器人,需要安装dingtalk插件
dingTalk accessToken: "${env.ding_robot_token}", imageUrl: '', jenkinsUrl: '', message: '构建成功', notifyPeople: ''
}
}
}
如果你要管理很多服务器密钥,数据库密码,用户密码或token等敏感信息,可以使用 Vault 他是hashicorp公司出品的专业管理机密和保护敏感数据的工具。
他有以下功能:
安装非常简单,就一个二进制包,直接运行即可。具体使用请参考官方文档写的非常清晰,再结合Jenkins的vault插件。就可以方便的管理凭证了。