Help:XSvacer:Webide: Difference between revisions
M.vinogradov (talk | contribs) (Релиз 11. Удалена настройка шаблона комментария sarif/commenttemplate) |
M.vinogradov (talk | contribs) (Created page with "= Поддержка среды рвзработки Theia IDE = '''Примечание:''' данная функциональность входит в набор расширений XSvacer. При активации данной функциональности появляется возможность просматривать исходный код снимка с предупреждениями анализатора во внешней IDE. По умо...") |
||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= Поддержка среды рвзработки Theia IDE = | |||
'''Примечание:''' данная функциональность входит в набор расширений XSvacer. | |||
При активации данной функциональности появляется возможность просматривать исходный код снимка с предупреждениями анализатора во внешней IDE. | |||
По умолчанию запускается IDE собранная на основе Theia IDE (https://theia-ide.org/). | |||
По умолчанию запускается IDE | |||
== Активация функциональности == | == Активация функциональности == | ||
Для активации функциональности необходимо указать флаг <code | Для активации функциональности необходимо указать флаг <code>--xsvacer.features webide</code> при запуске svacer'а. | ||
<code | '''Примечание:''' при запуске функциональности <code>webide</code> также будет запущена функциональность <code>docker</code>, с использованием которой осуществляется доступ к хосту docker'а, на котором будут запускаться контейнеры с IDE. | ||
== Конфигурация == | == Конфигурация == | ||
Управление настройками функциональности осуществляется с помощью конфигурационного yaml-файла <code>svacer.cfg</code> | Управление настройками функциональности осуществляется с помощью конфигурационного yaml-файла <code>svacer.cfg</code>. | ||
Раздел конфигурации для управления функциональностью | Раздел конфигурации для управления функциональностью - <code>xsvacer/webide</code>. | ||
Раздел содержит перечисление доступных конфигураций запуска экземпляров Theia IDE <code | Раздел содержит перечисление настроек доступных конфигураций для запуска экземпляров Theia IDE <code>xsvacer/webide/theia</code>. При наличии нескольких активных конфигураций запуска Theia IDE пользователь сможет выбрать какую из них использовать при запуске IDE с исходными файлами снимка. | ||
xsvacer: | xsvacer: | ||
Line 292: | Line 27: | ||
... | ... | ||
Запуск IDE основывается на запуске docker-контейнеров, содержащих соответствующие сборки IDE. Поэтому необходимо также | '''Внимание!''' Запуск IDE основывается на запуске docker-контейнеров, содержащих соответствующие сборки IDE. Поэтому помимо настройки функциональности в разделе <code>xsvacer/webide</code> необходимо также настроить доступ к docker-хосту в разделе <code>xsvacer/docker</code> ([[Help:XSvacer:Docker]]). В противном случае функциональность webide не сможет работать корректно. | ||
'''Примечание:''' в случае отсутствия файла <code>svacer.cfg</code> или отсутствии раздела <code>xsvacer/webide</code>, будет использоваться конфигурация по умолчанию (см. ниже) | |||
=== Конфигурация запуска Theia IDE === | === Конфигурация запуска Theia IDE === | ||
'''Внимание!''' На этапе внедрения расширений XSvacer конфигурация функциональностей может меняться. Следите за анонсами! | |||
Конфигурации запуска Theia IDE добавляются в виде полей в разделе <code>xsvacer/webide</code>. Название поля является идентификатором конфигурации запуска. Например идентификатор по номеру используемой версии IDE: | |||
xsvacer: | xsvacer: | ||
webide: | webide: | ||
Line 316: | Line 50: | ||
!Тип данных | !Тип данных | ||
!Описание | !Описание | ||
!Значение в конфигурации по умолчанию | !Значение в конфигурации по умолчанию | ||
|- | |- | ||
|disabled | |disabled | ||
|bool | |bool | ||
|Конфигурация запуска неактивна. Неактивная конфигурация не доступна для запуска экземпляра IDE | |Конфигурация запуска неактивна. Неактивная конфигурация не доступна для запуска экземпляра IDE | ||
|true (переопределяется в конфигурации default) | |true (переопределяется в конфигурации <code>default</code>) | ||
|- | |- | ||
|order | |order | ||
|int | |int | ||
|Порядковый номер в списке выбора конфигурации запуска | |Порядковый номер в списке выбора конфигурации запуска | ||
|0 | |0 | ||
|- | |- | ||
|name | |name | ||
|string | |string | ||
|Название конфигурации | |Название конфигурации | ||
|Theia blueprint web IDE (v1.46.0) | |Theia blueprint web IDE (v1.46.0) | ||
|- | |- | ||
|sourcesroot | |sourcesroot | ||
|string | |string | ||
|Путь к папке | |Путь к папке содержащей исходные коды снимков на машине со svacer'ом | ||
|${USER_CACHE_DIR}/svacer-snapshot-sources | |${USER_CACHE_DIR}/svacer-snapshot-sources | ||
|- | |- | ||
|dockerhostsourcesroot | |dockerhostsourcesroot | ||
|string | |string | ||
|Путь к папке | |Путь к папке содержащей исходные коды снимков на хосте docker'а. Нужен при использовании удалённого docker-хоста, т.к. в таком случае папка с исходными кодами скорее всего будет доступна по адресу, отличающемуся от <code>sourcesroot</code> | ||
| | | | ||
|- | |- | ||
|dockerhostpathseparator | |dockerhostpathseparator | ||
|string | |string | ||
|Разделитель пути на хосте docker. По умолчанию <code | |Разделитель пути на хосте docker'а. По умолчанию <code>"/"</code>. | ||
| | | | ||
|- | |- | ||
|sariffiletemplate | |sariffiletemplate | ||
|golang template string | |golang template string | ||
| | |Шаблон названия sarif-файла с предупреждениями анализатора. В шаблон передаётся структура <code>sarifFileContext</code> | ||
Шаблон названия sarif-файла с предупреждениями анализатора. В шаблон передаётся структура | |"<nowiki>{{.Context.ProjectName}}.{{.Context.BranchName}}</nowiki>.sarif" | ||
|<nowiki> | |||
|} | |} | ||
==== Параметры менеджера запуска IDE ==== | ==== Параметры менеджера запуска IDE ==== | ||
Конфигурация менеджера запуска IDE. На данный момент доступен только стандартный менеджер (<code | Конфигурация менеджера запуска IDE. На данный момент доступен только "стандартный" менеджер (<code>type: default</code>) | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 392: | Line 97: | ||
!Тип данных | !Тип данных | ||
!Описание | !Описание | ||
!Значение в конфигурации по умолчанию | !Значение в конфигурации по умолчанию | ||
|- | |- | ||
|manager | |manager | ||
|map | |map | ||
|Конфигурация менеджера запуска IDE | |Конфигурация менеджера запуска IDE | ||
| | | | ||
|- | |- | ||
|manager/type | |manager/type | ||
|enum: default | |enum: default | ||
|Тип менеджера запуска IDE | |Тип менеджера запуска IDE | ||
|default | |default | ||
|} | |} | ||
Line 414: | Line 119: | ||
!Тип данных | !Тип данных | ||
!Описание | !Описание | ||
!Значение в конфигурации по умолчанию | !Значение в конфигурации по умолчанию | ||
|- | |- | ||
|docker/ | |docker/ | ||
|map | |map | ||
|Настройки создания docker-контейнера с IDE | |Настройки создания docker-контейнера с IDE | ||
| | | | ||
|- | |- | ||
|docker/hostid | |docker/hostid | ||
|string | |string | ||
|Идентификатор хоста docker, описанного в <code | |Идентификатор хоста docker'а, описанного в <code>xsvacer/docker/hosts</code>. Запуск docker-контейнера с IDE будет выполнен на этом хосте | ||
|default | |default | ||
|- | |- | ||
|docker/containernametemplate | |docker/containernametemplate | ||
|golang template string | |golang template string | ||
|Шаблон для формирования названия контейнера IDE для выбранного снимка. В шаблон передаётся структура | |Шаблон для формирования названия контейнера IDE для выбранного снимка. В шаблон передаётся структура <code>TheiaDockerContainerStartContext</code> (см. ниже) | ||
| | |"theia-1-46-<nowiki>{{.StartArgs.SnapshotID}}</nowiki>" | ||
|- | |- | ||
|docker/containerconfiglabels | |docker/containerconfiglabels | ||
|[]map | |[]map | ||
|Список меток docker-контейнера. Дополняет список меток в <code | |Список "меток" docker-контейнера. Дополняет список меток в <code>docker/container/config/labels</code> | ||
| | | | ||
- "com.docker.compose.project": svacer | - "com.docker.compose.project": svacer | ||
|- | |- | ||
|docker/image/ | |docker/image/ | ||
|map | |map | ||
|Параметры docker-образа из которого будет запущен контейнер | |Параметры docker-образа из которого будет запущен контейнер | ||
| | | | ||
|- | |- | ||
|docker/image/name | |docker/image/name | ||
|string | |string | ||
|Название образа | |Название образа | ||
|theia-blueprint | |theia-blueprint | ||
|- | |- | ||
|docker/image/tag | |docker/image/tag | ||
|string | |string | ||
|Тег образа | |Тег образа | ||
| | |1.46.0.sarif.clang | ||
|- | |- | ||
|docker/image/sourcetype | |docker/image/sourcetype | ||
|enum: repository/file | |enum: repository/file | ||
|Тип источника для загрузки образа в docker-хост | |Тип источника для загрузки образа в docker-хост. | ||
* repository | * <code>repository</code> - будет вызван <code>docker pull</code> образа <code>{image/name}:{image/tag}</code> | ||
* file | * <code>file</code> - будет вызван <code>docker load</code> с url'ом <code>image/sourcefileurl</code> | ||
|file | |file | ||
|- | |- | ||
|docker/image/sourcefileurl | |docker/image/sourcefileurl | ||
|url | |url | ||
| | |Url откуда будет загружен docker-образ если <code>image/sourcetype == "file"</code> | ||
Url может содержать: | |||
- путь к локальному файлу: схема <code>file://</code> | |||
- http/https-адрес: схема <code>http://</code> или <code>https://</code> | |||
| | |https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar | ||
|- | |- | ||
|docker/container/ | |docker/container/ | ||
|map | |map | ||
|Свойства docker-контейнера | |Свойства docker-контейнера | ||
| | | | ||
|- | |- | ||
|docker/container/config | |docker/container/config | ||
|map | |map | ||
|Конфигурация контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/config.go#L70 | |Конфигурация контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/config.go#L70 | ||
| | | | ||
|- | |- | ||
|docker/container/config/env | |docker/container/config/env | ||
Line 487: | Line 186: | ||
|Список переменных среды, которые будут установлены в контейнере | |Список переменных среды, которые будут установлены в контейнере | ||
| | | | ||
- THEIA_WEBVIEW_EXTERNAL_ENDPOINT=<nowiki>{{hostname}}</nowiki> | - THEIA_WEBVIEW_EXTERNAL_ENDPOINT=<nowiki>{{hostname}}</nowiki> | ||
|- | |- | ||
|docker/container/hostconfig/ | |docker/container/hostconfig/ | ||
|map | |map | ||
|Параметры хостинга контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/hostconfig.go#L379 | |Параметры хостинга контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/hostconfig.go#L379 | ||
| | | | ||
|- | |- | ||
|docker/container/hostconfig/autoremove | |docker/container/hostconfig/autoremove | ||
|bool | |bool | ||
| | | | ||
|true | |true | ||
|- | |- | ||
|docker/container/hostconfig/portbindings | |docker/container/hostconfig/portbindings | ||
Line 503: | Line 202: | ||
| | | | ||
| | | | ||
"3000/tcp": | "3000/tcp": | ||
- hostport: 0 | |||
|- | |- | ||
|docker/container/networkconfig/ | |docker/container/networkconfig/ | ||
|map | |map | ||
|Сетевые настройки контейнера. Соответствуют структуре https://github.com/moby/moby/blob/v24.0.7/api/types/network/network.go#L104 | |Сетевые настройки контейнера. Соответствуют структуре https://github.com/moby/moby/blob/v24.0.7/api/types/network/network.go#L104 | ||
| | | | ||
|} | |} | ||
Line 521: | Line 220: | ||
!Тип данных | !Тип данных | ||
!Описание | !Описание | ||
!Значение в конфигурации по умолчанию | !Значение в конфигурации по умолчанию | ||
|- | |- | ||
|healthcheck | |healthcheck | ||
|map | |map | ||
|Параметры проверки доступности IDE | |Параметры проверки доступности IDE | ||
| | | | ||
|- | |- | ||
|healthcheck/starttoreadyretries | |healthcheck/starttoreadyretries | ||
|int | |int | ||
|Количества попыток проверки до ошибки доступности | |Количества попыток проверки до ошибки доступности | ||
|10 | |10 | ||
|- | |- | ||
|healthcheck/starttoreadyperiod | |healthcheck/starttoreadyperiod | ||
|golang duration string | |golang duration string | ||
|Интервал проверки | |Интервал проверки | ||
|200ms | |200ms | ||
|} | |} | ||
Line 543: | Line 242: | ||
sarifFileContext { | sarifFileContext { | ||
Time time.Time | Time time.Time | ||
Context: { | |||
ProjectID *string | ProjectID *string | ||
BranchID *string | BranchID *string | ||
SnapshotID *string | SnapshotID *string | ||
MarkerID *string | MarkerID *string | ||
ProjectName *string | ProjectName *string | ||
BranchName *string | BranchName *string | ||
Line 558: | Line 257: | ||
} | } | ||
} | } | ||
TheiaDockerContainerStartContext { | TheiaDockerContainerStartContext { | ||
IdeID: { | |||
IdeType string | IdeType string | ||
ConfigID string | ConfigID string | ||
}, | }, | ||
StartArgs: { | |||
SnapshotID string | SnapshotID string | ||
UserID string | UserID string | ||
User string | User string | ||
}, | }, | ||
Context: { | |||
ProjectID *string | ProjectID *string | ||
BranchID *string | BranchID *string | ||
SnapshotID *string | SnapshotID *string | ||
MarkerID *string | MarkerID *string | ||
ProjectName *string | ProjectName *string | ||
BranchName *string | BranchName *string | ||
Line 585: | Line 284: | ||
} | } | ||
=== Конфигурация по умолчанию используемая в svacer === | |||
Данная настройка применяется по умолчанию для запуска Theia IDE, если в конфигурационном файле svacer.cfg отсутствует раздел <code>xsvacer/webide</code>: | |||
xsvacer: | |||
docker: | |||
hosts: | |||
default: # конфигурация docker-хоста, действующая по умолчанию | |||
type: external | |||
... | |||
webide: | |||
theia: | |||
1-46-0: &1-46-0 | |||
disabled: true | |||
order: 0 | |||
name: Theia blueprint web IDE (v1.46.0) | |||
sourcesroot: ${USER_CACHE_DIR}/svacer-snapshot-sources | |||
sariffiletemplate: "<nowiki>{{.Context.ProjectName}}.{{.Context.BranchName}}</nowiki>.sarif" | |||
manager: | |||
type: default | |||
docker: | |||
hostid: default # идентификатор используемого docker-хоста | |||
containernametemplate: "theia-1-46-<nowiki>{{.StartArgs.SnapshotID}}</nowiki>" | |||
image: | |||
name: theia-blueprint | |||
tag: 1.46.0.sarif.clang | |||
sourcetype: file | |||
sourcefileurl: https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar | |||
containerconfiglabels: | |||
- "com.docker.compose.project": svacer | |||
container: | |||
config: | |||
env: | |||
- THEIA_WEBVIEW_EXTERNAL_ENDPOINT=<nowiki>{{hostname}}</nowiki> | |||
hostconfig: | |||
autoremove: true | |||
portbindings: | |||
"3000/tcp": | |||
- hostport: 0 | |||
networkconfig: | |||
healthcheck: | |||
starttoreadyretries: 10 | |||
starttoreadyperiod: 200ms | |||
default: | |||
<<: *1-46-0 | |||
order: 0 | |||
disabled: false | |||
По умолчанию используется docker-хост с идентификатором <code>default</code>. Согласно настройке этого хоста, по умолчанию предполагается взаимодействие с докером через unix-сокет <code | '''Внимание!''' По умолчанию используется docker-хост с идентификатором <code>default</code>. Согласно настройке этого хоста, по умолчанию предполагается взаимодействие с докером через unix-сокет <code>unix:///var/run/docker.sock</code>. Соответственно пользователь, под которым запускается svacer должен иметь доступ к этому сокету (https://docs.docker.com/engine/install/linux-postinstall/). | ||
'''Внимание!''' При наличии раздела <code>xsvacer/webide</code> в конфигурационном файле <code>svacer.cfg</code>, будут применены только настройки из этого раздела. Настройки по умолчанию будут полностью проигнорированы. | |||
=== Изменение конфигурационных параметров с помощью переменных окружения === | === Изменение конфигурационных параметров с помощью переменных окружения === | ||
Значения атрибутов конфигурации могут быть изменены с помощью переменных окружения | Значения атрибутов конфигурации могут быть изменены с помощью переменных окружения <code>XSVACER_WEBIDE_THEIA_{id конфигурации ide}[_параметр]={значение параметра}</code> | ||
Например, для активации rootless-хоста <code>xsvacer/hosts/local</code> и переключения запуска IDE с идентификатором <code>default</code> на этот хост, можно указать такие значения переменных окружения при запуске svacer'а: | |||
XSVACER_DOCKER_HOSTS_LOCAL_DISABLED=false | XSVACER_DOCKER_HOSTS_LOCAL_DISABLED=false | ||
XSVACER_WEBIDE_THEIA_DEFAULT_DOCKER_HOSTID=local | XSVACER_WEBIDE_THEIA_DEFAULT_DOCKER_HOSTID=local | ||
== Рекомендации == | == Рекомендации == | ||
Line 676: | Line 349: | ||
=== Предварительная загрузка docker-образа с IDE === | === Предварительная загрузка docker-образа с IDE === | ||
По умолчанию параметр | По умолчанию параметр <code>xsvacer/webide/theia/1-46-0/docker/image/sourcefileurl</code> содержит значение <code>https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar</code>. По этому адресу находится архив с docker-образом для Theia IDE. | ||
По этому адресу находится архив с docker-образом для Theia IDE | |||
Если docker-образ ещё не был загружен, то загрузка начнётся при первой попытке запуска IDE. Т.к. этот процесс занимает длительное время, то запрос запуска IDE тоже будет выполняться долго. | |||
Для ускорения первого запуска IDE, докер образ можно загрузить в хост docker'а вручную. Для этого необходимо: | |||
# Скачать файл архива; | |||
# Выполнить команду <code>docker image load -i /path/to/tar/theia-blueprint.1.46.0.sarif.clang.tag</code>; |
Revision as of 00:44, 5 June 2024
Поддержка среды рвзработки Theia IDE
Примечание: данная функциональность входит в набор расширений XSvacer.
При активации данной функциональности появляется возможность просматривать исходный код снимка с предупреждениями анализатора во внешней IDE.
По умолчанию запускается IDE собранная на основе Theia IDE (https://theia-ide.org/).
Активация функциональности
Для активации функциональности необходимо указать флаг --xsvacer.features webide
при запуске svacer'а.
Примечание: при запуске функциональностиwebide
также будет запущена функциональностьdocker
, с использованием которой осуществляется доступ к хосту docker'а, на котором будут запускаться контейнеры с IDE.
Конфигурация
Управление настройками функциональности осуществляется с помощью конфигурационного yaml-файла svacer.cfg
.
Раздел конфигурации для управления функциональностью - xsvacer/webide
.
Раздел содержит перечисление настроек доступных конфигураций для запуска экземпляров Theia IDE xsvacer/webide/theia
. При наличии нескольких активных конфигураций запуска Theia IDE пользователь сможет выбрать какую из них использовать при запуске IDE с исходными файлами снимка.
xsvacer: webide: theia: config1: ... config2: ...
Внимание! Запуск IDE основывается на запуске docker-контейнеров, содержащих соответствующие сборки IDE. Поэтому помимо настройки функциональности в разделеxsvacer/webide
необходимо также настроить доступ к docker-хосту в разделеxsvacer/docker
(Help:XSvacer:Docker). В противном случае функциональность webide не сможет работать корректно.
Примечание: в случае отсутствия файлаsvacer.cfg
или отсутствии разделаxsvacer/webide
, будет использоваться конфигурация по умолчанию (см. ниже)
Конфигурация запуска Theia IDE
Внимание! На этапе внедрения расширений XSvacer конфигурация функциональностей может меняться. Следите за анонсами!
Конфигурации запуска Theia IDE добавляются в виде полей в разделе xsvacer/webide
. Название поля является идентификатором конфигурации запуска. Например идентификатор по номеру используемой версии IDE:
xsvacer: webide: theia: 1-46-0: name: Theia blueprint web IDE (v1.46.0) ...
Базовые параметры конфигурации запуска
Название | Тип данных | Описание | Значение в конфигурации по умолчанию |
---|---|---|---|
disabled | bool | Конфигурация запуска неактивна. Неактивная конфигурация не доступна для запуска экземпляра IDE | true (переопределяется в конфигурации default )
|
order | int | Порядковый номер в списке выбора конфигурации запуска | 0 |
name | string | Название конфигурации | Theia blueprint web IDE (v1.46.0) |
sourcesroot | string | Путь к папке содержащей исходные коды снимков на машине со svacer'ом | ${USER_CACHE_DIR}/svacer-snapshot-sources |
dockerhostsourcesroot | string | Путь к папке содержащей исходные коды снимков на хосте docker'а. Нужен при использовании удалённого docker-хоста, т.к. в таком случае папка с исходными кодами скорее всего будет доступна по адресу, отличающемуся от sourcesroot
|
|
dockerhostpathseparator | string | Разделитель пути на хосте docker'а. По умолчанию "/" .
|
|
sariffiletemplate | golang template string | Шаблон названия sarif-файла с предупреждениями анализатора. В шаблон передаётся структура sarifFileContext
|
"{{.Context.ProjectName}}.{{.Context.BranchName}}.sarif" |
Параметры менеджера запуска IDE
Конфигурация менеджера запуска IDE. На данный момент доступен только "стандартный" менеджер (type: default
)
Название | Тип данных | Описание | Значение в конфигурации по умолчанию |
---|---|---|---|
manager | map | Конфигурация менеджера запуска IDE | |
manager/type | enum: default | Тип менеджера запуска IDE | default |
Параметры запуска docker-контейнеров с IDE
Данные параметры используются для настройки запуска docker-контейнеров с IDE
Название | Тип данных | Описание | Значение в конфигурации по умолчанию |
---|---|---|---|
docker/ | map | Настройки создания docker-контейнера с IDE | |
docker/hostid | string | Идентификатор хоста docker'а, описанного в xsvacer/docker/hosts . Запуск docker-контейнера с IDE будет выполнен на этом хосте
|
default |
docker/containernametemplate | golang template string | Шаблон для формирования названия контейнера IDE для выбранного снимка. В шаблон передаётся структура TheiaDockerContainerStartContext (см. ниже)
|
"theia-1-46-{{.StartArgs.SnapshotID}}" |
docker/containerconfiglabels | []map | Список "меток" docker-контейнера. Дополняет список меток в docker/container/config/labels
|
- "com.docker.compose.project": svacer |
docker/image/ | map | Параметры docker-образа из которого будет запущен контейнер | |
docker/image/name | string | Название образа | theia-blueprint |
docker/image/tag | string | Тег образа | 1.46.0.sarif.clang |
docker/image/sourcetype | enum: repository/file | Тип источника для загрузки образа в docker-хост.
|
file |
docker/image/sourcefileurl | url | Url откуда будет загружен docker-образ если image/sourcetype == "file"
Url может содержать:
- путь к локальному файлу: схема |
https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar |
docker/container/ | map | Свойства docker-контейнера | |
docker/container/config | map | Конфигурация контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/config.go#L70 | |
docker/container/config/env | []string | Список переменных среды, которые будут установлены в контейнере |
- THEIA_WEBVIEW_EXTERNAL_ENDPOINT={{hostname}} |
docker/container/hostconfig/ | map | Параметры хостинга контейнера. Соответствует структуре https://github.com/moby/moby/blob/v24.0.7/api/types/container/hostconfig.go#L379 | |
docker/container/hostconfig/autoremove | bool | true | |
docker/container/hostconfig/portbindings | map |
"3000/tcp": - hostport: 0 | |
docker/container/networkconfig/ | map | Сетевые настройки контейнера. Соответствуют структуре https://github.com/moby/moby/blob/v24.0.7/api/types/network/network.go#L104 |
Параметры проверки доступности healthcheck
Данные параметры используются для проверки доступности IDE после запуска docker-контейнера
Название | Тип данных | Описание | Значение в конфигурации по умолчанию |
---|---|---|---|
healthcheck | map | Параметры проверки доступности IDE | |
healthcheck/starttoreadyretries | int | Количества попыток проверки до ошибки доступности | 10 |
healthcheck/starttoreadyperiod | golang duration string | Интервал проверки | 200ms |
Структуры передаваемые в поля с golang-шаблонами строк
sarifFileContext { Time time.Time Context: { ProjectID *string BranchID *string SnapshotID *string MarkerID *string ProjectName *string BranchName *string SnapshotName *string MarkerName *string CreatedBy null.String CreatedByID null.String CreateTs null.Time } } TheiaDockerContainerStartContext { IdeID: { IdeType string ConfigID string }, StartArgs: { SnapshotID string UserID string User string }, Context: { ProjectID *string BranchID *string SnapshotID *string MarkerID *string ProjectName *string BranchName *string SnapshotName *string MarkerName *string CreatedBy null.String CreatedByID null.String CreateTs null.Time } }
Конфигурация по умолчанию используемая в svacer
Данная настройка применяется по умолчанию для запуска Theia IDE, если в конфигурационном файле svacer.cfg отсутствует раздел xsvacer/webide
:
xsvacer: docker: hosts: default: # конфигурация docker-хоста, действующая по умолчанию type: external ... webide: theia: 1-46-0: &1-46-0 disabled: true order: 0 name: Theia blueprint web IDE (v1.46.0) sourcesroot: ${USER_CACHE_DIR}/svacer-snapshot-sources sariffiletemplate: "{{.Context.ProjectName}}.{{.Context.BranchName}}.sarif" manager: type: default docker: hostid: default # идентификатор используемого docker-хоста containernametemplate: "theia-1-46-{{.StartArgs.SnapshotID}}" image: name: theia-blueprint tag: 1.46.0.sarif.clang sourcetype: file sourcefileurl: https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar containerconfiglabels: - "com.docker.compose.project": svacer container: config: env: - THEIA_WEBVIEW_EXTERNAL_ENDPOINT={{hostname}} hostconfig: autoremove: true portbindings: "3000/tcp": - hostport: 0 networkconfig: healthcheck: starttoreadyretries: 10 starttoreadyperiod: 200ms default: <<: *1-46-0 order: 0 disabled: false
Внимание! По умолчанию используется docker-хост с идентификаторомdefault
. Согласно настройке этого хоста, по умолчанию предполагается взаимодействие с докером через unix-сокетunix:///var/run/docker.sock
. Соответственно пользователь, под которым запускается svacer должен иметь доступ к этому сокету (https://docs.docker.com/engine/install/linux-postinstall/).
Внимание! При наличии разделаxsvacer/webide
в конфигурационном файлеsvacer.cfg
, будут применены только настройки из этого раздела. Настройки по умолчанию будут полностью проигнорированы.
Изменение конфигурационных параметров с помощью переменных окружения
Значения атрибутов конфигурации могут быть изменены с помощью переменных окружения XSVACER_WEBIDE_THEIA_{id конфигурации ide}[_параметр]={значение параметра}
Например, для активации rootless-хоста xsvacer/hosts/local
и переключения запуска IDE с идентификатором default
на этот хост, можно указать такие значения переменных окружения при запуске svacer'а:
XSVACER_DOCKER_HOSTS_LOCAL_DISABLED=false XSVACER_WEBIDE_THEIA_DEFAULT_DOCKER_HOSTID=local
Рекомендации
Предварительная загрузка docker-образа с IDE
По умолчанию параметр xsvacer/webide/theia/1-46-0/docker/image/sourcefileurl
содержит значение https://nextcloud.ispras.ru/index.php/s/gr7pa4RDJBBqAPy/download/theia-blueprint.1.46.0.sarif.clang.tar
. По этому адресу находится архив с docker-образом для Theia IDE.
Если docker-образ ещё не был загружен, то загрузка начнётся при первой попытке запуска IDE. Т.к. этот процесс занимает длительное время, то запрос запуска IDE тоже будет выполняться долго.
Для ускорения первого запуска IDE, докер образ можно загрузить в хост docker'а вручную. Для этого необходимо:
- Скачать файл архива;
- Выполнить команду
docker image load -i /path/to/tar/theia-blueprint.1.46.0.sarif.clang.tag
;