Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/voidvec/fulla --skill build-and-testコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
| name | build-and-test |
| description | 构建和测试C++ OAuth2后端,包含正确的依赖管理 |
| disable-model-invocation | true |
这个技能帮助您构建、测试和运行OAuth2服务器,完全模拟 build.bat / build.sh 和 CI 工作流的流程。
通过用户调用:/build-and-test [debug|release]
# Windows PowerShell
.\manage.ps1 build-backend # 默认 Release 构建
.\manage.ps1 build-backend -debug # Debug 构建
.\manage.ps1 test-backend # 运行后端测试(ctest,从 build/<preset> 目录)
# Linux/macOS
./manage.sh build-backend
./manage.sh build-backend -debug
./manage.sh test-backend
manage.ps1 / manage.sh 是对 scripts/backend/build.{bat,sh}、test.{bat,sh} 的统一封装。直接调用脚本也可以(见下方“手动流程”)。两者都没有 rebuild-db 子命令——重置数据库请走 /db-reset 技能(直接 psql)。
cmake --preset。CMakePresets.json 定义了多个 preset,每个 preset 把构建产物输出到 build/<preset>(例如 build/windows-msvc、build/linux-release、build/macos-arm64;另有 -debug / -asan / -tsan 变体)。build/apps/server 或 build/tests 下跑 ctest——CTestTestfile.cmake 在 build/<preset> 根目录,必须从那里运行才能覆盖 tests/ 和 libs/** 的全部用例。CMakeLists.txt 的 CMAKE_CXX_STANDARD 17,Conan compiler.cppstd=17)。不要传 cppstd=20 / -DCMAKE_CXX_STANDARD=20。fulla-server(fulla-server.exe on Windows)。所在路径:
build/windows-msvc/apps/server/Release/fulla-server.exebuild/linux-release/apps/server/fulla-server5555(所有 apps/server/config/*.json 的 listeners[0].port)。apps/server/config/config.json(默认)+ 覆盖文件 config.dev.json / config.ci.json / config.prod.json / config.bench.json。config.ci.json 使用内存存储(storage_type="memory"),不连 PostgreSQL。# 停止正在运行的 fulla-server 进程(Windows)
taskkill /F /IM fulla-server.exe 2>$null || echo "No running process"
# Linux/macOS
pkill -9 fulla-server 2>$null || echo "No running process"
Test-Path "apps/server" # 应该存在
Test-Path "libs" # 应该存在
Test-Path "scripts/backend" # 应该存在
Test-Path "manage.ps1" # 应该存在
Test-Path "CMakePresets.json" # 应该存在
Conan 在仓库根目录运行,把依赖安装到对应 preset 的输出目录:
# Windows MSVC (Release)
conan install . --output-folder=build/windows-msvc -s build_type=Release -s compiler.cppstd=17 --build=missing
# Linux GCC (Release)
conan install . --output-folder=build/linux-release -s build_type=Release -s compiler.cppstd=17 --build=missing
# macOS Clang ARM64 (Release)
conan install . --output-folder=build/macos-arm64 -s build_type=Release -s compiler.cppstd=17 --build=missing
# 配置(从仓库根目录,使用 preset 名称)
cmake --preset windows-msvc # 或 linux-release / macos-arm64 / 对应 -debug 变体
# 构建
# Windows(多配置,需要 --config)
cmake --build build/windows-msvc --parallel --config Release
# Linux/macOS(单配置)
cmake --build build/linux-release --parallel
构建产物(含 fulla-server 二进制和 config.json 副本)位于 build/<preset>/apps/server/...。
pg_isready -h localhost -p 5432 || echo "PostgreSQL not ready"
redis-cli -h localhost -p 6379 ping || echo "Redis not ready"
# 初始化测试数据库(本地 / 开发):用统一脚本
./scripts/backend/setup-database.sh # Linux/macOS
# 或
scripts\backend\setup_database.bat # Windows
# 等价于 /db-reset:DROP+CREATE fulla_db,应用 apps/server/migrations/V001..V024,再导入 apps/server/seed/*.sql
# 从 preset 构建根目录运行(关键:不是 build/apps/server 或 build/tests)
cd build/windows-msvc # 或 build/linux-release
ctest --output-on-failure
# 或按标签筛选
ctest -L Unit # Unit / Integration / E2E / Security / Performance / Contract / API / Database / Acceptance
# 详细输出
ctest -V --output-on-failure
等价封装:./manage.sh test-backend 或 scripts/backend/test.sh。
# Windows
build/windows-msvc/apps/server/Release/fulla-server.exe
# Linux/macOS
build/linux-release/apps/server/fulla-server
或用 .\manage.ps1 run-backend / scripts/backend/run-server.sh。
build.bat / manage.ps1,MSVC 编译器(VS 2022+)--config Release|Debugfulla-server.exe,位于 build/windows-msvc/apps/server/Release/build.sh / manage.sh,GCC/Clang 编译器fulla-server,位于 build/<preset>/apps/server/fulla-tests 二进制,注册为 ctest 条目 OAuth2Tests(约 558 个 DROGON_TEST 用例,其中 84 个 Contract 用例)。Contract 用例另外以 Contract.*(84 条)独立 ctest 条目注册,便于 ctest -L Contract。EndpointTests_OutOfProcess(1 条)通过 scripts/backend/run-endpoint-tests.{sh,ps1} 启动 server 并跑 test-oauth2-endpoints(59 个测试)+ test-admin-endpoints(52 个测试)。libs/** 下的 gtest 套件(如 fulla-oauth2-test 等,约 369 条 ctest 条目)。SdkSmoke.FullStack(1 条)驱动 examples/full-stack-host。tests/ 子树为 86 条。tests/common/test_categories.h):Unit、Integration、E2E、Performance、Security、API、Database、Acceptance,以及优先级 P0–P3。conanfile.py 在仓库根。build/<preset>/conan_toolchain.cmake 已存在(先跑 conan install)。apps/server/config/config.dev.json 的 db 配置;CI 用内存存储,不连 PG。build/<preset> 根目录运行,不要在子目录运行。/build-and-test debug 快速迭代。/build-and-test release 跑完整测试。-V 获取详细测试输出。AdvancedStorageTest 是 fulla-tests 内的一个 DROGON_TEST(不是独立二进制),用 ctest -R AdvancedStorage 运行。manage.ps1 docker-up 拉起 Docker 栈)。