我正在尝试利用Jenkins凭据插件来存储我想要注入Kubernetes集群中的Secrets的敏感数据。我有一个JenkinsFile,在我的项目中用于定义步骤,我添加了以下代码从凭证中提取用户名/密码并传递给shell脚本,用实际文件替换文件中的占位符: p>
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脚本。以下是构建日志的一部分:
我是否需要配置一些东西才能访问未屏蔽的值?
答案 0 :(得分:2)
就像上面添加的其他内容一样,您实际上可以将其写入文件,然后将文件放在withCredentials之外。您应该对此感到满意。如下。
withCredentials([usernamePassword(credentialsId: 'creds-test', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh '''
echo $USERNAME > tmp
echo $PASSWORD >> tmp
'''
}
sh 'cat tmp'
这将打印实际的凭证值
答案 1 :(得分:0)
将变量写为jenkins文件。转到jenkins工作区并查看文件内部。令牌将以纯文本形式显示在此处。
答案 2 :(得分:0)
考虑操作字符串
echo env.PASSWORD.toCharArray().join(' ');
喜欢
stages {
stage('Build') {
steps {
withCredentials([usernamePassword(credentialsId: 'creds-test', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
script {
echo env.USERNAME.toCharArray().join(' ');
echo env.PASSWORD.toCharArray().join(' ');
}
sh '''
chmod +x secrets-replace.sh
./secrets-replace.sh USERNAME_PLACEHOLDER $USERNAME
./secrets-replace.sh PASSWORD_PLACEHOLDER $PASSWORD
'''
}
echo 'Building...'
sh './gradlew build --refresh-dependencies'
}
}
...
}