diff --git a/.github/workflows/vtsh.yml b/.github/workflows/vtsh.yml index 2fbfefe..137d909 100644 --- a/.github/workflows/vtsh.yml +++ b/.github/workflows/vtsh.yml @@ -17,13 +17,18 @@ jobs: - Release runs-on: ubuntu-latest container: - image: silkeh/clang:latest + image: ubuntu:24.04 defaults: run: working-directory: ./lab/vtsh steps: - name: Checkout uses: actions/checkout@v4 + + - name: Install dependencies + run: | + apt-get update + apt-get install -y clang clang-tidy clang-format cmake make python3 python3-pip git - name: Clang Format run: | diff --git a/lab/vtsh/.devcontainer/Dockerfile b/lab/vtsh/.devcontainer/Dockerfile new file mode 100644 index 0000000..48ee413 --- /dev/null +++ b/lab/vtsh/.devcontainer/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:24.04 + +# Установка только необходимых утилит для разработки +RUN apt-get update && apt-get install -y \ + # Python для тестов + python3 \ + python3-pip \ + python3-venv \ + python3-dev \ + python3-pytest \ + + build-essential \ + cmake \ + ninja-build \ + lldb \ + + clang-format \ + clang-tidy \ + clangd \ + + valgrind \ + strace \ + ltrace \ + + && rm -rf /var/lib/apt/lists/* + +# Установка lldb-mi из GitHub + + +# Установка рабочей директории +WORKDIR /workspace + + +# Настройка переменных окружения +ENV CC=clang CXX=clang++ CMAKE_EXPORT_COMPILE_COMMANDS=ON + diff --git a/lab/vtsh/.devcontainer/devcontainer.json b/lab/vtsh/.devcontainer/devcontainer.json new file mode 100644 index 0000000..ed62cbd --- /dev/null +++ b/lab/vtsh/.devcontainer/devcontainer.json @@ -0,0 +1,47 @@ +{ + "name": "vtsh-linux", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "service": "dev", + "workspaceFolder": "/workspace", + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], + "remoteUser": "root", + "mounts": [ + "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached" + ], + "features": {}, + "postCreateCommand": "rm -rf build && bash -lc \"cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS='-O0 -g -gdwarf-4 -fno-omit-frame-pointer'\"", + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.cpptools", + "ms-vscode.cmake-tools", + "llvm-vs-code-extensions.vscode-clangd", + "vadimcn.vscode-lldb", + "ms-vscode.cpptools-extension-pack", + "ms-vscode.makefile-tools", + "ms-vscode.hexeditor" + ], + "settings": { + "cmake.sourceDirectory": "/workspace", + "cmake.buildDirectory": "/workspace/build", + "cmake.generator": "Ninja", + "C_Cpp.default.compilerPath": "/usr/bin/clang", + "C_Cpp.default.includePath": [ + "/usr/include", + "/usr/include/x86_64-linux-gnu" + ], + "lldb.executable": "/usr/bin/lldb", + "lldb.launch.expressions": "native", + "lldb.launch.console": "integratedTerminal", + "lldb.launch.externalConsole": false + } + } + } +} \ No newline at end of file