Jenkins调用的Bash脚本中curl命令未捕获URL问题排查
问题原因与解决方案
问题根源
Jenkins的密码掩码插件(或内置敏感信息掩码机制)会自动检测并替换日志中的敏感环境变量值。你原脚本里的写法'${Main_TOKEN}': '${url}',被掩码机制识别成了一个连续的敏感字符串段(因为单引号的连续包裹),所以从第一个单引号到最后一个单引号之间的所有内容都被替换成了****,导致URL部分也被吞掉了。
修复方案
方案1:拆分敏感值与URL的引号包裹
把认证部分的引号去掉,让冒号和URL独立出来,这样掩码只会作用于Main_TOKEN的值:
sq_url='https://product.team.com/api/quality' url="${sq_url}=${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}" echo $url echo "1" echo "curl -u ${Main_TOKEN}: ${url}"
方案2:拆分引号范围
如果必须保留单引号,把认证部分和URL的引号分开,避免连在一起触发整段掩码:
sq_url='https://product.team.com/api/quality' url="${sq_url}=${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}" echo $url echo "1" echo "curl -u '${Main_TOKEN}': '' '${url}'"
两种方案都能让Jenkins只掩码Main_TOKEN的内容,URL会正常出现在日志里。
内容的提问来源于stack exchange,提问作者AhmFM
相关产品推荐
相关产品推荐

