version: '3.8' # CI build configuration for TrueNAS SCALE # # Builds voxtype binaries on a machine WITHOUT AVX-512 to ensure compatibility # with older CPUs (Zen 3, Haswell, etc.) # # Usage: # docker compose -f docker-compose.build.yml build # docker compose -f docker-compose.build.yml up # # Or build specific targets: # docker compose -f docker-compose.build.yml up avx2 # docker compose -f docker-compose.build.yml up vulkan # docker compose -f docker-compose.build.yml up avx512 services: avx2: build: context: . dockerfile: Dockerfile.build args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} vulkan: build: context: . dockerfile: Dockerfile.vulkan args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} avx512: build: context: . dockerfile: Dockerfile.avx512 args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} profiles: - avx512 # Only build if explicitly requested (requires AVX-512 capable host) # ONNX AVX2 build (Parakeet + Moonshine, ONNX Runtime bundled, wide compatibility) onnx-avx2: build: context: . dockerfile: Dockerfile.onnx args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} # ONNX AVX-512 build (requires AVX-512 capable host) onnx-avx512: build: context: . dockerfile: Dockerfile.onnx-avx512 args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} profiles: - avx512 # Only build if explicitly requested (requires AVX-512 capable host) # ONNX CUDA 12 build (NVIDIA GPUs on CUDA 12.x runtime) # ort 2.0.0-rc.12 picks the cu12 prebuilt at build time; shipping a separate # cu13 binary covers the CUDA 13.x user base. At install time, voxtype-onnx-cuda # is symlinked to whichever variant matches the host's CUDA runtime. onnx-cuda-12: build: context: . dockerfile: Dockerfile.onnx-cuda-12 args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} # ONNX CUDA 13 build (NVIDIA GPUs on CUDA 13.x runtime, requires driver 580+) onnx-cuda-13: build: context: . dockerfile: Dockerfile.onnx-cuda-13 args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} # ONNX MIGraphX build (AMD GPU acceleration, requires AMD GPU host) onnx-migraphx: build: context: . dockerfile: Dockerfile.onnx-migraphx args: VERSION: ${VERSION:-0.6.2} volumes: - ./releases/${VERSION:-0.6.2}:/output environment: - VERSION=${VERSION:-0.6.2} # ONNX model export (Japanese + Vietnamese Parakeet models) # Usage: docker compose -f docker-compose.build.yml up onnx-export onnx-export: build: context: . dockerfile: Dockerfile.onnx-export volumes: - ./models/parakeet-onnx:/output deploy: resources: reservations: devices: - capabilities: [gpu] # All-in-one build (AVX2 + Vulkan) all: build: context: . dockerfile: Dockerfile.build depends_on: - avx2 - vulkan command: echo "All builds complete"