簡體   English   中英

在詹金斯讓工作失敗

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

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