#!/bin/bash APP=$1 VERSION=$2 PRERELEASE=$3 # New parameter for pre-release tag if [ -z "$APP" ]; then echo "Please provide an app name as an argument." echo "Usage: $0 [pre-release-tag]" exit 1 fi # Check if version is provided if [ -z "$VERSION" ]; then echo "Please provide a version number as an argument." echo "Usage: $0 $APP [pre-release-tag]" exit 1 fi # Add warning prompt if [ -z "$PRERELEASE" ]; then read -p "You're building WITHOUT any pre-release ($VERSION). Do you wish to continue (y/N)? " -n 1 -r else read -p "You're building WITH pre-release ($VERSION). Do you wish to continue (y/N)? " -n 1 -r fi echo # Move to a new line if [[ ! $REPLY =~ ^[Yy]$ ]] then echo "Aborting..." exit 1 fi # Ensure Docker Buildx is available and set up a builder docker buildx rm multi-arch-builder 2>/dev/null || true # Remove existing builder if it exists docker buildx create --name multi-arch-builder --use || true # Function to build a multi-architecture image build_image() { local app=$1 local image_name="lindesvard/openpanel-$app" local full_version="$image_name:$VERSION" if [ -n "$PRERELEASE" ]; then echo "(pre-release) Building multi-architecture image for $full_version" docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$full_version" \ --build-arg DATABASE_URL="postgresql://p@p:5432/p" \ -f "apps/$app/Dockerfile" \ --push \ . else echo "(latest) Building multi-architecture image for $full_version" docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "$full_version" \ -t "$image_name:latest" \ --build-arg DATABASE_URL="postgresql://p@p:5432/p" \ -f "apps/$app/Dockerfile" \ --push \ . fi if [ $? -ne 0 ]; then echo "Failed to build $full_version" exit 1 fi echo "Successfully built and pushed multi-architecture image for $full_version" } if [ "$APP" == "all" ]; then build_image "dashboard" build_image "worker" build_image "api" echo "All multi-architecture images have been built and pushed successfully." else build_image $APP echo "Multi-architecture image for $APP has been built and pushed successfully." fi