
All checks were successful
Build-Test-Publish / build (linux/amd64) (push) Successful in 54s
Build-Test-Publish / build (linux/arm64) (push) Successful in 1m23s
Build-Test-Publish / test-install-from-scratch (linux/amd64) (push) Successful in 7s
Build-Test-Publish / test-install-from-scratch (linux/arm64) (push) Successful in 7s
1.9 KiB
1.9 KiB
Technology Stack
Build System
- CMake 3.16+ with Ninja generator for C++ projects
- Docker containerized builds using
gitea.jde.nz/public/dropshell-build-base:latest
- Static linking for all C++ executables (
-static
flag)
Languages & Standards
- C++23 standard for all C++ projects
- Bash for shell scripts and simple tools
- Shell scripts follow
set -euo pipefail
pattern
Dependencies
- nlohmann_json for JSON handling in C++ projects
- CPR (static) for HTTP requests in getpkg
- Custom modules in
/usr/local/share/cmake/Modules
Common Build Patterns
C++ Projects (CMake)
# Standard build command
cmake -G Ninja -S . -B ./build -DCMAKE_BUILD_TYPE=Debug -DPROJECT_NAME=<project>
cmake --build ./build
Docker Build (for C++ tools)
# Uses Dockerfile.dropshell-build pattern
docker build -t <project>-build -f Dockerfile.dropshell-build --build-arg PROJECT=<project> --output ./output .
Shell Tools
- No build step required
- Executable shell scripts with proper shebang
- Use
chmod +x
for permissions
Common Commands
Build
./build.sh # Build individual project
./buildtestpublish_all.sh # Build all projects
Test
./test.sh # Run tests for individual project
Clean
./clean.sh # Clean build artifacts
Publish
./publish.sh # Publish to getpkg.xyz (requires SOS_WRITE_TOKEN)
Version Management
- Automatic timestamp-based versioning:
YYYY.MMDD.HHMM
- Version configured via
version.hpp.in
template files - Pre-build scripts (
cmake_prebuild.sh
) for additional setup
Environment Variables
CMAKE_BUILD_TYPE
: Debug/Release (default: Debug)SOS_WRITE_TOKEN
: Authentication for publishingNO_CACHE
: Skip Docker cache when set to "true"PROJECT
: Project name for build scripts