fix: add fallback for empty image_tag in deployment
- Add validation and fallback logic for IMAGE_TAG - If build job output is empty, generate tag from commit SHA - Use 'latest' tag as last resort fallback - Add debug output to show what tag is being used - Fixes 'invalid reference format' error when IMAGE_TAG is empty
This commit is contained in:
@@ -644,15 +644,47 @@ jobs:
|
|||||||
DEPLOYMENT_HOST="${{ env.DEPLOYMENT_HOST }}"
|
DEPLOYMENT_HOST="${{ env.DEPLOYMENT_HOST }}"
|
||||||
REGISTRY="${{ env.REGISTRY }}"
|
REGISTRY="${{ env.REGISTRY }}"
|
||||||
IMAGE_NAME="${{ env.IMAGE_NAME }}"
|
IMAGE_NAME="${{ env.IMAGE_NAME }}"
|
||||||
|
|
||||||
|
# Get image tag from build job output with fallback
|
||||||
IMAGE_TAG="${{ needs.build.outputs.image_tag }}"
|
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}"
|
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
|
||||||
STACK_PATH="~/deployment/stacks/application"
|
STACK_PATH="~/deployment/stacks/application"
|
||||||
|
|
||||||
echo "🚀 Starting deployment..."
|
echo "🚀 Starting deployment..."
|
||||||
echo " Image: ${FULL_IMAGE}"
|
echo " Image: ${FULL_IMAGE}"
|
||||||
|
echo " Tag: ${IMAGE_TAG}"
|
||||||
echo " Host: ${DEPLOYMENT_HOST}"
|
echo " Host: ${DEPLOYMENT_HOST}"
|
||||||
echo " Stack: ${STACK_PATH}"
|
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 with proper key and execute deployment commands
|
||||||
ssh -i ~/.ssh/production \
|
ssh -i ~/.ssh/production \
|
||||||
-o StrictHostKeyChecking=no \
|
-o StrictHostKeyChecking=no \
|
||||||
|
|||||||
Reference in New Issue
Block a user