Help:CLI/cleanup

From Svacer Wiki
Revision as of 21:14, 24 October 2025 by Gribunin (talk | contribs) (cleanup remove max mode and change min mode)

Автоматическое удаление снимков

Обзор

Удаление происходит раз в 24 часа (данное время можно задать при запуске сервера опцией --snapshots-cleanup-period, либо в конфигурационном файле, либо переменной окружения SVACER_CLEANUP_SNAPSHOTS_PERIOD), первое удаление всех подходящих снимков будет через указанное время после запуска сервера.

Применять может только пользователь с доступом ServerOperations.

Принцип работы: происходит проверка всех снимков на соответствие правилам удаления и правилам на запрет удаления, после этого происходит удаление самых старых по времени создания подходящих снимков и заносится отметка в таблицу удаленных снимков и в системный журнал. Также информация о удалении через cleanup вносится в системный журнал.

Добавление нового правила удаления

svacer server cleanup add-rule --user <user> --password <password> --project <project> --branch <branch> --snapshot <snapshot> --keep-time <time> --max-snapshots <max>

Параметры

  • --project — проект, в котором искать снимки для удаления (обязательный, используйте "*" для всех проектов)
  • --branch — ветка, в которой искать снимки для удаления (обязательный, используйте "*" для всех веток)
  • --snapshot — снимок, который удалять (обязательный, используйте "*" для всех снимков)
  • --keep-time — время, которое должно пройти после создания (НЕ импорта) снимка, чтобы его удалить. Задается в формате Go Duration (например 33h5m, 720h). По умолчанию 720 часов (30 дней). Игнорируется, если --max-snapshots > 0
  • --min-snapshots — количество снимков, которое необходимо оставлять в ветке, подходящей под паттерн project + branch. По умолчанию 0

Шаблоны и паттерны

Флаги --project, --branch, --snapshot можно задавать как:

1. Имя или ID:

--project "MyProject"
--project "550e8400-e29b-41d4-a716-446655440000"  # UUID проекта

2. * (любое количество любых символов):

--project "Dev*"         # DevProject, Development
--branch "*test*"        # test, my-test, testing
--snapshot "nightly-*"

3. Регулярные выражения (с префиксом re:):

--snapshot "re:^v[0-9]+\.[0-9]+\.[0-9]+$"    # v1.0.0, v2.3.5
--branch "re:^feature/[0-9]+$"               # feature/123

Добавление запрета на удаление

svacer server cleanup add-exclude-rule --user <user> --password <password> --project <project> --branch <branch> --snapshot <snapshot> --min-snapshots <min>

Параметры

  • --project — проект, в котором искать снимки для удаления (обязательный , используйте "*" для всех проектов)
  • --branch — ветка (обязательный, используйте "*" для всех веток)
  • --snapshot — снимок (обязательный, используйте "*" для всех снимков)

Флаги проекта, ветки и снимка работают аналогично с флагами в --add-rule.

Удаление правила

svacer server cleanup delete --user <user> --password <password> --id <config id>

Где:

  • --id — ID конфигурации из таблицы правил или запретов (получить через cleanup list)

Вывести таблицу

svacer server cleanup list --user <user> --password <password> --type <rule|exclude-rule|log> --format <table|json>

Где:

  • --type — тип таблицы: rule — таблица правил удаления (по умолчанию); exclude-rule — таблица запретов на удаление; log — таблица удаленных снимков
  • --format — формат вывода: table — человекочитаемый вывод (по умолчанию); json — JSON формат

Запуск очистки вручную

svacer server cleanup run --user <user> --password <password>

Запускает процесс очистки немедленно (вне расписания).

Примеры

Добавление нового правила

Правило 1: Удаление по времени

svacer server cleanup add-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "*" --keep-time "240h"

Удалятся снимки старше 240 часов (10 дней) в проектах, начинающихся с "Devel", в ветке "2025".

Правило 2: Ограничение количества

svacer server cleanup add-rule --user admin --password admin --project "*" --branch "main" --snapshot "*" --min-snapshots 20

В любом проекте, в ветке "main" всегда будет не более 20 снимков, остальные будут удаляться.

Добавление запрета на удаление

svacer server cleanup add-exclude-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "test*"

Снимки, начинающиеся с "test", в проектах "Devel*" и ветке "2025" никогда не удаляются правилами cleanup.

Вывод таблицы правил

svacer server cleanup list --user admin --password admin --type rule

Вывод таблицы запретов

svacer server cleanup list --user admin --password admin --type exclude-rule

Вывод в JSON формате

svacer server cleanup list --user admin --password admin --type exclude-rule --format json

Вывод:

[{"Branch":"2025","CreatedBy":"admin","CreatedById":"00000000-0000-0000-0000-000000000000","ID":"018fe552-f390-4110-9545-6ef9cbe1a406","MinBranchSnapshots":0,"Project":"Devel*","Snapshot":"test*","create_time":"2025-10-13T15:00:14.997004Z"}]

Удаление правила

svacer server cleanup delete --user admin --password admin --id b1895877-1f3c-4b12-ac19-3ff4a7bc5416

Использование regex

svacer server cleanup add-rule --user admin --password admin --project "*" --branch "re:^feature/JIRA-[0-9]+$" --snapshot "*" --keep-time 168h

Подходит: feature/JIRA-123, feature/JIRA-456
Не подходит: feature/JIRA-ABC, bugfix/JIRA-123

Regex синтаксис

Паттерн Описание Пример
^ Начало строки ^test
[^x] Отрицание символов ^[^m].*$
$ Конец строки test$
. Любой символ a.c → abc, a1c
.* Любое кол-во символов test.* → test-123
.+ Один или более test.+ → test-1
[0-9] Любая цифра v[0-9] → v1, v9
[a-z] Буква (нижний регистр) [a-z]+ → abc
[A-Z] Буква (верхний регистр) [A-Z]+ → ABC
(a|b) "a" или "b" (test|prod)
[0-9]{2,4} От 2 до 4 цифр 12, 1234

Не поддерживается negative lookahead (?!...). Используйте комбинацию правил и запретов.

Для правил отрицания конкретного элемента возможно использовать сложные правила, например:

--branch "re:^(.{0,3}|.{5,}|[^m]...|m[^a]..|ma[^i].|mai[^n])$"

Данное правило выбирает все ветки, кроме main.