ops: remove hardcoded registry and owner from scripts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 21:43:32 +03:00
parent 2355d32766
commit 83d6ad5134
2 changed files with 77 additions and 44 deletions

View File

@@ -1,20 +1,47 @@
#!/bin/sh #!/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 <tag> <registry> <owner>
set -eu set -eu
ROOT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd) ROOT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
if ! command -v docker >/dev/null 2>&1; then command -v docker >/dev/null 2>&1 || { echo "error: docker not found in PATH" >&2; exit 1; }
echo "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 fi
GITEA_REGISTRY="${GITEA_REGISTRY:-git.mchus.pro}"
GITEA_OWNER="${GITEA_OWNER:-reanimator}"
IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}" IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}"
DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) FULL_IMAGE="${REGISTRY}/${OWNER}/${IMAGE_NAME}"
IMAGE_TAG="${1:-${IMAGE_TAG:-${DEFAULT_TAG}}}"
FULL_IMAGE="${GITEA_REGISTRY}/${GITEA_OWNER}/${IMAGE_NAME}"
echo "building ${FULL_IMAGE}:${IMAGE_TAG}" echo "building ${FULL_IMAGE}:${IMAGE_TAG}"
docker build \ docker build \

View File

@@ -1,21 +1,13 @@
#!/bin/sh #!/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: # Usage (interactive — prompts for missing values):
# ./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:
# ./ops/push-image.sh # ./ops/push-image.sh
# ./ops/push-image.sh v1.0 #
# Usage (non-interactive — all values as positional args):
# ./ops/push-image.sh <tag> <registry> <owner>
#
# Assumes docker is already logged in to the target registry.
set -eu 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" 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" docker buildx version >/dev/null 2>&1 || die "docker buildx not available"
GITEA_REGISTRY="${GITEA_REGISTRY:-git.mchus.pro}" DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev)
GITEA_OWNER="${GITEA_OWNER:-reanimator}"
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}" IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}"
PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}" 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) echo ""
IMAGE_TAG="${1:-${IMAGE_TAG:-${DEFAULT_TAG}}}" echo "registry : ${REGISTRY}"
FULL_IMAGE="${GITEA_REGISTRY}/${GITEA_OWNER}/${IMAGE_NAME}"
echo "registry : ${GITEA_REGISTRY}"
echo "image : ${FULL_IMAGE}" echo "image : ${FULL_IMAGE}"
echo "tag : ${IMAGE_TAG}" echo "tag : ${IMAGE_TAG}"
echo "platforms: ${PLATFORMS}" echo "platforms: ${PLATFORMS}"
echo ""
BUILDER_NAME="jukebox-multiarch" BUILDER_NAME="jukebox-multiarch"
if ! docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then 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 fi
docker buildx use "${BUILDER_NAME}" 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 \ docker buildx build \
--platform "${PLATFORMS}" \ --platform "${PLATFORMS}" \
--file "${ROOT_DIR}/Dockerfile" \ --file "${ROOT_DIR}/Dockerfile" \
${TAGS} \ -t "${FULL_IMAGE}:${IMAGE_TAG}" \
-t "${FULL_IMAGE}:latest" \
--push \ --push \
"${ROOT_DIR}" "${ROOT_DIR}"
echo "" echo ""
echo "pushed:" echo "pushed:"
echo " ${FULL_IMAGE}:${IMAGE_TAG}" echo " ${FULL_IMAGE}:${IMAGE_TAG}"
if [ "${PUSH_LATEST}" = "true" ]; then echo " ${FULL_IMAGE}:latest"
echo " ${FULL_IMAGE}:latest"
fi