mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-04 13:11:35 +02:00
@@ -5,7 +5,7 @@ from pathlib import Path
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
# Application version - single source of truth
|
||||
APP_VERSION = "0.1.7b"
|
||||
APP_VERSION = "0.1.7"
|
||||
GITHUB_REPO = "maziggy/bambuddy"
|
||||
|
||||
# App directory - where the application is installed (for static files)
|
||||
|
||||
+12
-28
@@ -2,12 +2,13 @@
|
||||
# Build and push multi-architecture Docker image to GitHub Container Registry
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/docker-publish.sh [version] [--parallel]
|
||||
# ./docker-publish.sh [version] [--parallel]
|
||||
#
|
||||
# Examples:
|
||||
# ./scripts/docker-publish.sh 0.1.6 # Sequential build (default)
|
||||
# ./scripts/docker-publish.sh 0.1.6 --parallel # Build both archs simultaneously
|
||||
# ./scripts/docker-publish.sh 0.1.6-beta # Pre-release (no latest tag)
|
||||
# ./docker-publish.sh 0.1.7b # Sequential build (default)
|
||||
# ./docker-publish.sh 0.1.7b --parallel # Build both archs simultaneously
|
||||
#
|
||||
# Note: All versions are also tagged as 'latest'
|
||||
#
|
||||
# Prerequisites:
|
||||
# 1. Log in to ghcr.io first:
|
||||
@@ -82,11 +83,7 @@ if ! grep -q "ghcr.io" ~/.docker/config.json 2>/dev/null; then
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Determine if this is a release version (includes betas for now)
|
||||
IS_RELEASE=false
|
||||
if [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?(b[0-9]+)?$ ]]; then
|
||||
IS_RELEASE=true
|
||||
fi
|
||||
# Always tag as latest (in addition to version tag)
|
||||
|
||||
# Setup buildx builder if not exists
|
||||
echo -e "${BLUE}[1/4] Setting up Docker Buildx...${NC}"
|
||||
@@ -113,14 +110,9 @@ if ! docker buildx inspect --bootstrap | grep -q "linux/arm64"; then
|
||||
docker run --privileged --rm tonistiigi/binfmt --install all
|
||||
fi
|
||||
|
||||
# Build tags
|
||||
TAGS="-t ${FULL_IMAGE}:${VERSION}"
|
||||
if [ "$IS_RELEASE" = true ]; then
|
||||
TAGS="$TAGS -t ${FULL_IMAGE}:latest"
|
||||
echo -e "${BLUE}[3/4] Building and pushing (version + latest)...${NC}"
|
||||
else
|
||||
echo -e "${BLUE}[3/4] Building and pushing (version only, no latest)...${NC}"
|
||||
fi
|
||||
# Build tags (always include latest)
|
||||
TAGS="-t ${FULL_IMAGE}:${VERSION} -t ${FULL_IMAGE}:latest"
|
||||
echo -e "${BLUE}[3/4] Building and pushing (version + latest)...${NC}"
|
||||
|
||||
# Common build args (no cache to ensure clean builds)
|
||||
BUILD_ARGS="--provenance=false --sbom=false --no-cache --pull"
|
||||
@@ -160,19 +152,13 @@ if [ "$PARALLEL" = true ]; then
|
||||
wait $PID_AMD64
|
||||
wait $PID_ARM64
|
||||
|
||||
# Create and push multi-arch manifest
|
||||
# Create and push multi-arch manifest (version + latest)
|
||||
echo -e "${BLUE}Creating multi-arch manifest...${NC}"
|
||||
docker buildx imagetools create \
|
||||
-t "${FULL_IMAGE}:${VERSION}" \
|
||||
-t "${FULL_IMAGE}:latest" \
|
||||
"${FULL_IMAGE}:${VERSION}-amd64" \
|
||||
"${FULL_IMAGE}:${VERSION}-arm64"
|
||||
|
||||
if [ "$IS_RELEASE" = true ]; then
|
||||
docker buildx imagetools create \
|
||||
-t "${FULL_IMAGE}:latest" \
|
||||
"${FULL_IMAGE}:${VERSION}-amd64" \
|
||||
"${FULL_IMAGE}:${VERSION}-arm64"
|
||||
fi
|
||||
else
|
||||
# Sequential build (default): Build both platforms in one command
|
||||
echo -e "${YELLOW}Building sequentially with ${CPU_COUNT} cores (no cache)...${NC}"
|
||||
@@ -192,9 +178,7 @@ echo -e "${GREEN}================================================${NC}"
|
||||
echo -e "${GREEN}✓ Successfully pushed multi-arch image:${NC}"
|
||||
echo -e "${GREEN}================================================${NC}"
|
||||
echo " - ${FULL_IMAGE}:${VERSION}"
|
||||
if [ "$IS_RELEASE" = true ]; then
|
||||
echo " - ${FULL_IMAGE}:latest"
|
||||
fi
|
||||
echo " - ${FULL_IMAGE}:latest"
|
||||
echo ""
|
||||
echo -e "${BLUE}Supported platforms:${NC}"
|
||||
echo " - linux/amd64 (Intel/AMD servers, desktops)"
|
||||
|
||||
Reference in New Issue
Block a user