#!/usr/bin/env bash set -euo pipefail DOCKER_REGISTRY="gitea.oskamp.info" DOCKER_NAMESPACE="ivooskamp" VERSION_FILE="version.txt" START_VERSION="v0.1.0" CONTAINERS_DIR="containers" BUMP="${1:-t}" if [[ "$BUMP" != "1" && "$BUMP" != "2" && "$BUMP" != "3" && "$BUMP" != "t" ]]; then echo "[ERROR] Unknown bump type '$BUMP' (use 1, 2, 3, or t)." exit 1 fi read_version() { if [[ -f "$VERSION_FILE" ]]; then tr -d ' \t\n\r' < "$VERSION_FILE" else echo "$START_VERSION" fi } bump_version() { local cur="$1" local kind="$2" local core="${cur#v}" IFS='.' read -r MA MI PA <<< "$core" case "$kind" in 1) PA=$((PA + 1));; 2) MI=$((MI + 1)); PA=0;; 3) MA=$((MA + 1)); MI=0; PA=0;; esac echo "v${MA}.${MI}.${PA}" } if ! docker info >/dev/null 2>&1; then echo "[ERROR] Docker daemon not reachable." exit 1 fi if [[ ! -d "$CONTAINERS_DIR" ]]; then echo "[ERROR] '$CONTAINERS_DIR' directory missing." exit 1 fi CURRENT_VERSION="$(read_version)" NEW_VERSION="$CURRENT_VERSION" RELEASE=false if [[ "$BUMP" != "t" ]]; then NEW_VERSION="$(bump_version "$CURRENT_VERSION" "$BUMP")" RELEASE=true echo "$NEW_VERSION" > "$VERSION_FILE" git add "$VERSION_FILE" git commit -m "Release $NEW_VERSION" git tag -a "$NEW_VERSION" -m "Release $NEW_VERSION" git push --follow-tags fi for svc_path in "$CONTAINERS_DIR"/*; do [[ -d "$svc_path" ]] || continue svc="$(basename "$svc_path")" dockerfile="$svc_path/Dockerfile" if [[ ! -f "$dockerfile" ]]; then echo "[WARNING] Skipping $svc: Dockerfile missing" continue fi IMAGE_BASE="${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/${svc}" if $RELEASE; then docker build -t "${IMAGE_BASE}:${NEW_VERSION}" -t "${IMAGE_BASE}:dev" "$svc_path" docker push "${IMAGE_BASE}:${NEW_VERSION}" docker push "${IMAGE_BASE}:dev" else docker build -t "${IMAGE_BASE}:dev" "$svc_path" docker push "${IMAGE_BASE}:dev" fi done echo "[DONE] Build/push complete"