在 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