Files
AlphaPulse/deploy/migrate.sh
T
eezd adb73f956b
Development CI / check-and-build (push) Successful in 2m4s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m30s
fix: harden news analysis and deploy verified image tags
2026-11-02 15:37:42 +08:00

31 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# Migration remains an explicitly authorized operator action; never call this from CI.
set -eu
umask 077
instance=/docker/gitea/dev/AlphaPulse
exec 9>"$instance/.deploy.lock"
flock -x 9
if [ -e "$instance/deployment.pending.json" ]; then
echo '存在未完成部署,请先处理部署状态' >&2
exit 1
fi
if [ -z "${ALPHAPULSE_BACKEND_IMAGE:-}" ]; then
echo '请通过 ALPHAPULSE_BACKEND_IMAGE 明确指定已验收的候选镜像版本标签;迁移须独立授权' >&2
exit 1
fi
case "$ALPHAPULSE_BACKEND_IMAGE" in
git.134333.xyz/eezd/dev/backend/alphapulse:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]) ;;
*) echo '迁移必须使用开发镜像版本标签' >&2; exit 1 ;;
esac
if [ -n "$(docker ps -q --filter label=com.docker.compose.project=alphapulse-dev)" ]; then
echo '迁移前须在维护窗口内停止应用服务;不要并发运行采集或交易' >&2
exit 1
fi
# Keep migration backups explicit; no periodic backup is introduced.
backup_dir="$(dirname "$0")/../backups"
mkdir -p "$backup_dir"
dump="$backup_dir/alphapulse-premigrate-$(date +%Y%m%d-%H%M%S).dump"
docker exec postgres pg_dump -U alphapulse -Fc alphapulse > "$dump"
echo "已备份:$dump"
docker run --rm --network dev_default --env-file "$instance/.env" "$ALPHAPULSE_BACKEND_IMAGE" alembic upgrade head