fix(woodpecker): use exit code 78 to skip builds instead of evaluate

This commit is contained in:
Ashwin Kumar 2026-04-10 05:27:39 +02:00
parent a3622de8e9
commit 2370f62eac

View file

@ -10,29 +10,26 @@ steps:
- | - |
#!/bin/bash #!/bin/bash
set -e set -e
# Get changed files from last commit # Get changed files from last commit
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD || echo "") CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD || echo "")
# Check if relevant files changed (src, package.json, Dockerfile, etc.) # Check if relevant files changed (src, package.json, Dockerfile, etc.)
RELEVANT_CHANGED=false RELEVANT_CHANGED=false
if echo "$CHANGED_FILES" | grep -qE "^(src/|package\.json|package-lock\.json|Dockerfile|vite\.config|tsconfig|public/)"; then if echo "$CHANGED_FILES" | grep -qE "^(src/|package\.json|package-lock\.json|Dockerfile|vite\.config|tsconfig|public/)"; then
RELEVANT_CHANGED=true RELEVANT_CHANGED=true
echo "✅ Admin panel code changed - will build" echo "✅ Admin panel code changed - will build"
fi fi
# Create marker file # Exit with code 78 to skip subsequent steps if no changes
if [ "$RELEVANT_CHANGED" = "true" ]; then if [ "$RELEVANT_CHANGED" = "true" ]; then
echo "SHOULD_BUILD=true" > .build-marker
echo "🚀 Will build admin panel" echo "🚀 Will build admin panel"
exit 0
else else
echo "SHOULD_BUILD=false" > .build-marker
echo "⏭️ Skipping admin panel - no relevant changes" echo "⏭️ Skipping admin panel - no relevant changes"
exit 78
fi fi
# Export for other steps
cat .build-marker >> ${CI_ENV}
- name: build-and-push - name: build-and-push
image: woodpeckerci/plugin-docker-buildx:5.0.0 image: woodpeckerci/plugin-docker-buildx:5.0.0
settings: settings:
@ -48,8 +45,6 @@ steps:
password: password:
from_secret: GHCR_TOKEN from_secret: GHCR_TOKEN
platforms: linux/amd64 platforms: linux/amd64
when:
- evaluate: 'env.SHOULD_BUILD == "true"'
- name: deploy - name: deploy
image: bitnami/kubectl:latest image: bitnami/kubectl:latest
@ -60,49 +55,37 @@ steps:
- | - |
#!/bin/bash #!/bin/bash
set -e set -e
# Check if we should deploy
if [ "${SHOULD_BUILD}" != "true" ]; then
echo "⏭️ Skipping deployment - no changes"
exit 0
fi
# Setup kubeconfig # Setup kubeconfig
mkdir -p ~/.kube mkdir -p ~/.kube
echo "$KUBE_CONFIG" | base64 -d > ~/.kube/config echo "$KUBE_CONFIG" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config chmod 600 ~/.kube/config
NAMESPACE="nxtgauge" NAMESPACE="nxtgauge"
DEPLOYMENT_NAME="nxtgauge-admin-solid" DEPLOYMENT_NAME="nxtgauge-admin-solid"
echo "🚀 Deploying admin panel..." echo "🚀 Deploying admin panel..."
# Trigger rolling restart to pick up new image # Trigger rolling restart to pick up new image
kubectl rollout restart deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} kubectl rollout restart deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE}
# Wait for rollout to complete # Wait for rollout to complete
echo "⏳ Waiting for rollout to complete..." echo "⏳ Waiting for rollout to complete..."
kubectl rollout status deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} --timeout=300s kubectl rollout status deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} --timeout=300s
echo "✅ Admin panel deployed successfully!" echo "✅ Admin panel deployed successfully!"
# Show deployment status # Show deployment status
kubectl get deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} kubectl get deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE}
when:
- evaluate: 'env.SHOULD_BUILD == "true"'
- name: notify - name: notify
image: alpine:latest image: alpine:latest
commands: commands:
- | - |
if [ "${SHOULD_BUILD}" = "true" ]; then if [ "${CI_PIPELINE_STATUS}" = "success" ]; then
if [ "${CI_PIPELINE_STATUS}" = "success" ]; then echo "✅ Admin panel pipeline completed successfully"
echo "✅ Admin panel pipeline completed successfully"
else
echo "❌ Admin panel pipeline failed"
fi
else else
echo "⏭️ Admin panel was skipped (no changes)" echo "❌ Admin panel pipeline failed"
fi fi
when: when:
- status: [success, failure] status: [success, failure]