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 объектов, так и их названия. Добавление в групп проектов происходит такой командой
svacer container project-groups add --project {prj_id} --project-group {project_group_id}
Удалить проект из группы проектов
Удаление из группы происходит практически таким же образом, но с помощью команды remove
svacer container project-groups remove --project {prj_id} --project-group {project_group_id}