Help:CLI/cleanup

From Svacer Wiki
Revision as of 13:15, 2 September 2025 by Akuzmin (talk | contribs) (minor fixes)

(diff) ← Older revision | Approved revision (diff) | Latest revision (diff) | Newer revision → (diff)

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

Удаление происходит раз в час, первое удаление всех подходящих снимков будет через 1 час после запуска сервера.

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

Принцип работы: происходит проверка всех снимков на соответствие правилам удаления и правилам на запрет удаления, после этого происходит удаление и заносится отметка в таблицу удаленных снимков.

Если снимок не задан в запрещенных к удалению, то он будет удаляться по минимальному времени, среди всех подходящих для него правил.

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

svacer server cleanup add-rule --project <project id or name> --branch <branch id or name> --snapshot <snapshot id or name> --time <time> --max-snapshots <max snapshots in branch>

Где:

  • project — проект в котором искать снимки для удаления
  • branch — ветка в которой искать снимки для удаления
  • snapshot — снимки которые удалять
  • time — время, которое должно пройти после создания снимка, чтобы его удалить. Задается в формате Go Duration (например 33h5m). По умолчанию 720 часов (30 дней)
  • max-snapshots — верхняя граница по количеству снимков в ветке. Если снимков > max, удаляются самые старые, чтобы осталось ровно max (time не учитывается). Удаляются снимки, только подходящие под паттерн project\branch\snapshot, но количество снимков считается во всей ветке (вне зависимости от того, подходит ли снимок под паттерн project\branch\snapshot или нет). При значении = 0 данное правило не работает. По умолчанию имеет значение 0. Данный флаг появился в версии 12-0-0.

Флаги для проекта, ветки и снимка можно задавать как имя либо как ID, также в имени может быть знак *, который равен "любому количеству любых символов". Если данные флаги не заданы, то автоматически подставляется * (любой проект, ветка, снимок).

С версии 12-0-0 в опциях add-rule и add-prohibition можно задавать регулярные выражения: для этого нужно в начале написать re: и следующая часть будет считаться регулярным выражением (в этом случае нужно будет указывать .* вместо *).

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

svacer server cleanup add-prohibition --project <project id or name> --branch <branch id or name> --snapshot <snapshot id or name> --min-snapshots <min snapshots in branch>

Где:

  • min-snapshots — нижняя граница по количеству снимков в ветке. Пока в ветке снимков ≤ min, в ветке ничего не удаляется правилами cleanup (данное правило применяется к ветке, если хотя бы один из снимков подошел под паттерн project\branch\snapshot). При значении = 0 данное правило не работает (и тогда устанавливается полный запрет на удаление снимков, подходящий под паттерн project\branch\snapshot). По умолчанию имеет значение 0. Данный флаг появился в версии 12-0-0.

Остальные флаги работают аналогично с svacer server cleanup add-rule

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

svacer server cleanup delete --id <config id>

Где:

  • id — id конфигурации из разрешенных к удалению или запрещенных к удалению

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

svacer server cleanup list --type <rule|prohibition|log> --format <table|json>

Где:

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

Примеры

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

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

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

svacer server cleanup add-prohibition --user admin --password admin --project Devel* --branch 2025 --snapshot test*

Вывод данных таблиц

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

Вывод:

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

Вывод:

svacer server cleanup list --user admin --password admin --type prohibition --format json

Вывод:

[{"Branch":"2025","CreatedBy":"admin","CreatedById":"00000000-0000-0000-0000-000000000000","DeleteTime":0,"ID":"7e2c2a12-3fd4-4bb2-8b3a-1f80d81c3bc5","Project":"Devel*","Snapshot":"test*","create_time":"2025-02-24T09:06:53.794742Z"}]

Удаление элемента из таблицы

svacer server cleanup delete --user admin --password admin --id 878d1d1a-db1a-42a4-9557-ef568f68cd3e