隐藏Jenkinsfile敏感信息
隐藏Jenkinsfile敏感信息
简介
官网资料:指令environment。
https://www.jenkins.io/zh/doc/book/pipeline/syntax/#environment
不过官网只给了简单解释。下面做一些总结:
与parameter
l类似,定义在最外层则作用全局,定义在stage内则作用在stage里。它是一个键值对key=value形式定义。
我们关注的是它额外的凭证函数credentials()
,可以获取Jenkins配置的凭证信息。
注意:凭证函数传递的参数是“唯一标识”,不是“名称”。如果拿名称做为参数,控制台只会报步骤失败,但不会打印任何可供定位的日志。
语法
environment {
USER = credentials('2d374262-9f96-4e21-af4d-c200aea61b96')
}
对于text类型的凭证,密码直接会赋予变量;对于userName:passwd
类型凭证,除了会以username:password
赋值给变量外,还会自动添加_USR
、_PSW
后缀的变量。
所有凭证的变量,在控制台中都是*
Jenkins全局添加凭证
【系统管理】->【Manage Credentials】->【Stores scoped to Jenkins】点击“全局”。
左侧导航会有“添加凭据”按钮。
Id可以自己命名,也可以不填由系统分配。
一个完整案例的Jenkinsfile
pipeline {
agent any
stages {
stage("stage: get dingding webhook") {
environment {
DINGDING_WEBHOOK = credentials('dingding_webhook')
USER = credentials('1954521e-04c3-485e-b0aa-69b57702d3b9')
}
steps {
sh 'env'
sh 'echo dingding webhook'
sh """curl '${DINGDING_WEBHOOK}' -H 'Content-Type: application/json' -d '{"at":{"atMobiles":[153***]}, "msgtype":"actionCard","actionCard":{"title":"Jenkins Credentials.", "text":"## Credentials Secret \n\n ![](http://47.119.XX.XX/src/assets//img/girls/18.jpg) \n\n **Build ID**: ${BUILD_ID} \n\n @153***","btns":[{"title":"Yes","actionURL":"${BUILD_URL}"}]}}'"""
}
}
}
post {
always {
echo 'This will always run'
}
success {
echo 'successful'
}
failure {
echo 'failed'
}
}
}
敌人总是会在你最不想它出现的地方出现!