我有一个Jenkins管道,它做了以下事情:
- 将另一个存储库检出到工作区
- 在流水线中,它执行一个shell脚本,该脚本:cd到该存储库中,然后执行一个python脚本,该脚本将帐户名(svc_account)和密码/令牌作为args。
这些密码/令牌从凭证(commons)传递到jenkinsfile中,即:
def setupUserPWdBindingVars(credentialsIdToUse = credID) {
this.steps.withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: credentialsIdToUse, usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
this.env.USERNAME = this.env.USERNAME
this.env.PASSWORD = this.env.PASSWORD
}
}
jenkinsfile:
stage('Run shell script') {
steps {
script {
commons.setupUserPWBindingVars(credID)
catchError(stageResult: 'FAILURE') {
withEnv([
"USERNAME=${USERNAME}",
"PASSWORD=${PASSWORD}",
]) {
commons.executeShellScriptFromFile('run_shell_script.sh')
}
}
}
}
}
run_shell_script。sh:
#!/bin/bash -xe
cd ${WORKSPACE}/my_repo
python3 running_myScript.py ${USERNAME} ${PASSWORD}
我们看到的问题是,当我们打开控制台日志时,我们可以看到密码/令牌。即控制台输出:
12:38:15 + python3 running_myScript.py svc_account '<<my password/token exposed>>'
1条答案
按热度按时间ttcibm8c1#
我认为,你的问题是由于使用
commons.executeShellScriptFromFile
如果您尝试执行shell命令或脚本的官方步骤
不打印值。
示例
输出
正如您所看到的,日志不包含可感知的数据,只包含执行结果