From a31202f63ba626b5b766e87cb76dc837e8f14222 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 6 Feb 2026 22:51:40 +0100 Subject: [PATCH] refactor: use explicit Git reference variables for more robust deployment target and image tag determination in Gitea workflow. --- .gitea/workflows/deploy.yml | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index e813e82..1f68350 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -51,12 +51,25 @@ jobs: id: determine shell: bash run: | - TAG="${{ github.ref_name }}" + REF="${{ github.ref }}" + REF_NAME="${{ github.ref_name }}" + REF_TYPE="${{ github.ref_type }}" SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) DOMAIN_BASE="mb-grid-solutions.com" PRJ_ID="mb-grid-solutions" - if [[ "${{ github.ref_type }}" == "branch" && "$TAG" == "main" ]]; then + echo "Detecting environment for ref: $REF ($REF_NAME, type: $REF_TYPE)" + + # Fallback for REF_TYPE if missing + if [[ -z "$REF_TYPE" ]]; then + if [[ "$REF" == refs/tags/* ]]; then + REF_TYPE="tag" + elif [[ "$REF" == refs/heads/* ]]; then + REF_TYPE="branch" + fi + fi + + if [[ "$REF_TYPE" == "branch" && "$REF_NAME" == "main" ]]; then TARGET="testing" IMAGE_TAG="testing-${SHORT_SHA}" ENV_FILE=".env.testing" @@ -64,18 +77,18 @@ jobs: NEXT_PUBLIC_BASE_URL="https://testing.${DOMAIN_BASE}" DIRECTUS_URL="https://cms.testing.${DOMAIN_BASE}" DIRECTUS_HOST="cms.testing.${DOMAIN_BASE}" - elif [[ "${{ github.ref_type }}" == "tag" ]]; then - if [[ "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + elif [[ "$REF_TYPE" == "tag" ]]; then + if [[ "$REF_NAME" =~ ^v[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then TARGET="production" - IMAGE_TAG="$TAG" + IMAGE_TAG="$REF_NAME" ENV_FILE=".env.prod" TRAEFIK_HOST="${DOMAIN_BASE}, www.${DOMAIN_BASE}" NEXT_PUBLIC_BASE_URL="https://${DOMAIN_BASE}" DIRECTUS_URL="https://cms.${DOMAIN_BASE}" DIRECTUS_HOST="cms.${DOMAIN_BASE}" - elif [[ "$TAG" =~ -rc || "$TAG" =~ -beta || "$TAG" =~ -alpha ]]; then + elif [[ "$REF_NAME" =~ -rc || "$REF_NAME" =~ -beta || "$REF_NAME" =~ -alpha ]]; then TARGET="staging" - IMAGE_TAG="$TAG" + IMAGE_TAG="$REF_NAME" ENV_FILE=".env.staging" TRAEFIK_HOST="staging.${DOMAIN_BASE}" NEXT_PUBLIC_BASE_URL="https://staging.${DOMAIN_BASE}" @@ -83,12 +96,16 @@ jobs: DIRECTUS_HOST="cms.staging.${DOMAIN_BASE}" else TARGET="skip" + echo "Tag $REF_NAME did not match any environment pattern." fi else TARGET="skip" + echo "Ref type $REF_TYPE is not handled for deployment." fi echo "Target determined: $TARGET" + echo "Image tag: $IMAGE_TAG" + echo "target=$TARGET" >> "$GITHUB_OUTPUT" echo "image_tag=$IMAGE_TAG" >> "$GITHUB_OUTPUT" echo "env_file=$ENV_FILE" >> "$GITHUB_OUTPUT"