From 91d73a1fe8cbc3fd015b71efe6c19b6ec00230e5 Mon Sep 17 00:00:00 2001 From: Jeffrey C <990135+JeffreyBytes@users.noreply.github.com> Date: Sat, 17 Jan 2026 15:00:09 -0600 Subject: [PATCH] fix: stabilize build-dev paths and push behavior --- docker/build-dev.sh | 94 +++++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/docker/build-dev.sh b/docker/build-dev.sh index 61640814..703e06c6 100755 --- a/docker/build-dev.sh +++ b/docker/build-dev.sh @@ -1,65 +1,69 @@ -#!/bin/bash +#!/bin/bash set -e # Default values -VERSION=$(python3 -c "import sys; sys.path.append('..'); import version; print(version.__version__)") -REGISTRY="dispatcharr" # Registry or private repo to push to -IMAGE="dispatcharr" # Image that we're building -BRANCH="dev" -ARCH="" # Architectures to build for, e.g. linux/amd64,linux/arm64 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +VERSION=$(python3 -c "import sys; sys.path.append('${ROOT_DIR}'); import version; print(version.__version__)") +REGISTRY="dispatcharr" # Registry or private repo to push to +IMAGE="dispatcharr" # Image that we're building +BRANCH="dev" +ARCH="" # Architectures to build for, e.g. linux/amd64,linux/arm64 PUSH=false usage() { - cat <<- EOF - To test locally: - ./build-dev.sh + cat <<-EOF + To test locally: + ./build-dev.sh - To build and push to registry: - ./build-dev.sh -p + To build and push to registry: + ./build-dev.sh -p - To build and push to a private registry: - ./build-dev.sh -p -r myregistry:5000 + To build and push to a private registry: + ./build-dev.sh -p -r myregistry:5000 - To build for -both- x86_64 and arm_64: - ./build-dev.sh -p -a linux/amd64,linux/arm64 + To build for -both- x86_64 and arm_64: + ./build-dev.sh -p -a linux/amd64,linux/arm64 - Do it all: - ./build-dev.sh -p -r myregistry:5000 -a linux/amd64,linux/arm64 -EOF -exit 0 + Do it all: + ./build-dev.sh -p -r myregistry:5000 -a linux/amd64,linux/arm64 + EOF + exit 0 } # Parse options while getopts "pr:a:b:i:h" opt; do - case $opt in - r) REGISTRY="$OPTARG" ;; - a) ARCH="--platform $OPTARG" ;; - b) BRANCH="$OPTARG" ;; - i) IMAGE="$OPTARG" ;; - p) PUSH=true ;; - h) usage ;; - \?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;; - esac + case $opt in + r) REGISTRY="$OPTARG" ;; + a) ARCH="$OPTARG" ;; + b) BRANCH="$OPTARG" ;; + i) IMAGE="$OPTARG" ;; + p) PUSH=true ;; + h) usage ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac done BUILD_ARGS="BRANCH=$BRANCH" - -echo docker build --build-arg $BUILD_ARGS $ARCH -t $IMAGE -docker build -f Dockerfile --build-arg $BUILD_ARGS $ARCH -t $IMAGE .. -docker tag $IMAGE $IMAGE:$BRANCH -docker tag $IMAGE $IMAGE:$VERSION - -if [ -z "$PUSH" ]; then - echo "Please run 'docker push -t $IMAGE:dev -t $IMAGE:${VERSION}' when ready" -else - for TAG in latest "$VERSION" "$BRANCH"; do - docker tag "$IMAGE" "$REGISTRY/$IMAGE:$TAG" - docker push -q "$REGISTRY/$IMAGE:$TAG" - done - echo "Images pushed successfully." +ARCH_ARGS=() +if [ -n "$ARCH" ]; then + ARCH_ARGS=(--platform "$ARCH") fi +echo docker build --build-arg "$BUILD_ARGS" "${ARCH_ARGS[@]}" -t "$IMAGE" +docker build -f "${SCRIPT_DIR}/Dockerfile" --build-arg "$BUILD_ARGS" "${ARCH_ARGS[@]}" -t "$IMAGE" "$ROOT_DIR" +docker tag "$IMAGE" "$IMAGE":"$BRANCH" +docker tag "$IMAGE" "$IMAGE":"$VERSION" - - - +if [ "$PUSH" = "true" ]; then + for TAG in latest "$VERSION" "$BRANCH"; do + docker tag "$IMAGE" "$REGISTRY/$IMAGE:$TAG" + docker push -q "$REGISTRY/$IMAGE:$TAG" + done + echo "Images pushed successfully." +else + echo "Please run 'docker push $IMAGE:$BRANCH' and 'docker push $IMAGE:${VERSION}' when ready" +fi