簡體   English   中英

為什么 Jenkins 捕獲的標准輸出忽略控制台 output 上的換行符?

[英]Why is Jenkins captured stdout ignoring newlines on console output?

這是有史以來最奇怪的事情,我一直在轉動我的輪子,但我似乎無法弄清楚。 自從我為 Jenkins 啟用 retain long output 以來,它一直在從我的 Pytest 捕獲的標准輸出設置中忽略 output 塊上的換行符,但在其他任何地方,如果您查看捕獲的標准輸出:換行符變成文字字符而不是實際換行符:

捕獲的標准輸出設置

但是,如果您查看控制台 output 的任何其他部分,它看起來 100% 沒問題:

捕獲的 stderr 設置

這讓我大吃一驚,因為 jUnit xml 看起來不錯,如果我在任何終端上運行帶有 -s 標志的 pytest,甚至在 Jenkins 上,它看起來也不錯。 即使我關閉保留長 output,它看起來完全沒問題,但這會截斷控制台 output,這對於我想要做的事情來說不太理想。

有人知道為什么會這樣嗎?

感謝您閱讀本主題。

我在 Windows 跑步者上使用 GitHub 動作時遇到了類似的問題。

問題似乎是標准輸出不會進入控制台,因此默認情況下不使用 UTF-8 編碼 這意味着如果有任何非 CP-1252 字符,pytest 在嘗試寫入 output 時會出現UnicodeEncodeError ,因此它回落到 escaping包括換行符在內的所有內容。

我的解決方案是通過設置環境變量PYTHONUTF8=1強制 UTF-8 。

在您的 ansible.cfg 中,更改默認回調:

stdout_callback = debug

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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