[英]Making a job fail in jenkins
這個問題可能聽起來很奇怪,但我如何讓工作失敗呢?
我有一個 python 腳本,它使用 scons 編譯幾個文件,並且作為 jenkins 作業運行。 該腳本測試編譯器是否可以構建 x64 或 x86 二進制文件,如果它無法執行其中之一,我希望該作業失敗。
例如:如果我在 64 位系統上運行我的腳本並且它無法編譯 64 位。 我可以在腳本中做一些可能導致失敗的事情嗎?
如果腳本以非零狀態退出,則構建將失敗。
import sys
sys.exit(-1)
重要的是,當你的jenkins作業拋出異常或非零異常代碼時,運行你的python腳本是最后一步。 如果在此之后運行其他任何內容,即使回顯“我的工作已完成”也會更改錯誤代碼。
對我來說,以下是我的詹金斯工作失敗
echo "exit(1)" >> test.py python test.py
當我執行以下操作時,我的jenkins工作顯示為成功
echo "exit(1)" >> test.py python test.py echo "This changes my exit code back to 0, which is successful"
您可以隨時提出異常 。 如果未處理,應用程序將停止。 您甚至不需要指定要引發的異常。
if not yourTestHere:
raise
如果要指定消息,則只能引發標准異常。
from exceptions import Exception
if not yourTestHere:
raise Exception("Script failed because of bla bla bla")
我作為菜鳥遇到了這個問題,發現如果您通過 Jenkins 中的 Windows 批處理 shell 運行 python 腳本,則接受的答案會丟失一些東西。
在這種情況下,只有在 shell 中的最后一個命令失敗時,Jenkins 才會失敗。 因此,您的 python 命令可能會失敗,但如果在它之后有另一行更改目錄或其他內容,那么 Jenkins 將相信 shell 是成功的。
解決方案是在python行之后檢查錯誤級別:
如果 %ERRORLEVEL% NEQ 0(退出)
如果 python 行失敗,這將導致 shell 立即退出,導致 Jenkins 被標記為失敗,因為 shell 上的最后一行失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.