fix: stabilize build-dev paths and push behavior

This commit is contained in:
Jeffrey C 2026-01-17 15:00:09 -06:00
parent 19d25f37c6
commit 91d73a1fe8
No known key found for this signature in database
GPG key ID: A68C7782CDAC89E3

View file

@ -1,65 +1,69 @@
#!/bin/bash #!/bin/bash
set -e set -e
# Default values # Default values
VERSION=$(python3 -c "import sys; sys.path.append('..'); import version; print(version.__version__)") SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REGISTRY="dispatcharr" # Registry or private repo to push to ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
IMAGE="dispatcharr" # Image that we're building VERSION=$(python3 -c "import sys; sys.path.append('${ROOT_DIR}'); import version; print(version.__version__)")
BRANCH="dev" REGISTRY="dispatcharr" # Registry or private repo to push to
ARCH="" # Architectures to build for, e.g. linux/amd64,linux/arm64 IMAGE="dispatcharr" # Image that we're building
BRANCH="dev"
ARCH="" # Architectures to build for, e.g. linux/amd64,linux/arm64
PUSH=false PUSH=false
usage() { usage() {
cat <<- EOF cat <<-EOF
To test locally: To test locally:
./build-dev.sh ./build-dev.sh
To build and push to registry: To build and push to registry:
./build-dev.sh -p ./build-dev.sh -p
To build and push to a private registry: To build and push to a private registry:
./build-dev.sh -p -r myregistry:5000 ./build-dev.sh -p -r myregistry:5000
To build for -both- x86_64 and arm_64: To build for -both- x86_64 and arm_64:
./build-dev.sh -p -a linux/amd64,linux/arm64 ./build-dev.sh -p -a linux/amd64,linux/arm64
Do it all: Do it all:
./build-dev.sh -p -r myregistry:5000 -a linux/amd64,linux/arm64 ./build-dev.sh -p -r myregistry:5000 -a linux/amd64,linux/arm64
EOF EOF
exit 0 exit 0
} }
# Parse options # Parse options
while getopts "pr:a:b:i:h" opt; do while getopts "pr:a:b:i:h" opt; do
case $opt in case $opt in
r) REGISTRY="$OPTARG" ;; r) REGISTRY="$OPTARG" ;;
a) ARCH="--platform $OPTARG" ;; a) ARCH="$OPTARG" ;;
b) BRANCH="$OPTARG" ;; b) BRANCH="$OPTARG" ;;
i) IMAGE="$OPTARG" ;; i) IMAGE="$OPTARG" ;;
p) PUSH=true ;; p) PUSH=true ;;
h) usage ;; h) usage ;;
\?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;; \?)
esac echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done done
BUILD_ARGS="BRANCH=$BRANCH" BUILD_ARGS="BRANCH=$BRANCH"
ARCH_ARGS=()
echo docker build --build-arg $BUILD_ARGS $ARCH -t $IMAGE if [ -n "$ARCH" ]; then
docker build -f Dockerfile --build-arg $BUILD_ARGS $ARCH -t $IMAGE .. ARCH_ARGS=(--platform "$ARCH")
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."
fi 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