[英]Managing (older) CI artifacts in GitLab CE Omnibus
美好的一天,
我為我的公司運行GitLab CE Omnibus(8.4.3)安裝。 我們最近開始使用CI,但仍主要用於生成文檔。 二進制構建正在被添加。
作為系統的一部分,我運行每日備份任務(使用gitlab-rake gitlab:backup:create
)。 在過去的幾天里,這些工件已經開始變得非常大,即使它只是在這個階段的文檔(doxygen生成的圖像似乎是問題的主要來源)。 由於工件包含在備份中,因此每日備份(當前策略保持2周的價值)已經變得難以處理。
我已經搜索了一些答案,但我得到的大多數點擊似乎與此階段的功能請求有關。 我知道CI仍然相對較新,但我認為工件管理在需求列表中相當高。
我有三個問題:
有沒有辦法在GitLab中管理/刪除舊工件,而不是手動將它們從磁盤中刪除(並且可能會破壞流程中的鏈接)? 如果這個過程可以自動化將是理想的。
從1開始,是否有可能在清理策略中定位特定類別的工件(即,只刪除較舊的文檔目標,但不刪除二進制文件等)?
有可能完全或基於CI目標類型,從推薦的gitlab-rake gitlab:backup:create
排除工件gitlab-rake gitlab:backup:create
backup procedure?
任何鏈接,提示或建議將非常感謝!
親切的問候,
[更新]更多閱讀,產生以下內容:
從Gitlab 8.5開始,我可以手動刪除單個構建工件。 這有幫助,但不具備可擴展性。 適當的工件管理(包括到期日期等)的時間表似乎是Gitlab 8.7。
似乎沒有明確要求以不同方式處理不同的構建目標工件。
沒有關於從備份任務中刪除工件的信息。
我也很想找到1和2的答案。
要排除備份任務中的項目,請嘗試SKIP參數:
gitlab-rake gitlab:backup:create SKIP=artifacts,builds
您還可以SKIP存儲庫,lfs,上傳。 只需將它們作為逗號分隔列表提供。 另見https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md
正如我在問題中所提到的,對於管理工件的更好支持可能是在Gitlab 8.7的某個時候。 請參閱Marco van Neerbos先前的回答,了解如何從備份中刪除工件。
目前,這些是管理現有工件的選項:
$ sudo gitlab-rails console
> p = Project.find_with_namespace("group/project")
> p.builds.where.not(artifacts_file: nil).find_each(&:remove_artifacts_file!)
> p.builds.where.not(artifacts_metadata: nil).find_each(&:remove_artifacts_metadata!)
remove_*
命令將返回nil
,但如果您檢查磁盤,文件將會消失,並從相關的構建頁面中刪除鏈接。
您可以從文件系統中刪除舊工件。 但是,如果您嘗試使用GitLab UI下載它們,則會導致404錯誤。 在我的情況下沒有人關心。
sudo du -hd 1 /var/opt/gitlab/gitlab-rails/shared/artifacts
sudo rm -rf /var/opt/gitlab/gitlab-rails/shared/artifacts/[whatever you can spare]
另請參見https://docs.gitlab.com/omnibus/settings/configuration.html#disable-storage-directories-management
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.