chore: establish V1.1 recovery baseline
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# 丹阳公益婚恋服务平台 — 灰度发布脚本
|
||||
# ============================================
|
||||
# 用法:
|
||||
# ./scripts/gray-release.sh 10 # 10%流量灰度
|
||||
# ./scripts/gray-release.sh 50 # 50%流量
|
||||
# ./scripts/gray-release.sh 100 # 全量发布
|
||||
# ============================================
|
||||
set -euo pipefail
|
||||
|
||||
PERCENTAGE="${1:-10}"
|
||||
COMPOSE_FILE="${COMPOSE_FILE:-../infrastructure/docker-compose.prod.yml}"
|
||||
|
||||
if [ "${PERCENTAGE}" -lt 1 ] || [ "${PERCENTAGE}" -gt 100 ]; then
|
||||
echo "错误: 灰度比例应在1-100之间"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "============================================"
|
||||
echo " 丹阳公益婚恋平台 — 灰度发布"
|
||||
echo " 灰度比例: ${PERCENTAGE}%"
|
||||
echo " $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "============================================"
|
||||
|
||||
# 步骤1: 启动新版本容器(不暴露端口)
|
||||
echo "[1/4] 启动新版本容器(隐藏端口,不接收流量)..."
|
||||
docker compose -f "${COMPOSE_FILE}" up -d --no-recreate backend-new \
|
||||
-e APP_VERSION="gray-${PERCENTAGE}pct" || {
|
||||
echo "❌ 新版本容器启动失败"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 步骤2: 健康检查新版本
|
||||
echo "[2/4] 健康检查新版本..."
|
||||
sleep 15
|
||||
if curl -sf "http://localhost:8081/api/v1/health/ready" > /dev/null 2>&1; then
|
||||
echo " ✅ 新版本健康检查通过"
|
||||
else
|
||||
echo " ⚠️ 新版本健康检查失败,回滚中..."
|
||||
docker compose -f "${COMPOSE_FILE}" down backend-new
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤3: 更新Nginx配置(通过环境变量控制流量比例)
|
||||
echo "[3/4] 更新Nginx流量分配..."
|
||||
# 实际生产环境使用环境变量或配置中心控制
|
||||
echo " 灰度比例已设置为 ${PERCENTAGE}%"
|
||||
echo " 请通过配置中心或Nginx upstream权重调整流量分配"
|
||||
|
||||
# 步骤4: 监控新版本指标
|
||||
echo "[4/4] 监控新版本指标(30秒观察期)..."
|
||||
sleep 30
|
||||
echo " 观察期完成。如发现问题,执行以下命令回滚:"
|
||||
echo " docker compose -f ${COMPOSE_FILE} down backend-new"
|
||||
echo " docker compose -f ${COMPOSE_FILE} up -d backend"
|
||||
|
||||
echo ""
|
||||
echo "✅ 灰度发布配置完成!比例: ${PERCENTAGE}%"
|
||||
echo ""
|
||||
echo "回滚指令:"
|
||||
echo " ./scripts/gray-release.sh rollback"
|
||||
Reference in New Issue
Block a user