ops: remove hardcoded registry and owner from scripts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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 \
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user