Help:CLI/management/containers
Описание и примеры использования управления контейнерами в 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}