From 83d6ad51342688f62361f3e4ba6eac91f52679d8 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Thu, 23 Apr 2026 21:43:32 +0300 Subject: [PATCH] ops: remove hardcoded registry and owner from scripts Co-Authored-By: Claude Sonnet 4.6 --- ops/build-image.sh | 45 +++++++++++++++++++++------ ops/push-image.sh | 76 +++++++++++++++++++++++++--------------------- 2 files changed, 77 insertions(+), 44 deletions(-) diff --git a/ops/build-image.sh b/ops/build-image.sh index e4a18e2..3327251 100755 --- a/ops/build-image.sh +++ b/ops/build-image.sh @@ -1,20 +1,47 @@ #!/bin/sh +# Build a Docker image locally. +# +# Usage (interactive — prompts for missing values): +# ./ops/build-image.sh +# +# Usage (non-interactive — all values as positional args): +# ./ops/build-image.sh + set -eu ROOT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd) -if ! command -v docker >/dev/null 2>&1; then - echo "docker not found in PATH" >&2 - exit 1 +command -v docker >/dev/null 2>&1 || { echo "error: docker not found in PATH" >&2; exit 1; } + +DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) + +ask() { + prompt="$1"; default="$2" + if [ -n "$default" ]; then + printf "%s [%s]: " "$prompt" "$default" + else + printf "%s: " "$prompt" + fi + read -r value + echo "${value:-$default}" +} + +if [ $# -ge 3 ]; then + IMAGE_TAG="$1" + REGISTRY="$2" + OWNER="$3" +elif [ $# -ge 1 ]; then + IMAGE_TAG="$1" + REGISTRY=$(ask "Registry" "") + OWNER=$(ask "Owner" "") +else + IMAGE_TAG=$(ask "Tag" "${DEFAULT_TAG}") + REGISTRY=$(ask "Registry" "") + OWNER=$(ask "Owner" "") fi -GITEA_REGISTRY="${GITEA_REGISTRY:-git.mchus.pro}" -GITEA_OWNER="${GITEA_OWNER:-reanimator}" IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}" -DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) -IMAGE_TAG="${1:-${IMAGE_TAG:-${DEFAULT_TAG}}}" - -FULL_IMAGE="${GITEA_REGISTRY}/${GITEA_OWNER}/${IMAGE_NAME}" +FULL_IMAGE="${REGISTRY}/${OWNER}/${IMAGE_NAME}" echo "building ${FULL_IMAGE}:${IMAGE_TAG}" docker build \ diff --git a/ops/push-image.sh b/ops/push-image.sh index 0d004a3..43827f3 100755 --- a/ops/push-image.sh +++ b/ops/push-image.sh @@ -1,21 +1,13 @@ #!/bin/sh -# Build a multi-arch Docker image and push it to a Gitea container registry. +# Build a multi-arch Docker image and push it to a container registry. # -# Usage: -# ./ops/push-image.sh [TAG] -# -# Environment variables: -# GITEA_REGISTRY – registry host, e.g. git.mchus.pro (default: git.mchus.pro) -# GITEA_OWNER – Gitea user or organisation (default: reanimator) -# IMAGE_NAME – image name (default: jukebox-maker) -# PLATFORMS – comma-separated platform list (default: linux/amd64,linux/arm64) -# PUSH_LATEST – also tag and push :latest (default: true) -# -# Assumes docker is already logged in to GITEA_REGISTRY. -# -# Examples: +# Usage (interactive — prompts for missing values): # ./ops/push-image.sh -# ./ops/push-image.sh v1.0 +# +# Usage (non-interactive — all values as positional args): +# ./ops/push-image.sh +# +# Assumes docker is already logged in to the target registry. set -eu @@ -27,21 +19,43 @@ command -v docker >/dev/null 2>&1 || die "docker not found in PATH" command -v git >/dev/null 2>&1 || die "git not found in PATH" docker buildx version >/dev/null 2>&1 || die "docker buildx not available" -GITEA_REGISTRY="${GITEA_REGISTRY:-git.mchus.pro}" -GITEA_OWNER="${GITEA_OWNER:-reanimator}" +DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) + +ask() { + prompt="$1"; default="$2" + if [ -n "$default" ]; then + printf "%s [%s]: " "$prompt" "$default" + else + printf "%s: " "$prompt" + fi + read -r value + echo "${value:-$default}" +} + +if [ $# -ge 3 ]; then + IMAGE_TAG="$1" + REGISTRY="$2" + OWNER="$3" +elif [ $# -ge 1 ]; then + IMAGE_TAG="$1" + REGISTRY=$(ask "Registry" "") + OWNER=$(ask "Owner" "") +else + IMAGE_TAG=$(ask "Tag" "${DEFAULT_TAG}") + REGISTRY=$(ask "Registry" "") + OWNER=$(ask "Owner" "") +fi + IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}" PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}" -PUSH_LATEST="${PUSH_LATEST:-true}" +FULL_IMAGE="${REGISTRY}/${OWNER}/${IMAGE_NAME}" -DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) -IMAGE_TAG="${1:-${IMAGE_TAG:-${DEFAULT_TAG}}}" - -FULL_IMAGE="${GITEA_REGISTRY}/${GITEA_OWNER}/${IMAGE_NAME}" - -echo "registry : ${GITEA_REGISTRY}" +echo "" +echo "registry : ${REGISTRY}" echo "image : ${FULL_IMAGE}" echo "tag : ${IMAGE_TAG}" echo "platforms: ${PLATFORMS}" +echo "" BUILDER_NAME="jukebox-multiarch" if ! docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then @@ -53,23 +67,15 @@ if ! docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then fi docker buildx use "${BUILDER_NAME}" -TAGS="-t ${FULL_IMAGE}:${IMAGE_TAG}" -if [ "${PUSH_LATEST}" = "true" ]; then - TAGS="${TAGS} -t ${FULL_IMAGE}:latest" -fi - -echo "building and pushing..." -# shellcheck disable=SC2086 docker buildx build \ --platform "${PLATFORMS}" \ --file "${ROOT_DIR}/Dockerfile" \ - ${TAGS} \ + -t "${FULL_IMAGE}:${IMAGE_TAG}" \ + -t "${FULL_IMAGE}:latest" \ --push \ "${ROOT_DIR}" echo "" echo "pushed:" echo " ${FULL_IMAGE}:${IMAGE_TAG}" -if [ "${PUSH_LATEST}" = "true" ]; then - echo " ${FULL_IMAGE}:latest" -fi +echo " ${FULL_IMAGE}:latest"