postman+newman+xxljob定時運行並獲取報告狀態

好久沒寫了,換了新工作,比較忙

之前使用過postman的路徑很簡單,就是在postman裏寫接口,然後下載newman在服務器上,通過jenkins去構建,然後dingding插件通知構建結果。接口腳本 可以放到服務器上也可以放git;

新公司流程不大一樣,都是通過docker來的,並且定時任務也是xxljob裏執行的,這個導致問題就是我要多做好幾件事;

1.下載docker newman的鏡像--https://blog.csdn.net/weixin520520/article/details/106828552

2.配置xxljob 定時腳本

3.獲取接口執行的狀態,這裏要說明下,雖然xxljob有調度日誌,但因爲newman是在docker容器裏執行的,所以xxljob的成功狀態是指調起容器的成功,而非接口執行的本身,這個結果我要單獨去取

 

首頁服務器上配置docker,下載newman鏡像,具體操作過程請百度,網上都有,因爲本身公司服務器已經有docker了,所以我是直接用的,然後把接口和環境變量從postman導出,放到gitlab項目,然後在gitlab上配置docker file,newman的執行命令就在這裏

然後去xxljob去配置shell腳本 ,因爲這個是執行的shell腳本,所以要配置一個對應的執行器--開發搞的,我不懂

新增任務-10分鐘運行一次

GLUE IDE裏的腳本:

#!/bin/bash
echo "xxl-job: hello shell"

echo "腳本位置:$0"
echo "任務參數:$1"
echo "分片序號 = $2"
echo "分片總數 = $3"
docker run --rm -v $PWD/newman:/opt registry.cn-hangzhou.aliyuncs.com/jzx1000/k12-user-autotest:latest
JQ_EXEC=`which jq`
FILE_PATH=$PWD/newman/jsonReport.json
failures=$(cat $FILE_PATH | ${JQ_EXEC} .run.failures | sed 's/\"//g')
echo $failures
if [ "${failures}" = "[]" ]
then echo "測試報告---->>> success"    &
curl 'https://oapi.dingtalk.com/robot/send?access_token=901489840593ad21e12e3d8074dacdcd2af87bfadffceb30b8f8585f8819fad7' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "text","text": {"content": "接口執行成功啦-七月"}}'

else echo "測試報告---->>> fail" & 
curl 'https://oapi.dingtalk.com/robot/send?access_token=901489840593ad21e12e3d8074dacdcd2af87bfadffceb30b8f8585f8819fad7' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "text","text": {"content": "接口執行失敗-七月"}}'

fi

echo "Good bye!"
exit 0

大概思路:xxljob調起docker,docker裏運行newman命令,前面說了這裏不直接反應接口的執行狀態,所以我在前面的dockerfile裏追加了生成報告的命令-r cli,json --reporter-json-export,這樣每次接口腳本運行完後都會讀取這個報告(每次覆蓋),遍歷裏面是否有failures ,如果有則dingding通知

報錯的接口長這樣

 

最後還有一個更新代碼的問題,因爲我的是放到git上了,笨方法是每次手動更新鏡像包,方便點的是jenkins每次有代碼更新通過jenkins構建最新的代碼,然後自動push新鏡像包,這個具體的執行shell配置還是要問下開發或運維,因爲每個公司的地址可能不一樣,僅供參考啊,有一個點要注意,latest是最新的tag標記,因爲本身jenkins構建會有一個構建的序號+1,但newman執行命令的時候,這個包無法跟着jenkins的構建序號一起變化,所以簡單的辦法 就是指定jenkins的tag爲latest,這樣newman命令裏的包tag就不用來回變了docker run --rm -v $PWD/newman:/opt registry.cn-hangzhou.aliyuncs.com/jzx1000/k12-user-autotest:latest

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章