55 lines
2.0 KiB
Bash
55 lines
2.0 KiB
Bash
#!/bin/bash
|
|||
|
|
# Canary deployment test:
|
||
|
|
# 1. Scale to 1 pod
|
||
|
|
# 2. Wait for pod to be ready
|
||
|
|
# 3. Run integration tests
|
||
|
|
# 4. If pass, scale to 3 pods
|
||
|
|
# 5. If fail, keep at 1 pod for debugging
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
NAMESPACE=${NAMESPACE:-api}
|
||
|
|
DEPLOYMENT=${DEPLOYMENT:-api-gateway}
|
||
|
|
REPLICAS=${REPLICAS:-3}
|
||
|
|
GATEWAY_URL=${GATEWAY_URL:-https://api.riotpiao.com}
|
||
|
|
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
|
echo "CANARY TEST: $DEPLOYMENT"
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
|
|
||
|
|
# Step 1: Scale to 1 pod
|
||
|
|
echo "[1/4] Scaling to 1 canary pod..."
|
||
|
|
kubectl -n "$NAMESPACE" scale deploy "$DEPLOYMENT" --replicas=1
|
||
|
|
kubectl -n "$NAMESPACE" rollout status deploy "$DEPLOYMENT" --timeout=2m
|
||
|
|
|
||
|
|
echo "[2/4] Waiting for pod to be ready..."
|
||
|
|
sleep 5
|
||
|
|
|
||
|
|
# Step 2: Run integration tests
|
||
|
|
echo "[3/4] Running integration tests..."
|
||
|
|
export GATEWAY_URL="$GATEWAY_URL"
|
||
|
|
export SKIP_AUTH_TESTS=true
|
||
|
|
export TEST_TIMEOUT=30
|
||
|
|
|
||
|
|
if ! go test -tags integration -v ./internal/serviceadapter -run TestIntegration; then
|
||
|
|
echo ""
|
||
|
|
echo "❌ Integration tests FAILED"
|
||
|
|
echo "Keeping 1 canary pod for debugging."
|
||
|
|
echo "Pod logs:"
|
||
|
|
kubectl -n "$NAMESPACE" logs -l app="$DEPLOYMENT" --tail=50
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "✅ Integration tests PASSED"
|
||
|
|
|
||
|
|
# Step 3: Scale back to full replicas
|
||
|
|
echo "[4/4] Scaling back to $REPLICAS pods..."
|
||
|
|
kubectl -n "$NAMESPACE" scale deploy "$DEPLOYMENT" --replicas="$REPLICAS"
|
||
|
|
kubectl -n "$NAMESPACE" rollout status deploy "$DEPLOYMENT" --timeout=5m
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
|
echo "✅ Canary test complete. Rollout successful."
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|