Help:CLI/management/containers

From Svacer Wiki

Описание и примеры использования управления контейнерами в Svacer

Управление разными видами контейнеров пользователь может осуществлять через команды svacer container при наличии соответствующих доступов. Команды можно использовать в скриптах, возвращаемые значения обычно выводятся в виде JSON в stdout поток, что позволяет получать и использовать ID объекты в скриптах.

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

Актуальную информацию по командам можно посмотреть напрямую через вызов svacer <command> --help.

Добавление ветки, проекта или группы проектов

Добавление нового контейнера осуществляется командой svacer container add c указанием названия и типа создаваемого объекта: project, branch, project-group. Например, так создаётся пустой проект

svacer container add --name wiki-help --type project
...
2024-10-15T14:23:56.922+0300    info    Project добавлен

В терминале также будет вывод с JSON-строкой следующего вида

{"Containers":[{"id":"550eaba9-39e8-48f7-b8b0-7bde24535d95","name":"wiki-help","type":"project"}]}

Для создания ветки надо указать проект в которые её добавлять, для этого используется опция --parent

svacer container add  --name wiki-help-branch --type branch --parent 550eaba9-39e8-48f7-b8b0-7bde24535d95

В терминале также будет вывод с JSON-строкой результата действия

{"Containers":[{"id":"a162cb5b-d09b-4a34-a4a8-818a9a0f32de","name":"wiki-help-branch","type":"branch","parent":"550eaba9-39e8-48f7-b8b0-7bde24535d95"}]}

При создании проекта можно указать параметр --review-with-comment для создания проекта с обязательным комментарием при изменении разметки. Если параметр не передавать, проект создаётся без этого требования.

Удаление ветки, проекта или группы проектов

Удаление контейнера осуществляется командой svacer container remove c указанием ID и типа удаляемого объекта: project, branch, project-group. Например, так удаляется проект

svacer container remove --id 550eaba9-39e8-48f7-b8b0-7bde24535d95 --type project
...
2024-10-15T14:34:48.725+0300    info    Удаление завершено

В терминале также будет вывод с JSON-строкой следующего вида

{"Containers":[{"id":"550eaba9-39e8-48f7-b8b0-7bde24535d95","name":"wiki-help","type":"project"}]}

Список веток, проектов или групп проектов

С помощью команды svacer container list можно просмотреть связи между контейнерами. С помощью опции --name можно ограничить возвращаемые значения, например запрос по wiki без указания типа, вернёт все контейнеры с именем, содержащим это значение

svacer container list --name wiki
{"Containers":[{"id":"550eaba9-39e8-48f7-b8b0-7bde24535d95","name":"wiki-help","type":"project"},{"id":"a162cb5b-d09b-4a34-a4a8-818a9a0f32de","name":"wiki-help-branch","type":"branch","parent":"550eaba9-39e8-48f7-b8b0-7bde24535d95"}]}

Если добавить опцию --format text, то возвращаемое значение будет отформатировано к такому виду

Id: 550eaba9-39e8-48f7-b8b0-7bde24535d95, Name: wiki-help, Type: project, ReviewWithComment: false
Id: a162cb5b-d09b-4a34-a4a8-818a9a0f32de, Name: wiki-help-branch, Type: branch, Parent: 550eaba9-39e8-48f7-b8b0-7bde24535d95

Если указать тип ветки, то в результате также вернётся список снимков в данной ветке

svacer container list --id 6367355f-bcf7-4f3a-a9dc-00ec8b0d7806 --type branch
{"Containers":[{"id":"87193c7b-6fb9-4eb5-bf55-d7e88e2cfc25","name":"snapshotname","type":"snapshot","parent":"6367355f-bcf7-4f3a-a9dc-00ec8b0d7806"}]}

Редактирование ветки, проекта или группы проектов

Для изменения названия ветки или настроек проекта существует команда svacer container update. Для изменения надо передать ID объекта, новое имя и опцию для проекта.

svacer container update --name wiki-help_changed --id 550eaba9-39e8-48f7-b8b0-7bde24535d95 --review-with-comment
...
2024-10-15T14:55:20.043+0300    info    Редактирование завершено

В stdout результат операции представлен с новыми значениями

{"Containers":[{"id":"550eaba9-39e8-48f7-b8b0-7bde24535d95","name":"wiki-help_changed","type":"project","review_with_comment":true}]}

Клонирование ветки или проекта

Клонирование осуществляется командой svacer container clone с указанием типа объекта (project или branch), объекта клонирования (через --parent) и имени клонированного объекта с дополнительными параметрами (группы проектов и обязательности комментария). Клонирование ветки происходит с ожиданием окончания, а завершения клонирование проекта по умолчанию не ожидается. Для ожидания можно использовать параметр --wait.

svacer container clone --name wiki-help_clone --parent 550eaba9-39e8-48f7-b8b0-7bde24535d95 --review-with-comment true --type project 
...
2024-10-15T15:09:00.012+0300    info    Клонирование проекта запущено

При этом выводится ID задачи клонирования, для большого проекта можно её отменить

{
 "id": "7c3fae83-ba42-450f-af71-91400f50c2fc"
}

Проекты клонируются в порядке очерёдности на сервере, два клонирования проектов параллельно не запускаются.

Получение состояния и отмена текущей задачи клонирования

Подкомандами status и cancel можно получить или отменить результаты клонирования. Параметры соединения с сервером и данные пользователя надо указывать между clone и подкомандой.

svacer container clone {host/user settings} status --id cd143fd6-17df-4259-a020-f54982040e09

Для статуса вывод будет содержать информацию по всем клонированным веткам в проекте.

Управление снимками

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

Переименование и удаление снимков

Подкомандами rename и remove можно переименовать или удалить снимок. Для переименования достаточно указать текущий ID снимка и новое название. Для удаления можно указать только ID снимка, или проект/ветку/снимок.

svacer container snapshot rename --id 87193c7b-6fb9-4eb5-bf55-d7e88e2cfc25 --name hahah

В данном случае результат операции не печатается, но его можно проверить через команду svacer container list.

[ЭКСПЕРИМЕНТАЛЬНО] Слияние снимков

Операция слияния снимков позволяет объединить несколько снимков в один командой svacer container snapshot merge. В неё передаётся список снимков для слияния, название результирующего снимка и дополнительные опции (типа удалять ли старые снимки).

svacer container snapshot merge --snapshot {snap1_id} --snapshot {snap2_id} --snapshot {snap3_id} --branch {branch_id} --name target_branch

Управление группами проектов

Это опциональный способ группировки проектов: проекты можно как добавить в несколько групп, так и не добавлять ни в одну, поэтому управление группами выделено в отдельный набор команд. Для управления необходимо, чтобы объекты уже существовали на сервере.

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

Можно передавать как ID объектов, так и их названия. Добавление в группу проектов происходит командой add

svacer container project-groups add --project {project_id} --project-group {project_group_id}

Удаление проекта из группы

Удаление проекта из группы происходит с помощью команды remove

svacer container project-groups remove --project {project_id} --project-group {project_group_id}