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

Artifactory充分利用了基於Checksum的存儲,可是這種機制沒法代替常規的工件清理任務。軟件開發可能很雜亂,不少時候Artifactory中的許多工件都從未使用過。git

例如,許多CI / CD構建都配置爲基於源代碼控制提交運行,而且一旦將這些快照構建發送到Artifactory,就永遠不會實際下載它們。 github

考慮到軟件開發的動態性質,大多數組織都有本身的數據保留策略。由您決定能夠清除哪些數據,可是內置工具能夠覆蓋大多數狀況。docker

一般,在Artifactory中使用三種技術來管理工件存儲:json

限制保留多少SNAPSHOT
清除超大緩存
刪除未使用的工
數組

限制保留多少SNAPSHOT

Artifactory具備內置機制來限制構建的快照。該系統的目的是確保在覆蓋release工件以前將其從snapshots存儲庫中升級出來。緩存

Artifactory支持六種存儲庫類型的最大惟一快照標記:微信

– Maven  – NuGet
– Gradle  –Ivy
– Docker  – SBT
工具

 

Artifactory使用Artifactory Layout系統跟蹤快照的數量。這意味着用戶在上載快照工件時須要遵循預約義的模式(大多數客戶端會自動處理)。 佈局

例如,此Maven JAR文件被識別爲快照運行編號3的一部分:spa

jfrog / hello / 1.0.5-SNAPSHOT / hello-1.0.5-20190620.224837-3.jar  

 

大多數CLI客戶端使用特定模式進行上傳,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 「名稱類型

須要注意的一件事:artifactCleanupDocker 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 獲取課程通知

相關文章
相關標籤/搜索