From 671b9f57d104be59d46844aba2235a22bec436ef Mon Sep 17 00:00:00 2001 From: Charles N Wyble Date: Thu, 19 Feb 2026 13:13:37 -0500 Subject: [PATCH] feat: add run.sh for Docker registry management Adds utility script for pushing container images to Gitea Docker registry at git.knownelement.com/knel/knel-aimiddleware. Commands: list, tag, tag-all, push, push-all. Includes shellcheck compliance fixes. Assisted-by: GLM-5 via Crush --- run.sh | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100755 run.sh diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..0876d34 --- /dev/null +++ b/run.sh @@ -0,0 +1,172 @@ +#!/bin/bash + +# KNEL-AIMiddleware Docker Registry Management Script +# Push container images to Gitea Docker registry at git.knownelement.com + +set -e + +REGISTRY="git.knownelement.com" +REGISTRY_ORG="knel" +REGISTRY_REPO="knel-aimiddleware" +PREFIX="kneldevstack-aimiddleware-" + +usage() { + echo "KNEL-AIMiddleware Docker Registry Management" + echo "" + echo "Usage: $0 [options]" + echo "" + echo "Commands:" + echo " list List all built images ready to push" + echo " tag Tag a specific service image for registry" + echo " tag-all Tag all built images for registry" + echo " push Push a specific service image to registry" + echo " push-all Push all built images to registry" + echo " help Show this help message" + echo "" + echo "Examples:" + echo " $0 list" + echo " $0 tag docker-mcp" + echo " $0 push docker-mcp" + echo " $0 push-all" + echo "" + echo "Registry: ${REGISTRY}/${REGISTRY_ORG}/${REGISTRY_REPO}" + exit 1 +} + +get_built_images() { + docker images --format '{{.Repository}}' | grep "^${PREFIX}" | sort -u || true +} + +get_registry_tag() { + local service="$1" + echo "${REGISTRY}/${REGISTRY_ORG}/${REGISTRY_REPO}/${service}:latest" +} + +cmd_list() { + echo "Built images ready to push:" + echo "" + for image in $(get_built_images); do + service="${image#"${PREFIX}"}" + registry_tag=$(get_registry_tag "$service") + echo " $image" + echo " -> $registry_tag" + done + echo "" +} + +cmd_tag() { + local service="$1" + if [ -z "$service" ]; then + echo "Error: Service name required" + usage + fi + + local local_image="${PREFIX}${service}" + local registry_tag + registry_tag=$(get_registry_tag "$service") + + if ! docker image inspect "$local_image" &>/dev/null; then + echo "Error: Image $local_image not found. Build it first with: docker compose build $service" + exit 1 + fi + + echo "Tagging: $local_image -> $registry_tag" + docker tag "$local_image" "$registry_tag" + echo "Done." +} + +cmd_tag_all() { + echo "Tagging all built images..." + echo "" + + for image in $(get_built_images); do + service="${image#"${PREFIX}"}" + registry_tag=$(get_registry_tag "$service") + echo "Tagging: $image -> $registry_tag" + docker tag "$image" "$registry_tag" + done + + echo "" + echo "All images tagged." +} + +cmd_push() { + local service="$1" + if [ -z "$service" ]; then + echo "Error: Service name required" + usage + fi + + local local_image="${PREFIX}${service}" + local registry_tag + registry_tag=$(get_registry_tag "$service") + + if ! docker image inspect "$local_image" &>/dev/null; then + echo "Error: Image $local_image not found. Build it first with: docker compose build $service" + exit 1 + fi + + echo "Tagging: $local_image -> $registry_tag" + docker tag "$local_image" "$registry_tag" + + echo "Pushing: $registry_tag" + docker push "$registry_tag" + + echo "Done." +} + +cmd_push_all() { + echo "Pushing all built images to ${REGISTRY}/${REGISTRY_ORG}/${REGISTRY_REPO}" + echo "" + + local count=0 + local failed=0 + + for image in $(get_built_images); do + service="${image#"${PREFIX}"}" + registry_tag=$(get_registry_tag "$service") + + count=$((count + 1)) + echo "[${count}] Processing: $service" + echo " Tagging: $image -> $registry_tag" + docker tag "$image" "$registry_tag" + + echo " Pushing: $registry_tag" + if docker push "$registry_tag"; then + echo " Success" + else + echo " Failed" + failed=$((failed + 1)) + fi + + echo "" + done + + echo "================================" + echo "Push complete: $count images processed, $failed failed" +} + +case "${1:-help}" in + list) + cmd_list + ;; + tag) + cmd_tag "$2" + ;; + tag-all) + cmd_tag_all + ;; + push) + cmd_push "$2" + ;; + push-all) + cmd_push_all + ;; + help|--help|-h) + usage + ;; + *) + echo "Unknown command: $1" + usage + ;; +esac