需求簡介
由于業(yè)務需要,因此在生產(chǎn)環(huán)境中設定了每兩個小時執(zhí)行最高優(yōu)先級的自動化測試case松忍。主要有以下幾點需要實現(xiàn)
? ? 每兩小時執(zhí)行一次
? ? 當job執(zhí)行失敗時郵件通知相關人員
? ? 通知結果中可方便的查看結果報告方便定位問題與處理問題
出現(xiàn)的問題與解決方案
發(fā)送郵件以及報錯時發(fā)郵件通知的相關內(nèi)容網(wǎng)上有很多闷畸,在此就不做展開了播揪。僅就我個人遇到的一些問題做了一些總結榛丢。
Round1:
? ? 最開始我只用了一個job來實現(xiàn)以上需求馏臭,shell腳本如下:
主要步驟為:
? ? 切換到生產(chǎn)環(huán)境
? ? 執(zhí)行測試用例
? ? 發(fā)送測試結果
當job正常執(zhí)行的時候边坤,一切看起來都很完美名扛,可以正常上傳報告;然而當執(zhí)行測試用例失敗的時候茧痒,后面發(fā)送測試結果的命令就不在執(zhí)行了肮韧,非常的糟糕。當我過年的時候收到線上異常提醒然而發(fā)現(xiàn)報告沒更新旺订,jenkins是內(nèi)網(wǎng)環(huán)境需要vpn的時候內(nèi)心是崩潰的弄企。這個時候我的第一想法是不管測試報告是否執(zhí)行成功,都執(zhí)行發(fā)送報告的命令区拳,在網(wǎng)上查了一下之后我把命令改成了或命令拘领。如下圖
不管怎樣發(fā)送報告的命令都會執(zhí)行,看起來ok了樱调。然而實際執(zhí)行又發(fā)現(xiàn)了問題约素,報告確實是每次都上傳了届良,然而...這個job執(zhí)行顯示成功了,我配置的
不在生效圣猎,異常時發(fā)送給相關人員的郵件不在發(fā)送了士葫。此時我感覺到一個job無法實現(xiàn)我的需求,因此我決定改為兩個job送悔。
Round2:
主要的思路
? ? 執(zhí)行測試用例是一個單獨的job慢显,當job失敗的時候發(fā)送郵件給相關人員
? ? 上傳測試報告到指定文件夾單獨做一個job,在每次執(zhí)行測試用例的job結束后執(zhí)行
執(zhí)行測試用例job中的主要配置如下:
在這里我設置了
? ? always trigger 總是執(zhí)行
? ? 并傳遞了BUILD_ID參數(shù)方便找到測試報告(測試報告是已BUILD_ID做唯一標識的)
昨天在配置這里主要碰到的坑是:
1.執(zhí)行測試用例的job 跟 發(fā)送測試報告的job沒有放在同一工作空間(workspace)下欠啤,導致發(fā)送測試報告的時候無法找到測試報告
2.腦抽的以為兩個job荚藻,第一個job切換了環(huán)境之后,第二個job不用切換環(huán)境跪妥,結果執(zhí)行用例的job在生產(chǎn)環(huán)境上執(zhí)行鞋喇,發(fā)送報告的job在測試環(huán)境上執(zhí)行。報了一個上傳文件夾不存在的錯誤眉撵。在開發(fā)機上調(diào)試了半天才發(fā)現(xiàn)是環(huán)境問題侦香。在發(fā)送報告的job中增加了切換到生產(chǎn)環(huán)境的配置后,問題解決纽疟。
總結
? ? 一個看似簡單的小需求罐韩,結果我花了年前一天,年后一天才把這個功能最終弄好污朽。越是簡單的東西越容易出錯散吵。比如說環(huán)境問題,非常簡單的錯誤蟆肆,結果花了大半天時間來解決矾睦。越簡單的東西更是需要仔細才能做好。2018第二天上班炎功,加油枚冗!