[英]Is it possible to capture the stdout from the sh DSL command in the pipeline
[英]Is it possible to send all output of the sh DSL command in the Jenkins pipeline to a file?
我正在嘗試整理我的詹金斯輸出。 感謝是否可以從管道中的sh DSL命令捕獲stdout ,我知道我可以將每個sh命令的輸出發送到文件。 但是,命令本身仍將寫入Jenkins輸出而不是文件中。 例如:
sh '''echo "Hello World!"
./helloworld
./seeyoulater
'''
照原樣,這導致Jenkins輸出看起來像這樣:
echo "Hello World!"
Hello World!
./helloworld
<helloworld output, possibly many lines>
./seeyoulater
<seeyoulater output, possibly many lines>
但是,如果將輸出發送到文件,則會得到Jenkins輸出,如下所示:
echo "Hello World!" > output.log
./helloworld >> output.log
./seeyoulater >> output.log
和output.log看起來像這樣:
Hello World!
<helloworld output>
<seeyoulater output>
這導致我的Jenkins輸出變得混亂,但是output.log最終在腳本輸出之間沒有任何分隔符。 我想我可以在每個命令之前都添加echo <command>
,但這只是意味着我的Jenkins輸出再次變得更加混亂。
是否可以將sh
DSL命令的整個輸出發送到文件? 基本上像sh '''<commands here>''' > output.log
是我正在尋找的東西。
我找不到解決方案,但確實找到了解決方法。 如sh命令文檔中所述,缺省值是使用-xe
標志運行。 -x
標志是在Jenkins輸出中顯示命令的原因。 補救措施是添加set +x
:
sh '''set +x
echo "Hello World!" > output.log
./helloworld >> output.log
./seeyoulater >> output.log
'''
set +x
顯示在Jenkins輸出中,但其余命令未顯示。 從那里開始,只需在其中添加足夠的echo
語句以使output.log
足夠的可讀性即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.