iT邦幫忙

DAY 13
0

探索 Jenkins-CI 從認識到應用系列 第 13

13. 砍掉重練 - 我總是相信下一次就會好了

我總是相信下一次就會好了

大家有碰過軟體平常用的好好的,突然間就壞掉了?處理的SOP,關掉再試一次,不行?重開Windows再試一次,還不行?只能打電話去機房罵人了『你們肯定有包乖乖剛剛過期啦!快找出來』。最後一項,解決了問題我還能理解,但前兩項為什麼解決了問題?很可怕,不要問,因為我答不出來......

為什麼出錯大家會想再試一次?因為經驗告訴我們,這通常是有用的!

本篇同步發表於:http://www.gibar.co/2014/10/jenkins-naginator-plugin.html

前一篇 [ Jenkins 作業逾時/超時處理 - Build-timeout Plugin ] 我們提到了作業逾時的問題,像這類的問題,95%應該重試都可以回復正常,有可能就只是當時網路有點不順暢罷了。雖然你只要回到Jenkins,再親自按下建置,這作業就又會重新開始運作,但我真心的希望Jenkins至少能幫我再試一次!本篇要介紹的是Naginator Plugin,專門幫我們在作業失敗時安排重試。

本篇使用外掛

目標情境

作業失敗時,重試建置

第一步,認識Naginator Plugin設定


Naginator plugin 基本設定

重試,是屬於作業完成後(post-build) 的設定,所以我們可以在『新增建置後動作』的裡面找到『Retry build after failure』,設定的項目不多

  • Rerun build for unstable builds as well as failures 除了建置失敗()外,建置不穩定()也會重試
  • Rerun build only for failed parts on the matrix 在Matrix專案下,只會針對錯誤的部份重試,不會重跑整個Matrix
  • Delay before retrying build指定重試等待時間
  • Maximum number of successive failed builds設定重試次數上限,無若設定就是無限次,所以請記得一定要設定

其中重試等待時間還有子項目設定

  • Fixed
    指定的固定的等待時間
  • Progressive (bug中......預計在10/16更新)
    每次重試等待時間不斷累加,或達上限值

第二步,配合逾時,測試是否重試


模擬3秒就算逾時的情境


使用固定的等待時間,30秒後重啟作業

It's work! 重試的作業會有特別的圖示標記

重試是很簡單,但如果造成問題時也會很麻煩,首先無止盡的重試是絕對不可能有用的。再來,若是在負載繁重的作業點的重試,是否引發資源不足?讓結果又回到上一篇死結的現象。重試不一定要在幾分鐘內開始,你可以讓他拖上一陣子是沒問題的。

逾時與重試,這兩篇是很簡單議題。但對一套商轉的Jenkins服務,如果需要人盯著是否有逾時,然後再手動去中止與重啟作業......這就不是Jenkins的美意了,然而我真的為這件事盯了三個月之久,那是個辛苦的往事......

經過兩天比較簡單的主題,為了寫一個麻煩的進階主題,Matrix。新增作業,目前為止我們都只用到了Free-Style來建立,其中一個『建立多重設定專案』到底是怎麼個多重法?可以做什麼樣的事?這應該值得我們拆成幾集,好好的跟大家講講。

下一篇:駭客任務 - 利用Jenkins進行相依性測試 (上)

本篇同步發表於:http://www.gibar.co/2014/10/jenkins-naginator-plugin.html


上一篇
12. 骨牌效應 - 佔著茅坑不拉屎,排隊的人急到死
下一篇
14. 駭客任務 - 利用Jenkins進行相依性測試 (上)
系列文
探索 Jenkins-CI 從認識到應用16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言