四.优雅使用凭证
上面写法比较啰嗦,为了解决这个问题,声明式pipeline提供了credentials helper方法(只能在environment中使用)来简化凭证的使用。
通过credentials helper方法,我们可以像使用环境变量一样使用凭证。 但遗憾的是,credentials helper方法只支持Secret text、Username with password、Secret file三种凭证。
保密文本
environment {
AWS_ACCESS_KEY_ID = credentials('aws-secret-key-id')
AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key')
}
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY使我们预先定义的凭证ID。creden-tials方法将凭证赋值给变量后,就可以正常使用了。如 echo “${AWS_ACCESS_KEY_ID}”
账号密码
environment {
BITBUCKET_CREDS = credentials('jenkins-bitbucket-creds')
}
与Secret text不同的是,我们需要通过BITBUCKET CREDS USR拿到用户名的值,通过BITBUCKET CREDS PSW拿到密码的值。而变量BITBUCKET CREDS的值则是一个字符串,格式为:<用户名>:<密码>
保密文件
environment {
KNOWN_HOSTS = credentials('known_hosts')
}
五.凭证插件
如果觉得Jenkins的凭证管理功能太弱,无法满足你的需求,则可以考虑使用HashiCorp Vault。
HashiCorp Vault是一款对敏感信息进行存储,并进行访问控制的工具。敏感信息指的是密码、token、秘钥等。它不仅可以存储敏感信息,还具有滚动更新、审计等功能。
集成HashiCorp Vault
1.安装HashiCorp Vault插件
2.添加Vault Token凭证
3.配置插件
pipeline
HashiCorp Vault插件并没有提供pipeline步骤,提供此步骤的是Hashicorp Vault Pipeline插件。但是它依赖的是2.138.1或以上的版本
如果你的Jenkins版本较低,但又想用这个插件。可以将该插件的源码下载到本地,将pom.xml的Jenkins。version值改成你的Jenkins版本。然后运行mvn clean package进行编译打包。若没有报错,则找到target/hashicorp-vault-pipeline.hpi进行手动安装
首先我们使用vault命令向vault服务写入私密数据以方便测试:vault write secret/hello value=word
pipeline {
agent any
environment {
SECRET = vault path:
'secret/hello', key:'value'
-
}
stages {
stage("read vault key")
{
steps {
script{
def x = vault path:
'secret/hello', key:'value'
echo "${x}"
echo "${SECRET}"
-
}
-
}
-
}
-
}
}
我们可以在environment和steps中使用vault步骤。推荐在environment中使用
- path 存储键值对的路径
- key 存储内容的键
- vaultUrl(可选),vault服务地址
- credentialsld(可选),vault服务认证的凭证。
如果不填vaultUrl与credentialsld参数,则使用系统级别的配置