diff --git a/.gitea/workflows/production-deploy.yml b/.gitea/workflows/production-deploy.yml index 971ffaa5..59604226 100644 --- a/.gitea/workflows/production-deploy.yml +++ b/.gitea/workflows/production-deploy.yml @@ -644,15 +644,47 @@ jobs: DEPLOYMENT_HOST="${{ env.DEPLOYMENT_HOST }}" REGISTRY="${{ env.REGISTRY }}" IMAGE_NAME="${{ env.IMAGE_NAME }}" + + # Get image tag from build job output with fallback IMAGE_TAG="${{ needs.build.outputs.image_tag }}" + + # Debug: Show what we got from the build job + echo "🔍 Debug: Build job output image_tag: '${IMAGE_TAG}'" + + # If IMAGE_TAG is empty or invalid, use fallback + if [ -z "$IMAGE_TAG" ] || [ "$IMAGE_TAG" = "..." ] || [ "$IMAGE_TAG" = "null" ]; then + echo "⚠️ Image tag from build job is empty or invalid, trying fallback..." + COMMIT_SHA="${{ github.sha }}" + if [ -z "$COMMIT_SHA" ]; then + # Try to get from git repo if checked out + COMMIT_SHA=$(cd /workspace/repo && git rev-parse HEAD 2>/dev/null || echo "") + fi + if [ -z "$COMMIT_SHA" ]; then + # Last resort: use latest tag (always exists after build) + echo " Using 'latest' tag as fallback" + IMAGE_TAG="latest" + else + SHORT_SHA=$(echo "$COMMIT_SHA" | cut -c1-7) + IMAGE_TAG="git-${SHORT_SHA}" + echo " Generated tag from commit SHA: ${IMAGE_TAG}" + fi + fi + FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" STACK_PATH="~/deployment/stacks/application" echo "🚀 Starting deployment..." echo " Image: ${FULL_IMAGE}" + echo " Tag: ${IMAGE_TAG}" echo " Host: ${DEPLOYMENT_HOST}" echo " Stack: ${STACK_PATH}" + # Validate that IMAGE_TAG is not empty + if [ -z "$IMAGE_TAG" ] || [ "$IMAGE_TAG" = "..." ]; then + echo "❌ Error: IMAGE_TAG is empty or invalid: '${IMAGE_TAG}'" + exit 1 + fi + # SSH with proper key and execute deployment commands ssh -i ~/.ssh/production \ -o StrictHostKeyChecking=no \