2016-03-15 6 views
3

Добрый день всем,Управление (старые) CI артефакты в GitLab CE Omnibus

я бегу установку GitLab CE Omnibus (8.4.3) для моей компании. Недавно мы начали использовать CI, но в основном для создания документации. Бинарные сборки находятся в процессе добавления.

Как часть системы, я запускаю ежедневную задачу резервного копирования (используя gitlab-rake gitlab:backup:create). За последние пару дней эти артефакты начали становиться чрезвычайно большими, хотя на этом этапе это всего лишь документация (изображения, созданные с помощью кислорода, как представляется, являются основным источником проблемы). Поскольку артефакты включены в резервную копию, ежедневные резервные копии (текущая стратегия держится на 2 недели) стали громоздкими по размеру.

Я немного искал ответы на некоторые вопросы, но большинство хитов, которые, как мне кажется, связаны с запросами функций на этом этапе. Я знаю, что CI по-прежнему относительно новых, но я бы предположил, что управление артефактом достаточно высока в списке требований.

У меня есть три вопроса:

  1. Есть ли способ управлять/удалить старые артефакты в GitLab, короткие удаления вручную их с диска (и, возможно, нарушение связей в процессе)? Было бы идеально, если бы этот процесс мог быть автоматизирован.

  2. В соответствии с 1, можно ли ориентироваться на определенные классы артефактов в стратегии очистки (то есть удалять только старые цели документации, но не бинарные файлы и т. Д.)?

  3. Возможно ли полностью или на основе целевых типов CI исключить артефакты из рекомендуемой процедуры резервного копирования gitlab-rake gitlab:backup:create?

Любые ссылки, советы и рекомендации были бы высоко оценены!

С наилучшими пожеланиями,

[ОБНОВЛЕНИЕ] Некоторые больше чтения, получали следующее:

  1. По Gitlab 8.5, можно вручную удалить отдельные сборки артефактов. Это помогает, но не масштабируется. Сроки правильного управления артефактом (включая даты истечения срока действия и т. Д.), По-видимому, являются Gitlab 8.7.

  2. Кажется, что нет четкого запроса на обработку различных артефактов цели сборки по-разному.

  3. Информация об удалении артефактов из задачи резервного копирования отсутствует.

+0

Похоже, он выскользнул до 8,8. Вот связанная с этим проблема GitLab: https://gitlab.com/gitlab-org/gitlab-ce/issues/3439, и здесь приведена 8.8 дорожная карта: https://gitlab.com/gitlab-org/gitlab-ce/issues/ 15598 – netmikey

ответ

5

Мне было бы очень интересно узнать ответы на вопросы 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

+0

Поскольку ваш ответ является единственным, что дало что-то полезное для работы, я отметил его как правильный ответ :) Я добавил еще один ответ с некоторыми советами с соответствующей страницы проблем. – roelofs

1

Как уже упоминалось в моем вопросе, более эффективная поддержка управления артефактами связана, вероятно, когда-то вокруг Gitlab 8.7. См. Более ранний ответ Марко ван Нербоса об удалении артефактов из резервных копий.

На данный момент, эти опции для управления существующих артефактов:

  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_* будут retu rn nil, но если вы проверите диск, файлы исчезнут, а ссылки удалены с соответствующих страниц сборки.

  1. В настоящее время я не могу найти информацию об ограничении любых связанных с артефактом функций для конкретных типов/классов/целей артефактов.
1

Вы можете удалить старые артефакты из файловой системы. Однако это приведет к 404 ошибкам, если вы попытаетесь загрузить их с помощью интерфейса GitLab. В моем случае никто не заботится.

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

+0

Спасибо, но это именно то, чего я пытался избежать :) Артефактное управление значительно улучшилось в версиях Gitlab, так как этот вопрос тоже задавался. – roelofs