agent-enviroments/dev-inside-containers.md

52 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Про разработку кода в контейнерах — повседневную работу связанную с компиляцией исходного кода и запуском интерактивной отладкой.
### Использование возможностей `VSCode`
В оригинальной коммерческой версии `Visual Studio Code` есть возможность выполнять GNU/LLVM toolchain'ы внутри указанного контейнера. Реализуется эта функциональность прозрачной для пользователя установкой серверной части `Visual Studio Code` внутри контейнера, в процессе «подключения» к нему.
Набор устанавливаемых `extensions` для может быть такой:
[Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd), [CMake](https://marketplace.visualstudio.com/items?itemName=twxs.cmake), [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools), [Code Runner](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner),[CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)
Быстрая установка возможна через «Launch VS Code Quick Open (`Ctrl+P`)»:
```
ext install ms-vscode-remote.remote-containers
ext install llvm-vs-code-extensions.vscode-clangd
ext install twxs.cmake
ext install ms-vscode.cmake-tools
ext install formulahendry.code-runner
ext install vadimcn.vscode-lldb
```
В таких редакциях как `Code-OSS`, `VSCodium` и т.п. данная функциональность отсутствует и `marketplace` не содержит `Dev Containers`/`ms-vscode-remote.remote-containers`.
#### Подключение к контейнеру
Один из вариантов подключиться к уже запущенному контейнеру:
- на вкладке `REMOTE EXPLORER`
- раскрыть список `Dev Containers`
- выбрать нужный и `Attach...` в контекстном меню
Если это первое подключение к контейнеру, то `Visual Studio Code` спросит какие из уже установленных `extensions` включить/задействовать на серверной части внутри контейнера. Т.е. вкладка `EXTENSIONS` будет содержать не два, а три раскрывающихся списка.
### Запуск контейнера
Проекты открываются, собираются и отлаживаются совершенно прозрачно, если контейнер был создан с монтированием локальной директории хостовой машины:
```shell
docker run -ti --name "aaabuilder" -h="aaa" --mount type=bind,source=/home/имяпользователя/projects,target=/home/имяпользователя/projects registry.git.peresvet.it/system-trace/agent-enviroments:builder
```
### Поддержка LSP-сервера
Про использование IDE/редакторов реализующих работу с синтаксисом через LSP-сервер `clangd`.
#### Установка `clangd` внутри `ALTLinux p10
В образе `builder` на базе `ALTLinux p10` отсутствует `clangd`. Если установить 17-ю версию вручную (или же согласившись на предложение IDE), то установится так же и более древняя версия `clangd`, на которую, фактически, и будет указывать символьная ссылка `/usr/bin/clangd`.
Потому для разработки внутри контейнера требуется выполнить вручную порядок действий схожий с таким:
```shell
apt-get install clangd17.0
rm /usr/bin/clangd
ln -s /usr/bin/clangd-17 /usr/bin/clangd
```
#### Наличие файла `compile_commands.json`
В настройках `Visual Studio Code` есть возможность указать:
```json
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",
```
внутр файла `~/.config/Code/User/settings.json`. При успешном конфигурировании `cmake`-проекта файл `compile_commands.json` автоматически будет копироваться в корень проекта.
При конфигурировании `Seastar` через `python`-скрипт генерация `compile_commands.json` обеспечивается использованием флага:
```shell
./configure.py ... --compile-commands-json
```