From 1f2ab358f9121a13feb22e8179c31b14aeff8fb3 Mon Sep 17 00:00:00 2001 From: Michael Schiemer Date: Sat, 1 Nov 2025 23:13:24 +0100 Subject: [PATCH] ci: simplify stack path resolution in build-image workflow --- .gitea/workflows/build-image.yml | 50 +++++--------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/.gitea/workflows/build-image.yml b/.gitea/workflows/build-image.yml index e76b0ff7..c5aa6bc6 100644 --- a/.gitea/workflows/build-image.yml +++ b/.gitea/workflows/build-image.yml @@ -865,7 +865,9 @@ jobs: if [ -z "$SELECTED_IMAGE" ]; then SELECTED_IMAGE="$DEFAULT_IMAGE" fi - STACK_PATH="~/deployment/stacks/staging" + + STACK_PATH_DISPLAY="~/deployment/stacks/staging" + STACK_PATH_DISPLAY="~/deployment/stacks/staging" SELECTED_TAG="${SELECTED_IMAGE##*:}" SELECTED_REPO="${SELECTED_IMAGE%:*}" @@ -880,67 +882,31 @@ jobs: echo " Image: ${SELECTED_IMAGE}" echo " Tag: ${SELECTED_TAG}" echo " Host: ${DEPLOYMENT_HOST}" - echo " Stack: ${STACK_PATH}" + echo " Stack: ${STACK_PATH_DISPLAY}" FULL_IMAGE_ARG=$(printf '%q' "$SELECTED_IMAGE") FALLBACK_IMAGE_ARG=$(printf '%q' "$FALLBACK_IMAGE") IMAGE_NAME_ARG=$(printf '%q' "$IMAGE_NAME") - STACK_PATH_ARG=$(printf '%q' "$STACK_PATH") REGISTRY_ARG=$(printf '%q' "$REGISTRY_HOST") ssh -i ~/.ssh/production \ -o StrictHostKeyChecking=no \ -o UserKnownHostsFile=/dev/null \ - deploy@${DEPLOYMENT_HOST} "bash -s -- $FULL_IMAGE_ARG $FALLBACK_IMAGE_ARG $IMAGE_NAME_ARG $STACK_PATH_ARG $REGISTRY_ARG" <<'EOF' + deploy@${DEPLOYMENT_HOST} "bash -s -- $FULL_IMAGE_ARG $FALLBACK_IMAGE_ARG $IMAGE_NAME_ARG $REGISTRY_ARG" <<'EOF' set -e FULL_IMAGE="$1" FALLBACK_IMAGE="$2" IMAGE_NAME="$3" - STACK_PATH="$4" - REGISTRY="$5" - shift 5 - - if [ "${STACK_PATH:0:1}" = "\\" ] && [ "${STACK_PATH:1:1}" = "~" ]; then - STACK_PATH="${STACK_PATH:1}" - fi + REGISTRY="$4" + shift 4 CURRENT_USER="$(whoami)" USER_HOME="$(getent passwd "$CURRENT_USER" | cut -d: -f6 2>/dev/null)" [ -z "$USER_HOME" ] && USER_HOME="$HOME" [ -z "$USER_HOME" ] && USER_HOME="/home/$CURRENT_USER" - RAW_PATH="$STACK_PATH" - [ -z "$RAW_PATH" ] && RAW_PATH="~/deployment/stacks/staging" - - FIRST_CHAR="${RAW_PATH:0:1}" - case "$FIRST_CHAR" in - "~") - if [ "${RAW_PATH:0:2}" = "~/" ] || [ "$RAW_PATH" = "~" ]; then - STACK_TARGET="${USER_HOME}${RAW_PATH:1}" - else - TARGET_SPEC="${RAW_PATH%%/*}" - TARGET_USER="${TARGET_SPEC#~}" - TARGET_REMAINDER="" - if [ "$TARGET_SPEC" != "$RAW_PATH" ]; then - TARGET_REMAINDER="${RAW_PATH#*/}" - fi - TARGET_HOME="$(getent passwd "$TARGET_USER" | cut -d: -f6 2>/dev/null)" - [ -z "$TARGET_HOME" ] && TARGET_HOME="/home/$TARGET_USER" - if [ -n "$TARGET_REMAINDER" ] && [ "$TARGET_REMAINDER" != "$RAW_PATH" ]; then - STACK_TARGET="${TARGET_HOME}/${TARGET_REMAINDER}" - else - STACK_TARGET="$TARGET_HOME" - fi - fi - ;; - "/") - STACK_TARGET="$RAW_PATH" - ;; - *) - STACK_TARGET="${USER_HOME}/${RAW_PATH}" - ;; - esac + STACK_TARGET="${USER_HOME}/deployment/stacks/staging" # Ensure staging stack directory exists mkdir -p "${STACK_TARGET}"