ObsiGate/build.sh

50 lines
1.4 KiB
Bash

#!/bin/bash
# Build multi-platform ObsiGate Docker image
set -euo pipefail
# ----- Configuration -----
VERSION="1.1.0"
IMAGE_NAME="obsigate"
PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7,linux/386"
BUILDER_NAME="obsigate-builder"
# ----- Helpers -----
info() { printf '\033[1;34m[INFO]\033[0m %s\n' "$*"; }
ok() { printf '\033[1;32m[OK]\033[0m %s\n' "$*"; }
error() { printf '\033[1;31m[ERR]\033[0m %s\n' "$*" >&2; }
# ----- Pre-flight checks -----
if ! command -v docker &>/dev/null; then
error "docker introuvable. Installez Docker avant de continuer."
exit 1
fi
if ! docker buildx version &>/dev/null; then
error "docker buildx introuvable. Mettez à jour Docker ou installez le plugin buildx."
exit 1
fi
info "=== ObsiGate v${VERSION} — Multi-Platform Build ==="
info "Platforms : ${PLATFORMS}"
# ----- Builder setup -----
docker buildx create --use --name "${BUILDER_NAME}" 2>/dev/null || true
# ----- Build -----
# Note: --load only works for single platform; use --push for multi-platform registry push.
# For local testing, build one platform at a time (see below).
docker buildx build \
--platform "${PLATFORMS}" \
--tag "${IMAGE_NAME}:latest" \
--tag "${IMAGE_NAME}:${VERSION}" \
"$@" \
.
ok "Build terminé (v${VERSION})."
echo ""
info "Pour un push vers un registry : $0 --push"
info "Pour un test local (amd64) :"
echo " docker buildx build --platform linux/amd64 --load -t ${IMAGE_NAME}:latest ."
echo " docker-compose up -d"