部署优化
This commit is contained in:
91
scripts/rollback.sh
Executable file
91
scripts/rollback.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
# 只回滚 api / player / admin 镜像 tag,不自动恢复数据库。
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=scripts/deploy-lib.sh
|
||||
source "$SCRIPT_DIR/deploy-lib.sh"
|
||||
|
||||
TARGET_TAG=""
|
||||
SKIP_BACKUP=false
|
||||
ALLOW_DEFAULT_SECRETS=false
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
用法: scripts/rollback.sh --to TAG [选项]
|
||||
|
||||
默认流程:
|
||||
1. 检查 .env.docker
|
||||
2. 确认本机存在 thebet365-api/player/admin:TAG
|
||||
3. 备份 PostgreSQL 与 uploads 到 ./backups
|
||||
4. 将 api / player / admin 切回指定 TAG
|
||||
5. 等待健康检查并记录发布状态
|
||||
|
||||
注意:
|
||||
本脚本只回滚镜像,不回滚数据库结构或数据。
|
||||
如果目标版本涉及不可逆迁移,必须先按备份文件手工恢复数据库。
|
||||
|
||||
选项:
|
||||
--to TAG 目标镜像 tag,必填
|
||||
--no-backup 跳过 PostgreSQL 与 uploads 备份
|
||||
--allow-default-secrets 允许 .env.docker 使用示例密钥,仅测试环境使用
|
||||
-h, --help 显示帮助
|
||||
|
||||
示例:
|
||||
./scripts/rollback.sh --to v1.2.2
|
||||
EOF
|
||||
}
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--to)
|
||||
TARGET_TAG="${2:?缺少 --to 参数值}"
|
||||
shift 2
|
||||
;;
|
||||
--no-backup)
|
||||
SKIP_BACKUP=true
|
||||
shift
|
||||
;;
|
||||
--allow-default-secrets)
|
||||
ALLOW_DEFAULT_SECRETS=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
die "未知参数: $1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$TARGET_TAG" ] || die "缺少 --to TAG"
|
||||
set_deploy_image_tag "$TARGET_TAG"
|
||||
|
||||
cd "$ROOT"
|
||||
require_docker
|
||||
ensure_env_file || exit 1
|
||||
validate_prod_env "$ALLOW_DEFAULT_SECRETS"
|
||||
require_images_for_current_tag
|
||||
|
||||
start_infra
|
||||
|
||||
if [ "$SKIP_BACKUP" = false ]; then
|
||||
backup_database "pre-rollback"
|
||||
backup_uploads "pre-rollback"
|
||||
prune_old_backups
|
||||
else
|
||||
warn "已跳过 PostgreSQL 与 uploads 备份"
|
||||
fi
|
||||
|
||||
log "回滚 api / player / admin 到 tag: $(current_image_tag)"
|
||||
compose up -d api player admin
|
||||
wait_for_stack_ready
|
||||
show_prisma_status
|
||||
compose ps
|
||||
persist_image_tag
|
||||
record_release_state "rollback"
|
||||
warn "镜像已回滚;数据库未自动恢复。若此次回滚涉及不可逆迁移,请按备份文件手工恢复数据库。"
|
||||
print_stack_urls
|
||||
Reference in New Issue
Block a user