Help:CLI/cleanup: Difference between revisions
m (minor fixes) |
(cleanup-type add) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 7: | Line 7: | ||
Применять может только пользователь с доступом '''ServerOperations'''. | Применять может только пользователь с доступом '''ServerOperations'''. | ||
'''Принцип работы:''' происходит проверка всех снимков на соответствие правилам удаления и правилам на запрет удаления, после этого происходит удаление и заносится отметка в таблицу удаленных снимков. Также информация о удалении через cleanup вносится в системный журнал. | '''Принцип работы:''' происходит проверка всех снимков на соответствие правилам удаления и правилам на запрет удаления, после этого происходит удаление самых старых по времени создания подходящих снимков и заносится отметка в таблицу удаленных снимков и в системный журнал. После этого происходит удаление пустых веток и проектов в соответствии с правилами удаления. Также информация о удалении через cleanup вносится в системный журнал. | ||
== Добавление нового правила удаления == | == Добавление нового правила удаления == | ||
svacer server cleanup add-rule --user <user> --password <password> --project <project> --branch <branch> --snapshot <snapshot> --keep-time <nowiki><time></nowiki> --max-snapshots <max> | svacer server cleanup add-rule --user <user> --password <password> --project <project> --branch <branch> --snapshot <snapshot> --keep-time <nowiki><time></nowiki> --max-snapshots <max> --type <type> | ||
=== Параметры === | === Параметры === | ||
| Line 19: | Line 19: | ||
* <code>--snapshot</code> — снимок, который удалять ('''обязательный''', используйте <code>"*"</code> для всех снимков) | * <code>--snapshot</code> — снимок, который удалять ('''обязательный''', используйте <code>"*"</code> для всех снимков) | ||
* <code>--keep-time</code> — время, которое должно пройти после создания '''(НЕ импорта)''' снимка, чтобы его удалить. Задается в формате Go Duration (например <code>33h5m</code>, <code>720h</code>). По умолчанию '''720 часов''' (30 дней). '''Игнорируется, если <code>--max-snapshots > 0</code>''' | * <code>--keep-time</code> — время, которое должно пройти после создания '''(НЕ импорта)''' снимка, чтобы его удалить. Задается в формате Go Duration (например <code>33h5m</code>, <code>720h</code>). По умолчанию '''720 часов''' (30 дней). '''Игнорируется, если <code>--max-snapshots > 0</code>''' | ||
* <code>-- | * <code>--min-snapshots</code> — количество снимков, которое необходимо оставлять в ветке, подходящей под паттерн project + branch. По умолчанию 0 | ||
* <code>--cleanup-type</code> — тип очистки. Возможные значения - project, branch, snapshot (по умолчанию snapshot). При указании snapshot будут очищаться снимки в соответствии с паттерном проект+ветка+снимок и проверяться <code>keep-time</code> и <code>min-snapshots</code>. При указании branch будут удаляться пустые ветки в соответствии с паттерном project + branch. При указании project Будут удаляться пустые проекты (у которых нет веток) в соответствии с паттерном project. При указании branch или project невозможно указать <code>keep-time</code> и <code>min-snapshots</code>, эти флаги не учитываются. | |||
=== Шаблоны и паттерны === | === Шаблоны и паттерны === | ||
| Line 83: | Line 49: | ||
* <code>--branch</code> — ветка ('''обязательный''', используйте <code>"*"</code> для всех веток) | * <code>--branch</code> — ветка ('''обязательный''', используйте <code>"*"</code> для всех веток) | ||
* <code>--snapshot</code> — снимок ('''обязательный''', используйте <code>"*"</code> для всех снимков) | * <code>--snapshot</code> — снимок ('''обязательный''', используйте <code>"*"</code> для всех снимков) | ||
Флаги проекта, ветки и снимка работают аналогично с флагами в <code>--add-rule</code>. | Флаги проекта, ветки и снимка работают аналогично с флагами в <code>--add-rule</code>. | ||
== Удаление правила == | == Удаление правила == | ||
| Line 156: | Line 76: | ||
=== Добавление нового правила === | === Добавление нового правила === | ||
''' | '''Удаление по времени''' | ||
svacer server cleanup add-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "*" --keep-time "240h" | svacer server cleanup add-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "*" --keep-time "240h" | ||
Удалятся снимки старше 240 часов (10 дней) в проектах, начинающихся с "Devel", в ветке "2025". | Удалятся снимки старше 240 часов (10 дней) в проектах, начинающихся с "Devel", в ветке "2025". | ||
''' | '''Ограничение количества''' | ||
svacer server cleanup add-rule --user admin --password admin --project "*" --branch "main" --snapshot "*" -- | svacer server cleanup add-rule --user admin --password admin --project "*" --branch "main" --snapshot "*" --min-snapshots 20 | ||
В любом проекте, в ветке "main" всегда будет | В любом проекте, в ветке "main" всегда будет не более 20 снимков, остальные будут удаляться. | ||
'''Очистка пустых веток''' | |||
svacer server cleanup add-rule --user admin --password admin --project "*" --branch "master" --cleanup-type branch | |||
В любом проекте, в ветке "main" всегда будет не более 20 снимков, остальные будут удаляться. | |||
=== Добавление запрета на удаление === | === Добавление запрета на удаление === | ||
svacer server cleanup add-exclude-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "test*" | svacer server cleanup add-exclude-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "test*" | ||
Снимки, начинающиеся с "test", в проектах "Devel*" и ветке "2025" '''никогда не удаляются'''. | Снимки, начинающиеся с "test", в проектах "Devel*" и ветке "2025" '''никогда не удаляются правилами cleanup'''. | ||
=== Вывод таблицы правил === | === Вывод таблицы правил === | ||
svacer server cleanup list --user admin --password admin --type rule | svacer server cleanup list --user admin --password admin --type rule | ||
[[File:Cleanup rules.png|none|thumb|955x955px]] | |||
[[File:Cleanup rules | |||
=== Вывод таблицы запретов === | === Вывод таблицы запретов === | ||
| Line 196: | Line 121: | ||
svacer server cleanup delete --user admin --password admin --id b1895877-1f3c-4b12-ac19-3ff4a7bc5416 | svacer server cleanup delete --user admin --password admin --id b1895877-1f3c-4b12-ac19-3ff4a7bc5416 | ||
=== Использование regex === | === Использование regex === | ||
svacer server cleanup add-rule --user admin --password admin --project "*" --branch "re:^feature/JIRA-[0-9]+$" --snapshot "*" --keep-time 168h | svacer server cleanup add-rule --user admin --password admin --project "*" --branch "re:^feature/JIRA-[0-9]+$" --snapshot "*" --keep-time 168h | ||
Подходит: <code>feature/JIRA-123</code>, <code>feature/JIRA-456</code><br>Не подходит: <code>feature/JIRA-ABC</code>, <code>bugfix/JIRA-123</code> | Подходит: <code>feature/JIRA-123</code>, <code>feature/JIRA-456</code><br>Не подходит: <code>feature/JIRA-ABC</code>, <code>bugfix/JIRA-123</code> | ||
Latest revision as of 16:13, 28 October 2025
Автоматическое удаление снимков
Обзор
Удаление происходит раз в 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> --type <type>
Параметры
--project— проект, в котором искать снимки для удаления (обязательный, используйте"*"для всех проектов)--branch— ветка, в которой искать снимки для удаления (обязательный, используйте"*"для всех веток)--snapshot— снимок, который удалять (обязательный, используйте"*"для всех снимков)--keep-time— время, которое должно пройти после создания (НЕ импорта) снимка, чтобы его удалить. Задается в формате Go Duration (например33h5m,720h). По умолчанию 720 часов (30 дней). Игнорируется, если--max-snapshots > 0--min-snapshots— количество снимков, которое необходимо оставлять в ветке, подходящей под паттерн project + branch. По умолчанию 0--cleanup-type— тип очистки. Возможные значения - project, branch, snapshot (по умолчанию snapshot). При указании snapshot будут очищаться снимки в соответствии с паттерном проект+ветка+снимок и проверятьсяkeep-timeиmin-snapshots. При указании branch будут удаляться пустые ветки в соответствии с паттерном project + branch. При указании project Будут удаляться пустые проекты (у которых нет веток) в соответствии с паттерном project. При указании branch или project невозможно указатьkeep-timeиmin-snapshots, эти флаги не учитываются.
Шаблоны и паттерны
Флаги --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>
Запускает процесс очистки немедленно (вне расписания).
Примеры
Добавление нового правила
Удаление по времени
svacer server cleanup add-rule --user admin --password admin --project "Devel*" --branch "2025" --snapshot "*" --keep-time "240h"
Удалятся снимки старше 240 часов (10 дней) в проектах, начинающихся с "Devel", в ветке "2025".
Ограничение количества
svacer server cleanup add-rule --user admin --password admin --project "*" --branch "main" --snapshot "*" --min-snapshots 20
В любом проекте, в ветке "main" всегда будет не более 20 снимков, остальные будут удаляться.
Очистка пустых веток
svacer server cleanup add-rule --user admin --password admin --project "*" --branch "master" --cleanup-type branch
В любом проекте, в ветке "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.