Building¶
Detailed instructions for building 5-Spot.
Build Commands¶
Debug Build¶
Output: target/debug/5spot
Release Build¶
Output: target/release/5spot
Build Binaries¶
# Main controller
cargo build --bin 5spot
# CRD generator
cargo build --bin crdgen
# Documentation generator
cargo build --bin crddoc
Docker Build¶
Basic Build¶
Multi-Architecture Build¶
# Build for multiple platforms
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ghcr.io/finos/5-spot:latest \
--push .
Dockerfile¶
FROM rust:1.75-alpine AS builder
WORKDIR /app
COPY . .
RUN apk add --no-cache musl-dev
RUN cargo build --release
FROM alpine:3.19
COPY --from=builder /app/target/release/5spot /usr/local/bin/
ENTRYPOINT ["5spot"]
Generated Artifacts¶
CRD Generation¶
Generates the Kubernetes Custom Resource Definition.
API Documentation¶
Generates Markdown documentation from CRD schema.
Build Configuration¶
Cargo.toml Features¶
Build Profiles¶
Cross-Compilation¶
Linux (from macOS)¶
# Install cross
cargo install cross
# Build for Linux
cross build --release --target x86_64-unknown-linux-musl
ARM64¶
CI/CD Build¶
GitHub Actions¶
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-action@stable
- name: Build
run: cargo build --release
- name: Run tests
run: cargo test
Troubleshooting¶
OpenSSL Errors¶
Use rustls instead of native OpenSSL:
[dependencies]
kube = { version = "0.87", default-features = false, features = ["client", "runtime", "rustls-tls"] }
musl Build Issues¶
Install musl tools:
Related¶
- Development Setup - Environment setup
- Testing - Test execution
- Contributing - Contribution guidelines