中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

CI腳本異常退出問題的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹CI腳本異常退出問題的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于營(yíng)口網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供營(yíng)口營(yíng)銷型網(wǎng)站建設(shè),營(yíng)口網(wǎng)站制作、營(yíng)口網(wǎng)頁設(shè)計(jì)、營(yíng)口網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造營(yíng)口網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供營(yíng)口網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

背景

在CI腳本中,使用類似如下腳本進(jìn)行項(xiàng)目編譯的計(jì)時(shí),但在執(zhí)行過程中,有時(shí)會(huì)出現(xiàn)CI腳本(命名為ci.sh)未完全執(zhí)行的情況:


#!/bin/bash -e

sleep_time=$1

start_time=`date "+%s"`
# do sth, this sleep would simulate project compilation
sleep $sleep_time
end_time=`date "+%s"`

process_time=`expr \( end_time - start_time \)`
echo "---- process time(sec) are: " $process_time "seconds"

# ...

這個(gè)腳本,只是模擬我們?cè)贑I中的程序,項(xiàng)目編譯前計(jì)時(shí),項(xiàng)目編譯后再次計(jì)時(shí),通過sleep休眠來模擬CI中項(xiàng)目編譯鎖消耗的時(shí)間,然后計(jì)算出消耗的時(shí)間。這個(gè)簡(jiǎn)化的腳本邏輯很簡(jiǎn)單,我們通過以下命令來調(diào)用:

# ./ci.sh
---- process time(sec) are: 2 seconds

這樣執(zhí)行好像并不會(huì)出錯(cuò),那實(shí)際CI中為什么會(huì)出錯(cuò)呢?

分析

首先,我們發(fā)現(xiàn),當(dāng)出現(xiàn)腳本未完全執(zhí)行完成時(shí),不會(huì)打印“process time(sec) are”這一句,也就是說錯(cuò)誤是這句之前引起的。

另外,細(xì)心的朋友還會(huì)發(fā)現(xiàn),在腳本的首行,我們給bash使用了-e參數(shù),這個(gè)參數(shù)的作用就是,一旦shell腳本中任何一行出現(xiàn)了錯(cuò)誤,shell腳本就停止運(yùn)行。所謂的出現(xiàn)錯(cuò)誤,也就是這行語句的返回值為非零。那么,CI腳本未完全執(zhí)行的原因,很可能就是因?yàn)槟骋恍姓Z句出現(xiàn)了錯(cuò)誤,導(dǎo)致腳本直接退出。

通過增加打印“echo $?”來打印上一行語句的執(zhí)行結(jié)果,很快定位到報(bào)錯(cuò)的語句在計(jì)算處理時(shí)間的這一行:

process_time=`expr \( end_time - start_time \)` 

這一行看起來十分普通,只是簡(jiǎn)單的用終止時(shí)間減去開始時(shí)間,然后賦值給process_time。為什么會(huì)返回非0值呢?

原來,expr命令有一個(gè)小小的trick,當(dāng)expr表達(dá)式中的計(jì)算結(jié)果為0時(shí),expr命令就會(huì)返回1,而不是通常的0。在我們實(shí)際的CI任務(wù)中,一旦某個(gè)項(xiàng)目編譯時(shí)間非常短,在1秒鐘內(nèi)完成,那么起止時(shí)間系統(tǒng),其差值也就為0,因此,expr就會(huì)返回非零值,而CI腳本也會(huì)因此而退出。

以上是“CI腳本異常退出問題的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱:CI腳本異常退出問題的示例分析-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.rwnh.cn/article4/dscsie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)用戶體驗(yàn)、定制開發(fā)虛擬主機(jī)、云服務(wù)器、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
名山县| 祁阳县| 和硕县| 伽师县| 奇台县| 新巴尔虎右旗| 柏乡县| 六枝特区| 丽江市| 紫金县| 阜宁县| 万盛区| 奇台县| 涞水县| 榆社县| 芒康县| 平罗县| 东兰县| 成都市| 桦川县| 瑞昌市| 娱乐| 安达市| 津南区| 隆子县| 颍上县| 新竹市| 静乐县| 德阳市| 稷山县| 怀仁县| 靖江市| 卢氏县| 霸州市| 凤阳县| 库车县| 黑水县| 登封市| 和静县| 瑞金市| 新安县|