玩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...