我试图利用Jenkins credentials插件来存储我想注入到Kubernetes集群中的Secrets中的敏感数据。我有一个JenkinsFile,在我的项目中用于定义步骤,我添加了以下代码来从凭据中提取用户名/密码,并传递给shell脚本,以将文件中的占位符替换为实际文件:
stages {
stage('Build') {
steps {
withCredentials([usernamePassword(credentialsId: 'creds-test', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh '''
echo $USERNAME
echo $PASSWORD
chmod +x secrets-replace.sh
./secrets-replace.sh USERNAME_PLACEHOLDER $USERNAME
./secrets-replace.sh PASSWORD_PLACEHOLDER $PASSWORD
'''
}
echo 'Building...'
sh './gradlew build --refresh-dependencies'
}
}
...
}
字符串
然而,无论何时运行,我得到的都是被屏蔽的 * 值,即使我将它传递给shell脚本。下面是构建日志的一部分:
x1c 0d1x的数据
我需要配置什么才能访问未屏蔽的值吗?
5条答案
按热度按时间myss37ts1#
将变量写入jenkins中的一个文件。转到jenkins工作区并查看文件内部。令牌将以纯文本形式显示在那里。
更新
更简单的方法是打印凭证的
base64
编码值,然后对其进行解码。mm9b1k5b2#
就像上面添加的其他人一样,你可以把它写进一个文件,然后在withCredentials之外cat这个文件。你应该可以做到这一点。如下所示。
字符串
这将打印实际的凭据值
o7jaxewo3#
直接从文件中回显对我不起作用,所以我这样欺骗Jenkins,让他在调试过程中看到秘密:显然,在调试后立即删除它!
字符串
yizd12fk4#
考虑操作字符串
第一个月
像
字符串
j2datikz5#
如何在脚本控制台中查看所有secret值:
字符串