Artifactory清理未使用的二進制品的最佳實踐

Artifactory充分利用了基於Checksum的存儲,但是這種機制無法代替常規的工件清理任務。軟件開發可能很雜亂,很多時候Artifactory中的許多工件都從未使用過。
例如,許多CI / CD構建都配置爲基於源代碼控制“提交”運行,並且一旦將這些快照構建發送到Artifactory,就永遠不會實際下載它們。
考慮到軟件開發的動態性質,大多數組織都有自己的數據保留策略。由您決定可以清除哪些數據,但是內置工具可以覆蓋大多數情況。
通常,在Artifactory中使用三種技術來管理工件存儲:
–限制保留多少SNAPSHOT
–清除超大緩存
–刪除未使用的工件

限制保留多少SNAPSHOT

Artifactory具有內置機制來限制構建的“快照”。該系統的目的是確保在覆蓋“release”工件之前將其從“snapshots”存儲庫中升級出來。
Artifactory支持六種存儲庫類型的“最大唯一快照”標記:
– Maven – NuGet
– Gradle –Ivy
– Docker – SBT

Artifactory使用Artifactory Layout系統跟蹤快照的數量。這意味着用戶在上載快照工件時需要遵循預定義的模式(大多數客戶端會自動處理)。
例如,此Maven JAR文件被識別爲快照運行編號3的一部分:
jfrog / hello / 1.0.5-SNAPSHOT / hello-1.0.5-20190620.224837-3.jar
Artifactory清理未使用的二進制品的最佳實踐

大多數CLI客戶端使用特定模式進行上傳,Artifactory的默認佈局應涵蓋這些情況。您可以根據需要自定義這些存儲庫類型的佈局,以處理自定義上傳路徑。
要在Artifactory中啓用此功能,請更新本地存儲庫設置:
Artifactory清理未使用的二進制品的最佳實踐

啓用此設置後,在“最大唯一快照數”上方進行的上傳將在下次構建運行期間刪除所有較早的發行版。
最高的數字將始終是最新版本。

清除超大緩存

Artifactory的遠程存儲庫將下載的文件存儲在緩存中。通常,保留整個緩存是有益的,因爲它可以加快下載速度。但是,如果項目使用的工件有所更改,則值得定期清除緩存。
在Artifactory中有支持此功能的內置系統。要啓用自動緩存清除,請轉到遠程存儲庫菜單的“高級”部分。
您可以在“ 未使用的工件清理期”部分中添加清理工件之前的小時數:
Artifactory清理未使用的二進制品的最佳實踐

這並不意味着工件會在12小時後被刪除。相反,它在內部將工件標記爲“未使用”。
在“ 管理員”->“高級”->“維護 ” 下找到一個單獨的作業,稱爲“清理未使用的緩存工件”,它將執行清理。默認情況下,此cron作業每天運行一次。
刪除未使用的工件
通常,Artifactory通常不會自動刪除二進制文件。也有例外,例如本文中已討論的字段。
話雖如此,通過刪除長時間未下載的工件可以節省大量存儲空間。自動清除未使用的文件的最佳方法是實施Artifactory User Plugin。
JFrog開發的最受歡迎的用戶插件之一是“ artifactCleanup”插件。該插件在Cron Job上運行,並自動刪除“ X”天之內尚未下載的任何工件。
如果您需要進一步自定義插件,則可以在代碼中更改Artifactory Query Language語句:
def aql =“ items.find({” repo“:”“ + repoKey +”“,” type“:” any“,” @ cleanup.skip“:” true“})。include(” repo“,” path “,”名稱“,”類型“)”
需要注意的一件事:artifactCleanup在Docker Repositories上不起作用。
Docker映像層作爲單獨的工件存儲在“ image”文件夾中。如果大多數Docker客戶端中已經有一個層,則不會經常下載該層。由於行爲上的差異,建議使用單獨的“ cleanDockerImages”插件。
它依賴manifest.json文件的下載計數,該文件始終在發生“ docker pull”時下載。

參考資料:

https://jfrog.com/knowledge-base/artifactory-cleanup-best-practices/

補充資料:

  • AQL清理:

https://jfrog.com/blog/advanced-cleanup-using-artifactory-query-language-aql/

-清理已有數據:通過 Rest API 清理 90 天內無人下載的 snapshot,或者是 90 天以前的所有 snapshot,這樣能夠大大減少存儲量,加快索引速度。

https://www.jfrog.com/confluence/display/RTF/Managing+Disk+Space+Usage#ManagingDiskSpaceUsage-ManualCleanupwiththeRESTAPI

-定期清理新增數據:在頁面上配置實時清理 snapshot:

https://www.jfrog.com/confluence/display/RTF/Managing+Disk+Space+Usage#ManagingDiskSpaceUsage-LimitingtheNumberofSnapshots

更多精彩內容可以專注我們的在線課堂
微信搜索公衆號:jfrogchina 獲取課程通知

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