[英]Jenkins/Hudson is not catching Perl script errors
我目前正在使用Jenkins / Hudson觸發Perl腳本,但是,我正在努力找出適當的例外情況是拋出一些Jenkins拾取它。 在控制台中,它顯示了Perl腳本錯誤,如預期的那樣,但Jenkins的Build Success結束了。
我已經嘗試過die命令和出口1的系統打印中的許多操作,但似乎仍然沒有發現任何問題。
任何幫助將是巨大的! 提前致謝!
Jenkins認為以非零值退出的構建步驟已失敗。 die()
應該足夠了
也許在perl之后有另一個shell命令以零退出? Jenkins看不到各個進程的每個退出代碼。 Jenkins只需將您輸入到構建步驟區域中的腳本放入一個臨時文件中,然后在臨時文件上調用/bin/sh
。 腳本失敗時由您決定是否以非零值退出腳本。
最簡單的方法是使用#!/bin/sh -xe
開頭腳本。 如果您學習Shell手冊頁,您將看到-e
選項使Shell每當有非零值的進程退出時都停止腳本。
我在Linux和Windows上運行Jenkins作業時遇到了這個問題。 我(艱難地)了解到Linux返回碼必須在0到255之間。如果返回碼不在此范圍內,則返回碼將設置為0。Perl文檔指出die()的返回碼為非零,但不再具體。 因此,如果die()調用生成的非零返回碼不在0到255之間,Linux會將其視為零。
我使用了TAP :: Harness :: JUnit 。 它將TAP輸出包裝在XML文檔中,然后將XML通過SCP傳遞到Hudson服務器,供Hudson使用。
為了使hudson命令正確地執行所有shell命令花費了一些時間,但是我的意思是兩到三個嘗試來正確設置所有路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.