在 Jenkinsfile 中提取密钥对值
Extract key-pair value in Jenkinsfile
我有这个 jenkinsfile,我在其中从 Hashicorp 保险库获取值。秘密在键值对中。我已将其存储在 secret_key 变量中。我如何从中提取值
node {
withCredentials([[$class: 'VaultTokenCredentialBinding',
addrVariable: 'VAULT_ADDR',
credentialsId: 'token',
tokenVariable: 'VAULT_TOKEN',
vaultAddr: 'http://ip:8200']]) {
script{
secret_key = sh (
script: 'vault kv get -format json -field=data kv/secret',
returnStdout: true
)
}
}
}
输出:
+ vault kv get -format json -field=data kv/secret
{
"password": "admin",
"username": "admin"
}
Vault CLI returns JSON 字符串到 stdout
,因此您可以使用 readJSON
步骤方法在您的管道中相应地解析它:
secretKeyMap = readJSON(text: secret_key)
之后,readJSON
方法 returns 从 JSON String 转换而来的 Map 类型,因此您也可以使用正确的语法相应地解析它:
secretKeyMap['password'] // admin
secretKeyMap['username'] // admin
secretKeyMap.password // admin
secretKeyMap.username // admin
我有这个 jenkinsfile,我在其中从 Hashicorp 保险库获取值。秘密在键值对中。我已将其存储在 secret_key 变量中。我如何从中提取值
node {
withCredentials([[$class: 'VaultTokenCredentialBinding',
addrVariable: 'VAULT_ADDR',
credentialsId: 'token',
tokenVariable: 'VAULT_TOKEN',
vaultAddr: 'http://ip:8200']]) {
script{
secret_key = sh (
script: 'vault kv get -format json -field=data kv/secret',
returnStdout: true
)
}
}
}
输出:
+ vault kv get -format json -field=data kv/secret
{
"password": "admin",
"username": "admin"
}
Vault CLI returns JSON 字符串到 stdout
,因此您可以使用 readJSON
步骤方法在您的管道中相应地解析它:
secretKeyMap = readJSON(text: secret_key)
之后,readJSON
方法 returns 从 JSON String 转换而来的 Map 类型,因此您也可以使用正确的语法相应地解析它:
secretKeyMap['password'] // admin
secretKeyMap['username'] // admin
secretKeyMap.password // admin
secretKeyMap.username // admin