該賞金過期4天。此問題的答案有資格獲得 150聲望獎勵。 弗蘭斯想引起更多人對這個問題的關注。
我知道我缺乏基本的 Jenkins 概念,但以我目前的知識,很難成功進行研究 - 也許你可以給我一些提示,我可以在需要時用來重新表述我的問題。
目前我面臨的情況是,在具有多個構建節點的設定中,Jenkins 主計算機磁盤空間不足,因為 Jenkins 在主節點和構建節點上都克隆了 git 存盤庫(并且主節點只有有限的空間)。
通過作業配置和谷歌搜索這個問題,我找到了關于淺層和稀疏克隆的選項,或者使用清理插件在構建之前或之后清理作業區
但是,如果我想保留構建節點上的情況,但保持 Jenkins 主機上的作業區檔案夾很小,我該如何處理?我需要搜索什么?
作為一個附帶問題 - 難道不可能有“git匯出”之類的東西嗎?即.git在簽出我需要的提交后洗掉檔案夾?
如果這取決于我使用的作業型別,我使用的是腳本化管道作業。
uj5u.com熱心網友回復:
我有一個類似的設定:一個主節點,多個構建節點。
簡單地說,我將主節點上的執行程式數設定為 0(從管理 Jenkins -> 管理節點),因此每個作業都將登陸構建節點。
在 master 上克隆的唯一 repo 是共享庫。
uj5u.com熱心網友回復:
不鼓勵在主節點中運行 Jenkins 構建,主要有兩個原因:
- 首先,Jenkins 平臺的可用性可能會受到許多正在進行的構建的影響,例如顯示某些操作的延遲。
- 正如檔案所指出的,這是一個眾所周知的安全問題:
在內置節點上運行的任何構建都具有與Jenkins 行程相同級別的控制器檔案系統訪問權限。
因此,強烈建議不要在內置節點上運行任何構建,而是使用代理(靜態配置或由云提供)來運行構建。
始終在該 wiki 頁面中,您可以找到有關此安全問題的詳細資訊,例如攻擊者可以做什么以及允許您使用主節點構建但修補一些列出的安全問題的替代方法。該解決方案基于名為Job Restrictions Plugin 的插件。
順便說一句,最流行的決定是讓從節點進行構建:
要防止構建直接在內置節點上運行,請導航到管理 Jenkins ? 管理節點和云。在串列中選擇 master,然后在選單中選擇 Configure。將執行器的數量設定為 0 并保存。確保還設定了云或構建代理來運行構建,否則構建將無法啟動。
如果你真的有充分的理由在主節點上構建,你總是可以git clone根據env.NODE_NAME環境變數的值應用不同的策略。master如果管道作業在主節點上運行,則設定為,否則填充節點名稱(當然)。盡管如此,我從未見過有人git clone根據使用的節點自定義命令,所以......不要這樣做??
關于稀疏結帳和稀疏/淺克隆:
- 前者創建了一個不完整的作業目錄,避免映射當前提交中存在的所有樹和 blob,但只映射您指定的那些。你節省那么多空間嗎?或者更好的是,你的專案樹是不是很重,需要做這樣的事情?當您想要一個干凈的作業樹,沒有不必要的檔案時,通常使用稀疏結帳。
- sparse/shallow clone 有時對于減少下載時間很有用,尤其是當你有一個巨大的歷史時。最常見的選項是
--depth=1指示 git 僅檢索最近的提交。據我所知,Jenkins 已經應用了一些優化來加速克隆程序,但它通常會保留整個歷史記錄。同樣,我不確定您是否會獲得更多空間。
git 檔案空間優化的一個有效(至少對我而言)替代方案是在 Docker 容器上構建。Jenkins 與 Docker 已經達到了很好的集成水平,使用它有很多優點,其中作業完成后作業區的處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352062.html
