jenkins - 禁止来自 Jenkins 日志的敏感信息
问题描述
我想禁止显示在日志中的一些敏感信息。
代码:
pipeline {
parameters {
string(defaultValue: '', description: '', name: 'pki_client_cacert_password', trim: true)
string(defaultValue: '', description: '', name: 'db_url', trim: true)
}
stages {
stage('DeployToDev') {
steps {
script{
env.artifacts = sh(
returnStdout: true,
script: "/var/lib/jenkins/python_jobs/venv/bin/python3 /var/lib/jenkins/python_jobs/encrypter_creds.py --db_url=${env.db_url} --pki_client_cacert_password='${env.pki_client_cacert_password}'"
)
}
}
}
}
}
输出:
+ /var/lib/jenkins/python_jobs/venv/bin/python3 /var/lib/jenkins/python_jobs/encrypter_creds.py --db_url=<hide this from jenkins logs> '--pki_client_cacert_password=<hide this from jenkins logs>'
解决方案
第一个选项是将其设置为环境变量:
withEnv(["MYSECRET=${params.pki_client_cacert_password}",
"MYURL=${env.db_url}"]) {
env.artifacts = sh(
returnStdout: true,
script: '.. python3 .. encrypter_creds.py --db_url=$MYURL ' +
' --pki_client_cacert_password=$MYSECRET'
)
注意命令周围的单引号以防止任何 Groovy 字符串插值。
第二种选择是将类似pki_client_cacert_password
(希望不会有太大变化)之类的东西保存到 Jenkins Credentials Store 中并使用它withCredentials
:
withCredentials([usernamePassword(
credentialsId: 'MY_PKI_CLIENT_CREDENTIALS',
passwordVariable: 'DB_URL',
usernameVariable: 'PKI_USER')]) {
env.artifacts = sh(
returnStdout: true,
script: '.. python3 .. encrypter_creds.py --db_url=$DB_URL' +
' --pki_client_cacert_password=$PKI_PASSWORD'
}
您还可以推出您自己的第三个选项,例如,将您需要的信息写入文件并修改您的脚本以从该文件中读取参数。
推荐阅读
- react-native - 尝试从前端反应本机登录,收到错误:未定义电子邮件
- javascript - undefined 不是对象(评估 '_this.state')
- javascript - 今天之前的 Ant Design 禁用日期和其他自定义日期
- data-structures - 哈希表中的渐近运行时间
- c# - 返回字节数组时的LINQ字符串转换错误
- ruby - Ruby Google Drive API - web_content_link 上的 403 禁止
- c++ - std::complex 的 operator* 返回与复数乘法的手动公式不同的答案
- php - php substr() 和货币符号奇怪的输出
- python - discord.py 按内容获取消息
- android - android kotlin 确保仅在屏幕上触发 viewPager2 pageItem resume 的当前方法是什么?