3

大家好,

我为我的公司运行 GitLab CE Omnibus (8.4.3) 安装。我们最近开始使用 CI,但仍主要用于生成文档。二进制版本正在添加中。

作为系统的一部分,我运行每日备份任务(使用gitlab-rake gitlab:backup:create)。在过去的几天里,这些工件已经开始变得非常大,尽管在这个阶段它只是文档(doxygen 生成的图像似乎是问题的主要来源)。由于备份中包含工件,因此每日备份(当前策略保留 2 周的价值)变得难以处理。

我已经搜索了一些答案,但我得到的大多数点击似乎都与现阶段的功能请求有关。我知道 CI 仍然相对较新,但我想工件管理在需求列表中相当高。

我有三个问题:

  1. 有没有办法在 GitLab 中管理/删除较旧的工件,而不是手动从磁盘中删除它们(并且可能会破坏过程中的链接)?如果这个过程可以自动化,那将是理想的。

  2. 从 1 开始,是否可以在清理策略中针对特定类别的工件(即,仅删除较旧的文档目标,但不删除二进制文件等)?

  3. 是否可以完全或基于 CI 目标类型从推荐的gitlab-rake gitlab:backup:create备份过程中排除工件?

任何链接、提示或建议将不胜感激!

亲切的问候,

[更新] 更多阅读,得出以下结论:

  1. 从 Gitlab 8.5 开始,我可以手动删除单个构建工件。这有帮助,但不可扩展。适当的工件管理(包括到期日期等)的时间表似乎是 Gitlab 8.7。

  2. 似乎还没有明确的要求以不同的方式处理不同的构建目标工件。

  3. 没有关于从备份任务中删除工件的信息。

4

3 回答 3

5

我也很想找出 1 和 2 的答案。

要排除备份任务中的项目,请尝试使用 SKIP 参数:

gitlab-rake gitlab:backup:create SKIP=artifacts,builds

您还可以跳过存储库、lfs、上传。只需将它们作为逗号分隔的列表提供。另请参阅https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md

于 2016-03-15T12:13:57.970 回答
1

正如我在问题中提到的,对管理工件的更好支持可能会在 Gitlab 8.7 左右出现。请参阅 Marco van Neerbos 较早的关于从备份中删除工件的答案。

目前,这些是管理现有工件的选项:

  1. 升级到 Gitlab 8.5,这将允许您手动删除单个构建(您仍然需要跟踪它们,然后单击“擦除”按钮)。
  2. 改编自Gitlab CE Issue 5572并进行了修复,如果您知道组和项目名称,请使用以下内容进行批量擦除(和数据库更新):

$ 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但如果您检查磁盘,文件将会消失,并且链接会从相关构建页面中删除。

  1. 目前,我找不到关于将任何与工件相关的功能限制为特定类型/类/工件目标的信息。
于 2016-03-17T01:55:00.390 回答
1

您可以从文件系统中删除旧工件。但是,如果您尝试使用 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

于 2017-03-09T07:46:49.623 回答