def6ee2363
CI/CD Pipeline / Validate Code Quality And Tests (push) Successful in 46s
CI/CD Pipeline / Unit Tests (push) Successful in 1m40s
CI/CD Pipeline / Frontend Lint (push) Successful in 2m52s
CI/CD Pipeline / Build Production Runtime Images (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Integration Tests (push) Successful in 1m42s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (push) Successful in 16m34s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 2m52s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m55s
合并PR #316:新增release.sh / gray_deploy.sh / rollback_gray.sh三个脚本,适配生产环境架构(nginx upstream权重 + canary容器)
43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# 灰度回滚脚本:切回稳定版本流量
|
|
# 用法: ./scripts/rollback.sh [稳定版本号]
|
|
|
|
set -euo pipefail
|
|
|
|
STABLE_VERSION="${1:-current}"
|
|
|
|
echo "=========================================="
|
|
echo " 灰度回滚"
|
|
echo " 切回稳定版本: $STABLE_VERSION"
|
|
echo "=========================================="
|
|
|
|
# 1. 恢复Nginx全量到稳定版本
|
|
echo ""
|
|
echo ">>> 恢复Nginx全量流量到稳定版本..."
|
|
|
|
NGINX_CONF="${NGINX_CONF:-/etc/nginx/conf.d/saas-api.conf}"
|
|
if [[ -f "$NGINX_CONF" ]]; then
|
|
# 找最近的备份
|
|
LATEST_BAK=$(ls -t "${NGINX_CONF}".bak.* 2>/dev/null | head -1)
|
|
if [[ -n "$LATEST_BAK" ]]; then
|
|
cp "$LATEST_BAK" "$NGINX_CONF"
|
|
echo " 从备份恢复: $LATEST_BAK"
|
|
else
|
|
echo " 未找到备份,请手动移除 canary upstream"
|
|
fi
|
|
|
|
nginx -t && nginx -s reload
|
|
echo " ✅ Nginx 已回滚"
|
|
fi
|
|
|
|
# 2. 停止灰度版本容器(保留30分钟以便排查)
|
|
echo ""
|
|
echo ">>> 灰度版本容器将在30分钟后停止(便于排查问题)"
|
|
echo " 立即停止请执行: docker stop saas-api-canary saas-worker-canary"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " ✅ 回滚完成"
|
|
echo " 流量已全部切回稳定版本"
|
|
echo "=========================================="
|