簡體   English   中英

是否可以將Jenkins管道中的sh DSL命令的所有輸出發送到文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM