feat(deploy): 增加受控更新与环境配置迁移
This commit is contained in:
Executable
+57
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
cleanup() {
|
||||
find "$TMP_DIR" -type f -delete
|
||||
rmdir "$TMP_DIR"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
LEGACY_ENV_FILE="$TMP_DIR/legacy.env"
|
||||
cat > "$LEGACY_ENV_FILE" <<'EOF'
|
||||
EXISTING_VALUE=keep-me
|
||||
SYSTEM_UPDATE_MODE=legacy_watchtower
|
||||
COMPOSE_PROFILES=customer-profile
|
||||
WATCHTOWER_CLEANUP=
|
||||
EOF
|
||||
|
||||
bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$LEGACY_ENV_FILE" "$PROJECT_ROOT" >/dev/null
|
||||
|
||||
grep -qx 'EXISTING_VALUE=keep-me' "$LEGACY_ENV_FILE"
|
||||
grep -qx 'SYSTEM_UPDATE_MODE=legacy_watchtower' "$LEGACY_ENV_FILE"
|
||||
grep -qx 'COMPOSE_PROFILES=customer-profile' "$LEGACY_ENV_FILE"
|
||||
grep -qx 'WATCHTOWER_CLEANUP=' "$LEGACY_ENV_FILE"
|
||||
[ "$(wc -l < "$LEGACY_ENV_FILE" | tr -d ' ')" = "4" ]
|
||||
|
||||
ENV_FILE="$TMP_DIR/.env"
|
||||
cat > "$ENV_FILE" <<'EOF'
|
||||
EXISTING_VALUE=keep-me
|
||||
COMPOSE_PROFILES=customer-profile
|
||||
WATCHTOWER_CLEANUP=
|
||||
EOF
|
||||
|
||||
bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$ENV_FILE" "$PROJECT_ROOT" >/dev/null
|
||||
|
||||
read_value() {
|
||||
awk -v key="$1" 'index($0, key "=") == 1 { print substr($0, length(key) + 2); exit }' "$ENV_FILE"
|
||||
}
|
||||
|
||||
[ "$(read_value EXISTING_VALUE)" = "keep-me" ]
|
||||
[ "$(read_value SYSTEM_UPDATE_MODE)" = "managed" ]
|
||||
[ "$(read_value COMPOSE_PROFILES)" = "customer-profile,managed-update" ]
|
||||
[ "$(read_value WATCHTOWER_CLEANUP)" = "true" ]
|
||||
[ "$(read_value WATCHTOWER_CORE_UPDATE_ENABLED)" = "false" ]
|
||||
[ "$(read_value WATCHTOWER_UPDATE_TARGET)" = "easyai-updater" ]
|
||||
[ "$(read_value SYSTEM_UPDATER_UPDATE_INTERVAL_SECONDS)" = "86400" ]
|
||||
[ "$(read_value UPDATE_HEALTH_TIMEOUT_MS)" = "300000" ]
|
||||
[ "$(read_value DOCKER_CONFIG_FILE)" = "/root/.docker/config.json" ]
|
||||
[ "$(read_value EASYAI_DEPLOYMENT_SCHEMA_VERSION)" = "2" ]
|
||||
|
||||
cp "$ENV_FILE" "$TMP_DIR/first-run.env"
|
||||
bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$ENV_FILE" "$PROJECT_ROOT" >/dev/null
|
||||
cmp "$TMP_DIR/first-run.env" "$ENV_FILE"
|
||||
|
||||
echo "Update environment migration tests passed"
|
||||
Reference in New Issue
Block a user