docs: Add 6, update 4 and remove 2 files
Some checks failed
Build-Test-Publish / build (linux/amd64) (push) Failing after 59s
Build-Test-Publish / build (linux/arm64) (push) Failing after 2m45s

This commit is contained in:
j842
2025-08-17 21:01:38 +12:00
parent ed9bc9ba21
commit efd11657ac
12 changed files with 323 additions and 179 deletions

View File

@@ -0,0 +1,57 @@
ARG IMAGE_TAG
FROM gitea.jde.nz/public/dropshell-build-base:latest AS builder
ARG PROJECT=dropshell
ARG CMAKE_BUILD_TYPE=Debug
# Set working directory
WORKDIR /app
# Create cache directories
RUN mkdir -p /ccache
# Set up ccache
ENV CCACHE_DIR=/ccache
ENV CCACHE_COMPILERCHECK=content
ENV CCACHE_MAXSIZE=2G
# Copy source files and build scripts
COPY source/src/ src/
COPY source/agent-local/ agent-local/
COPY source/agent-remote/ agent-remote/
COPY source/CMakeLists.txt ./
COPY source/cmake_prebuild.sh ./
# Configure project (this step is cached unless CMakeLists.txt changes)
RUN --mount=type=cache,target=/ccache \
--mount=type=cache,target=/build \
mkdir -p /build && \
cmake -G Ninja -S /app -B /build \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold -static -g" \
-DCMAKE_CXX_FLAGS="-g -fno-omit-frame-pointer" \
-DCMAKE_C_FLAGS="-g -fno-omit-frame-pointer" \
-DPROJECT_NAME="${PROJECT}" \
-DCMAKE_STRIP=OFF \
${CMAKE_TOOLCHAIN_FILE:+-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE}
# Build project (ccache will help here when only some files change)
RUN --mount=type=cache,target=/ccache \
--mount=type=cache,target=/build \
cmake --build /build
# Copy the built executables to a regular directory for the final stage
RUN --mount=type=cache,target=/build \
mkdir -p /output && \
find /build -type f -executable -name "*${PROJECT}*" -exec cp {} /output/${PROJECT} \; || \
find /build -type f -executable -exec cp {} /output/${PROJECT} \;
# Final stage that only contains the binaries
FROM scratch AS project
ARG PROJECT=dropshell
# Copy the actual binaries from the regular directory
COPY --from=builder /output/${PROJECT} /${PROJECT}