我需要在keeper命名空间中从Vault获取凭据,并在Jenkins管道中使用withVault
指令而不是withCredentials
。我在使用withVault
时遇到了问题。
在jenkins pipeline中使用withCredentials
指令可以正常工作。
withCredentials([gitUsernamePassword(credentialsId: 'BITBUCKET_ACCESS_TOKEN_TDM', gitToolName: 'git')]) {
String tagName = "${branchName}/${params.RELEASE}-${env.BUILD_NUMBER}"
sh """
git tag ${tagName}
git push origin --tags
"""
}
字符串
控制台输出:
12:54:23 + git tag gen_testing/8.4.1-246
12:54:23 + git push origin --tags
12:54:30 To https://bitbucket.company.com/bitbucket/scm/genpower/genpower-core.git
12:54:30 * [new tag] gen_testing/8.4.1-246 -> gen_testing/8.4.1-246
12:54:31 Everything up-to-date
型
下面是我为withVault
使用的配置。
withVault(
configuration: [
timeout: 60,
vaultCredentialId: 'tdmapprole',
vaultNamespace: 'genpower/tdm',
vaultUrl: 'https://nat.keeper.company.com'
],
vaultSecrets: [
[
engineVersion: 2,
path: 'credentials/bitbucket_access_token',
secretValues: [
[
envVar: 'BITBUCKET_ACCESS_TOKEN_TDM',
vaultKey: 'tgen-tdm-tbs.gen'
]
]
]
]
) {
String tagName = "${branchName}/${params.RELEASE}-${env.BUILD_NUMBER}"
sh """
git tag ${tagName}
git remote set-url origin https://tgen-tdm-tbs.gen:${env.BITBUCKET_ACCESS_TOKEN_TDM}@bitbucket.company.com/bitbucket/scm/genpower/genpower-core.git
git push origin --tags
"""
}
}
型
我得到下面的错误。
09:57:54 + git push origin --tags
09:57:54 fatal: could not read Username for 'https://bitbucket.company.com': No such device or address
型
请注意,我使用访问令牌来推送标签。访问令牌没有任何特殊字符,除了/
。从keeper命名空间检索令牌工作正常。
感谢任何关于这方面的投入。谢谢!
1条答案
按热度按时间9o685dep1#
错误是由于缺少url编码。添加后,它工作了。访问令牌包含特殊字符,由于它失败的错误。如果访问令牌包含下面的任何特殊字符,请将其替换为url编码的表示形式。
字符串
因此,首先我将保存令牌的变量从
${BITBUCKET_ACCESS_TOKEN_TDM}
更改为${BITBUCKET_ACCESS_TOKEN_TDM/"/"/"%2F"}
。但是用
%2F
替换/
的转义序列可能会让人头疼,对此有一个简单得多的解决方案。型
请注意,如果您不关闭bash
(set +x)
调试,凭据将打印在作业控制台中。