#!/bin/bash # Build mcpd Docker image and push to Gitea container registry. # # Usage: # ./build-mcpd.sh [tag] # Build for native arch # ./build-mcpd.sh [tag] --platform linux/amd64 # Build for specific platform # ./build-mcpd.sh [tag] --multi-arch # Build for both amd64 and arm64 set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" cd "$PROJECT_ROOT" # Load .env for GITEA_TOKEN if [ -f .env ]; then set -a; source .env; set +a fi # Push directly to internal address (external proxy has body size limit) REGISTRY="10.0.0.194:3012" IMAGE="mcpd" TAG="${1:-latest}" # Parse optional flags PLATFORM="" MULTI_ARCH=false shift 2>/dev/null || true while [[ $# -gt 0 ]]; do case "$1" in --platform) PLATFORM="$2" shift 2 ;; --multi-arch) MULTI_ARCH=true shift ;; *) shift ;; esac done if [ "$MULTI_ARCH" = true ]; then echo "==> Building multi-arch mcpd image (linux/amd64 + linux/arm64)..." podman build --platform linux/amd64,linux/arm64 \ --manifest "$IMAGE:$TAG" -f deploy/Dockerfile.mcpd . echo "==> Tagging manifest as $REGISTRY/michal/$IMAGE:$TAG..." podman tag "$IMAGE:$TAG" "$REGISTRY/michal/$IMAGE:$TAG" echo "==> Logging in to $REGISTRY..." podman login --tls-verify=false -u michal -p "$GITEA_TOKEN" "$REGISTRY" echo "==> Pushing manifest to $REGISTRY/michal/$IMAGE:$TAG..." podman manifest push --tls-verify=false --all \ "$REGISTRY/michal/$IMAGE:$TAG" "docker://$REGISTRY/michal/$IMAGE:$TAG" else PLATFORM_FLAG="" if [ -n "$PLATFORM" ]; then PLATFORM_FLAG="--platform $PLATFORM" echo "==> Building mcpd image for $PLATFORM..." else echo "==> Building mcpd image (native arch)..." fi podman build $PLATFORM_FLAG -t "$IMAGE:$TAG" -f deploy/Dockerfile.mcpd . echo "==> Tagging as $REGISTRY/michal/$IMAGE:$TAG..." podman tag "$IMAGE:$TAG" "$REGISTRY/michal/$IMAGE:$TAG" echo "==> Logging in to $REGISTRY..." podman login --tls-verify=false -u michal -p "$GITEA_TOKEN" "$REGISTRY" echo "==> Pushing to $REGISTRY/michal/$IMAGE:$TAG..." podman push --tls-verify=false "$REGISTRY/michal/$IMAGE:$TAG" fi # Ensure package is linked to the repository source "$SCRIPT_DIR/link-package.sh" link_package "container" "$IMAGE" echo "==> Done!" echo " Image: $REGISTRY/michal/$IMAGE:$TAG"