Как ограничить объем и количество артефактов сборок TeamCity?

Чтобы сэкономить место на диске и избежать проблем с производительностью, можно ограничить количество артефактов, хранящихся в сборках и проектах TeamCity. Есть три способа сделать это:

  • упаковать несколько артефактов в один архив;
  • ограничить размер файлов и количество артефактов на сборку;
  • настроить автоматическое удаление ненужных файлов.

Упаковка артефактов в архив

TeamCity может автоматически упаковывать артефакты сборки в архив перед публикацией. Для этого откройте настройки конфигурации сборки (General Settings) и перечислите пути к артефактам (через запятую или каждый путь с новой строки).

[+:|-:]source => target_archive.*, где:

  • [+:|-:]source — путь к файлам или директориям, которые нужно опубликовать в качестве артефактов сборки (+:) или, наоборот, исключить из публикации (-:). Лучше указывать пути относительно директории выгрузки репозитория, хотя абсолютные пути тоже поддерживаются.
  • target_archive.* — путь, по которому TeamCity разместит новый архив с артефактами (.* — расширение архива). Поддерживаются архивы zip, 7zip, jar, tar и tar.gz. Этот путь не должен быть абсолютным — указывайте его относительно директории выгрузки репозитория.

К примеру, чтобы упаковать все файлы и вложенные директории, хранящиеся в директории имя_директории, в ZIP-архив имя_архива, введите в поле Artifact paths строку:

имя_директории => имя_архива.zip

Подробнее о том, как настраивать пути для размещения артефактов, читайте в документации.

Ограничение размера и количества файлов артефактов

Вы можете установить максимально допустимый размер файла для артефакта, а также ограничить количество файлов, производимых за одну сборку. Для этого откройте Administration | Global Settings и перейдите в раздел Build Settings. Ограничения устанавливаются на уровне сервера.

Правила очистки

Старые и ненужные файлы могут удаляться автоматически. Для этого задайте правила очистки в разделе Project Settings | Clean-up Rules:

  • Найдите конфигурацию сборки, которую нужно изменить, и нажмите на ряд с базовым правилом (Base rule). Если он скрыт, нажмите на Show 1 inherited rule (по умолчанию каждая конфигурация сборки наследует базовое правило от родителя).
  • Во всплывающем окне в разделе Clean artifacts выберите опцию Custom policy и укажите правило удаления артефактов. Например:
    • удалять артефакты всех сборок старше n-ной успешной сборки;
    • удалять артефакты всех сборок, которые на n дней старше последней успешной сборки;
    • удалять артефакты, имена которых соответствуют заданному образцу.

      В поле Artifact patterns укажите образцы имен артефактов, которые следует удалять или, наоборот, исключить из очистки. Например:

      • +:**/file*.* — удалять артефакты, имена которых содержат «file»;
      • -:**/file*.jar — не удалять JAR-артефакты, имена которых содержат «file».
  • В разделе Dependencies в окне базового правила можно указать, нужно ли удалять артефакты сборок зависимостей, которые являются частью цепочки.