Jenkins開啟丟棄舊的構建?你可要小心啊!

2022-01-10 20:41:23 字數 1954 閱讀 2333

玩devops的小夥伴應該對jenkins都有了解。

github上16.8k的star的專案,1500+的構建、發布等自動化外掛程式可供選擇,事實上的業界cicd標準領導者。

jfrog、coding等一眾你能見到的企業級的devops解決方案基本上都是用jenkins做引擎。

產研流水線用jenkins可以說真的很香。​但是前幾天它突然不聽話了,它也有不香的時候,手動裂開。

前幾天在做乙個jenkins job的遷移,由於是第一次搞,在遷移的過程中遇到了小意外,出了點小插曲。

起因是在遷移的過程中發現乙個歷史的ci的pipeline job對應build目錄特別大,執行下面的命令壓縮備份起來異常耗時,等的花兒都謝了。

# tar -czvf a-jobs-bak.tar.gz a-jobs
熟悉jenkins的同學都應該知道build目錄是用來存放job的歷史構建記錄的,於是進去之後執行下面的命令發現有近 n w個歷史構建記錄的資料夾沒刪除。

# ls | wc -l
所以就到job的配置頁面檢視job的配置,發現該job並沒有配置丟棄舊的構建的策略。

然後愉快的給該job配置了乙個丟棄舊的構建的策略

本以為萬事大吉,靜靜的等著jenkins清理歷史構建記錄即可,不想一會兒,就有不少同事反饋構建的流水線響應緩慢,有不少超時。

於是趕緊在瀏覽器中訪問jenkins,這個時候發現jenkins頁面載入已經異常緩慢,基本上已經打不開了。

沒有多想,第一反應就是剛配置的丟棄舊的構建策略生效後由於檔案過多,整個jenkins都在刪檔案導致的,所以就趕緊重啟jenkins。

# systemctl restart  jenkins
起來之後發現,瀏覽器中可以訪問jenkis,但是依然比較緩慢,這個時候感覺上面配置的丟棄舊的構建的策略依然在起作用,伺服器依然在忙於刪檔案。

這裡要說明的是設定丟棄舊的構建策略在提交之後並不會立即生效,而是在有新的任務進來並且執行完成之後才會觸發。

由於上面操作的是生產的ci,所有研發人員的構建部署事件都會通過中介軟體向上面提交,配置的丟棄舊的構建的策略提交之後立馬會有任務進來。

這個時候就觸發了丟棄舊的構建的執行,於是jenkins就開始忙於刪除數以萬計的檔案,然後就出現了上文中所述的問題。

總結一下本次得到的教訓就是在正常的jenkins服務時間內一定要謹慎的設定或者修改job的的丟棄舊的構建策略來讓jenkins去主動去刪除大量的歷史構建記錄,這會是個災難,會引起你的服務不可用。

所以我們在給有需要job配置丟棄舊的構建策略之前一定要先確定下伺服器上歷史構建記錄的數量。

如果該job下歷史構建記錄較多,達到了以萬計,建議你選擇在正常的jenkins服務時間內手動分批刪除,或者在服務使用量低峰或者服務維護時間進行刪除操作。

如果需要刪除的檔案數較少,你可以通過設定或者修改job的丟棄舊的構建策略等待jenkins自動刪除。

更推薦的做法是在job建立之初就給job配置丟棄舊的構建策略並且指定保持構建的最大次數為乙個較小的值。

jenkins的自動構建

jenkins的自動構建 3.構建後自動上傳到fir網路平台 問題總結 self hostedci 指的是將軟體部署在公司的機房或內網中,需要提供多台伺服器來完成 ci 系統的運轉,同時需要對不同機器之間進行環境配置。主流工具有jenkins,其他受歡迎的工具比如 baboom 及 teamcity...

Jenkins 的引數化構建

jenkins 的引數化構建 目錄有時在專案構建的過程中,我們需要根據使用者的輸入動態傳入一些引數,從而影響整個構建結果,這時 我們可以使用引數化構建。jenkins支援非常豐富的引數型別 回到web demo pipeline專案中取消所有構建觸發器選項 在觸發器上方,勾選this project...

Jenkins的分布式構建

1.架構 jenkins的master sl e分布式架構可以解決單點構建任務多 負載較高 效能不足的問題。2.原理 對於jenkins的分布式框架,可以簡單的理解為server client模式,在jenkins中是master sl e,也就是乙個主的server叫master,其他的子clie...