我的詹金斯工作似乎因一个非常奇怪的原因而失败。当我看到控制台输出时,我可以看到以下内容:
+ cat + jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]'
+ tee change.json
然后我再次运行该作业,它执行得非常好:
+ cat change.json
+ cat + jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]'
+ tee change.json
我真的不确定为什么在
cat
命令之后添加“+”。这是我以前在詹金斯中从未见过的奇怪行为。这有什么原因吗?
以下是作为我的詹金斯工作的一部分运行的命令:
sh """ cat change.json | jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' | tee change.json """
我尝试查看 bash 参考手册,但找不到对我所看到的这个问题的太多解释:https://www.gnu.org/software/bash/manual/bash.html#index-PS1
Jenkins 控制台输出中的“+”符号是 Jenkins 显示命令已执行的方式的一部分。特别是当
set -x
启用时。
您的命令的问题可能是由于使用
tee
写入您正在使用 cat 读取的同一文件。这可能会导致问题,因为文件是同时读取和写入的。
也许如果将内容存储在临时文件中会更好,如下所示:
jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' change.json > temp.json && mv temp.json change.json