agent-enviroments/dev-inside-containers.md

5.0 KiB
Raw Blame History

Про разработку кода в контейнерах — повседневную работу связанную с компиляцией исходного кода и запуском интерактивной отладкой.

Использование возможностей VSCode

В оригинальной коммерческой версии Visual Studio Code есть возможность выполнять GNU/LLVM toolchain'ы внутри указанного контейнера. Реализуется эта функциональность прозрачной для пользователя установкой серверной части Visual Studio Code внутри контейнера, в процессе «подключения» к нему.

Набор устанавливаемых extensions для может быть такой: Dev Containers, clangd, CMake, CMake Tools, Code Runner,CodeLLDB

Быстрая установка возможна через «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 будет содержать не два, а три раскрывающихся списка.

Запуск контейнера

Проекты открываются, собираются и отлаживаются совершенно прозрачно, если контейнер был создан с монтированием локальной директории хостовой машины:

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. Потому для разработки внутри контейнера требуется выполнить вручную порядок действий схожий с таким:

apt-get install clangd17.0
rm /usr/bin/clangd
ln -s /usr/bin/clangd-17 /usr/bin/clangd

Наличие файла compile_commands.json

В настройках Visual Studio Code есть возможность указать:

"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",

внутр файла ~/.config/Code/User/settings.json. При успешном конфигурировании cmake-проекта файл compile_commands.json автоматически будет копироваться в корень проекта.

При конфигурировании Seastar через python-скрипт генерация compile_commands.json обеспечивается использованием флага:

./configure.py ... --compile-commands-json