Updated docker-publish-daily-beta.sh

This commit is contained in:
maziggy
2026-03-19 11:38:20 +01:00
parent 7a1eed2b17
commit 94134e1861
+33 -33
View File
@@ -12,12 +12,11 @@
# ./docker-publish-daily-beta.sh --skip-release # Build+push without GitHub release
#
# Reads APP_VERSION from backend/app/core/config.py (must be a beta version like 0.2.2b1).
# Appends a daily date suffix to create a unique tag (e.g., 0.2.2b3-daily.20260311),
# avoiding collisions with release tags. Builds and pushes a multi-arch Docker image.
# Optionally creates/updates a GitHub prerelease.
# Builds and pushes a multi-arch Docker image tagged as 'daily'. Each push overwrites the
# previous 'daily' image. A GitHub prerelease is created with a date-stamped tag for history.
#
# Beta versions are never tagged as 'latest'. Users update by pulling the daily tag
# (e.g., docker pull ghcr.io/maziggy/bambuddy:0.2.2b3-daily.20260311) or using Watchtower.
# Users can stay up to date by pulling the 'daily' tag or using Watchtower:
# docker pull ghcr.io/maziggy/bambuddy:daily
#
# Prerequisites:
# 1. Log in to ghcr.io:
@@ -109,12 +108,13 @@ if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+b[0-9]+$ ]]; then
exit 1
fi
# Append date suffix to differentiate daily builds from releases
# Date-stamped tag for GitHub releases only (not used as Docker tag)
DAILY_DATE=$(date +%Y%m%d)
DAILY_TAG="${VERSION}-daily.${DAILY_DATE}"
echo -e "${GREEN} APP_VERSION: ${VERSION}${NC}"
echo -e "${GREEN} Daily tag: ${DAILY_TAG}${NC}"
echo -e "${GREEN} Docker tag: daily${NC}"
echo -e "${GREEN} Release tag: v${DAILY_TAG}${NC}"
# ============================================================
# Step 2: Build & push Docker images
@@ -126,8 +126,8 @@ CPU_COUNT=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN} Daily beta build${NC}"
echo -e "${GREEN} Version: ${VERSION}${NC}"
echo -e "${GREEN} Tag: ${DAILY_TAG}${NC}"
echo -e "${GREEN} Version: ${VERSION}${NC}"
echo -e "${GREEN} Docker tag: daily${NC}"
echo -e "${GREEN} Platforms: ${PLATFORMS}${NC}"
echo -e "${GREEN} CPU cores: ${CPU_COUNT}${NC}"
if [ "$PARALLEL" = true ]; then
@@ -187,16 +187,16 @@ if ! docker buildx inspect --bootstrap | grep -q "linux/arm64"; then
docker run --privileged --rm tonistiigi/binfmt --install all
fi
# Beta versions never get 'latest' tag
echo -e "${YELLOW}Beta version — skipping 'latest' tag${NC}"
# Beta versions get 'daily' tag (never 'latest')
echo -e "${YELLOW}Beta version — tagging as 'daily' (not 'latest')${NC}"
# Build tags for all target registries
TAGS=""
if [ "$PUSH_GHCR" = true ]; then
TAGS="$TAGS -t ${GHCR_IMAGE}:${DAILY_TAG}"
TAGS="$TAGS -t ${GHCR_IMAGE}:daily"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
TAGS="$TAGS -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
TAGS="$TAGS -t ${DOCKERHUB_IMAGE}:daily"
fi
# Common build args (no cache to ensure clean builds)
@@ -210,12 +210,12 @@ if [ "$PARALLEL" = true ]; then
ARCH_TAGS_AMD64=""
ARCH_TAGS_ARM64=""
if [ "$PUSH_GHCR" = true ]; then
ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${GHCR_IMAGE}:${DAILY_TAG}-amd64"
ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${GHCR_IMAGE}:${DAILY_TAG}-arm64"
ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${GHCR_IMAGE}:daily-amd64"
ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${GHCR_IMAGE}:daily-arm64"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}-amd64"
ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${DOCKERHUB_IMAGE}:${DAILY_TAG}-arm64"
ARCH_TAGS_AMD64="$ARCH_TAGS_AMD64 -t ${DOCKERHUB_IMAGE}:daily-amd64"
ARCH_TAGS_ARM64="$ARCH_TAGS_ARM64 -t ${DOCKERHUB_IMAGE}:daily-arm64"
fi
# Build amd64 in background
@@ -255,16 +255,16 @@ if [ "$PARALLEL" = true ]; then
if [ "$PUSH_GHCR" = true ]; then
echo -e "${BLUE} Creating GHCR manifest...${NC}"
docker buildx imagetools create \
-t "${GHCR_IMAGE}:${DAILY_TAG}" \
"${GHCR_IMAGE}:${DAILY_TAG}-amd64" \
"${GHCR_IMAGE}:${DAILY_TAG}-arm64"
-t "${GHCR_IMAGE}:daily" \
"${GHCR_IMAGE}:daily-amd64" \
"${GHCR_IMAGE}:daily-arm64"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
echo -e "${BLUE} Creating Docker Hub manifest...${NC}"
docker buildx imagetools create \
-t "${DOCKERHUB_IMAGE}:${DAILY_TAG}" \
"${DOCKERHUB_IMAGE}:${DAILY_TAG}-amd64" \
"${DOCKERHUB_IMAGE}:${DAILY_TAG}-arm64"
-t "${DOCKERHUB_IMAGE}:daily" \
"${DOCKERHUB_IMAGE}:daily-amd64" \
"${DOCKERHUB_IMAGE}:daily-arm64"
fi
else
# Sequential build (default): Build both platforms in one command
@@ -296,15 +296,15 @@ else
# Build pull commands for the release body
PULL_COMMANDS=""
if [ "$PUSH_GHCR" = true ]; then
PULL_COMMANDS="docker pull ghcr.io/maziggy/bambuddy:${DAILY_TAG}"
PULL_COMMANDS="docker pull ghcr.io/maziggy/bambuddy:daily"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
if [ -n "$PULL_COMMANDS" ]; then
PULL_COMMANDS="${PULL_COMMANDS}
# or
docker pull maziggy/bambuddy:${DAILY_TAG}"
docker pull maziggy/bambuddy:daily"
else
PULL_COMMANDS="docker pull maziggy/bambuddy:${DAILY_TAG}"
PULL_COMMANDS="docker pull maziggy/bambuddy:daily"
fi
fi
@@ -354,11 +354,11 @@ echo -e "${BLUE}[4/4] Verifying...${NC}"
if [ "$PUSH_GHCR" = true ]; then
echo -e "${BLUE}GHCR manifest:${NC}"
docker buildx imagetools inspect "${GHCR_IMAGE}:${DAILY_TAG}"
docker buildx imagetools inspect "${GHCR_IMAGE}:daily"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
echo -e "${BLUE}Docker Hub manifest:${NC}"
docker buildx imagetools inspect "${DOCKERHUB_IMAGE}:${DAILY_TAG}"
docker buildx imagetools inspect "${DOCKERHUB_IMAGE}:daily"
fi
if [ "$SKIP_RELEASE" != true ]; then
@@ -376,10 +376,10 @@ echo -e "${GREEN} Daily beta build complete!${NC}"
echo -e "${GREEN} Version: ${VERSION}${NC}"
echo -e "${GREEN}================================================${NC}"
if [ "$PUSH_GHCR" = true ]; then
echo " GHCR: ${GHCR_IMAGE}:${DAILY_TAG}"
echo " GHCR: ${GHCR_IMAGE}:daily"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
echo " Docker Hub: ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
echo " Docker Hub: ${DOCKERHUB_IMAGE}:daily"
fi
if [ "$SKIP_RELEASE" != true ]; then
echo " Release: https://github.com/${IMAGE_NAME}/releases/tag/v${DAILY_TAG}"
@@ -391,9 +391,9 @@ echo " - linux/arm64 (Raspberry Pi 4/5, Apple Silicon)"
echo ""
echo -e "${GREEN}Users can now run:${NC}"
if [ "$PUSH_GHCR" = true ]; then
echo " docker pull ${GHCR_IMAGE}:${DAILY_TAG}"
echo " docker pull ${GHCR_IMAGE}:daily"
fi
if [ "$PUSH_DOCKERHUB" = true ]; then
echo " docker pull ${DOCKERHUB_IMAGE}:${DAILY_TAG}"
echo " docker pull ${IMAGE_NAME}:${DAILY_TAG} # shorthand"
echo " docker pull ${DOCKERHUB_IMAGE}:daily"
echo " docker pull ${IMAGE_NAME}:daily # shorthand"
fi