secretumvault/.woodpecker/Dockerfile.cross

42 lines
1.1 KiB
Docker
Raw Normal View History

# Dockerfile for cross-platform compilation
# Supports building for multiple targets using docker
FROM ubuntu:22.04
# Install build essentials
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
ENV PATH="/root/.cargo/bin:${PATH}"
# Install cross tool for cross-compilation
RUN cargo install cross --locked
# Create workspace directory
WORKDIR /workspace
# Copy entire project
COPY . .
# Default build target
ARG TARGET=x86_64-unknown-linux-gnu
ENV BUILD_TARGET="${TARGET}"
# Build command
RUN cross build --target "${BUILD_TARGET}" --release
# Extract binaries to output directory
RUN mkdir -p /output/bin && \
find target/"${BUILD_TARGET}"/release -maxdepth 1 -type f -executable -exec cp {} /output/bin/ \;
# Create manifest
RUN echo "{ \"target\": \"${BUILD_TARGET}\", \"built\": \"$(date -u +'%Y-%m-%dT%H:%M:%SZ')\" }" > /output/BUILD_INFO.json
# Default command
CMD ["/bin/bash"]