我已经在 Jenkins 和 Vault 之间设置了连接,并使用“withVault”方法 https://www.jenkins.io/doc/pipeline/steps/hashicorp-vault-plugin/#hashicorp-vault-plugin
我正在詹金斯管道中从 Vault 检索 Vault 机密。 Secret 存储在环境变量 github_token 中,然后用于形成管道中访问 git 的 URL。检索秘密是有效的,问题是 $github_token 变量包含星号。
我需要它包含令牌的实际价值
def secrets = [
[path: 'ddci/data/test', engineVersion: 2, secretValues: [
[envVar: 'github_token', vaultKey: 'token']
]]
]
def configuration = [vaultUrl: 'https://vault.tools.sap/',
vaultNamespace: 's4',
vaultCredentialId: 'hashicorp_vault',
skipSslVerification: true,
engineVersion: 2]
管道{ 任何代理
stages{
stage('use token to authenticate GITHub') {
steps {
withVault([configuration: configuration, vaultSecrets: secrets]) {
sh 'git_url= https://username:${github_token}@github.tools.sap/AZURE-PIPELINES-SYSDEV/decdev-ci-verification'
git url: '$git_url', branch: 'master'
}
}
}
}
}
$github_token 变量不包含星号,Jenkins 在控制台上使用星号显示任何 Vault 密钥,以保护真实值。
如果您想检查 $github_token 值,请将其写入工作区中的文件,执行如下操作:
echo $github_token > token.txt
其他一些问题是阻止您访问 GitHub 服务器(令牌是否正确?路径是否正确?Jenkins 节点是否可以访问 GitHub?)。登录 Jenkins 节点并尝试手动执行相同的命令。
根据您发布的屏幕截图,似乎“找不到”URL 资源。这意味着 HTTP 状态代码为 404。
确保您的服务器 URL 正确,并且服务器配置为处理动态生成的 URL - 令牌可能每次都会不同,当然,除非您使用某种缓存机制并且脚本中有一些刷新令牌部分。 就我个人而言,我会使用一次性令牌(OTP),但是当然,这取决于您的安全要求。 祝你好运。