#!/bin/bash # Real anonymous image preflight for the complete README installation, no daemon mutations. set -euo pipefail unset UPDATE_SERVICES UPDATE_RELEASE_VERSION UPDATE_SERVER_VERSION UPDATE_WEB_VERSION UPDATE_GATEWAY_VERSION UPDATE_WORKER_VERSION UPDATE_UPDATER_VERSION UPDATE_ASG_VERSION UPDATE_AMS_VERSION unset UPDATE_MANIFEST_SOURCE UPDATE_MANIFEST_URL source_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" manifest_source='' while [ "$#" -gt 0 ]; do case "$1" in --version) export DEPLOY_RELEASE_VERSION="${2:?缺少版本}"; shift 2 ;; --manifest) manifest_source="$(cd "$(dirname "${2:?缺少发布记录}")" && pwd)/$(basename "$2")"; shift 2 ;; *) echo '用法:bash scripts/check-deployment-release.sh [--version 完整版本] [--manifest 发布记录]' >&2; exit 1 ;; esac done if [ -n "$manifest_source" ] && ! [[ "${DEPLOY_RELEASE_VERSION:-}" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]{8}(\.[0-9]+)?$ ]]; then echo '--manifest 必须同时指定完整 --version' >&2 exit 1 fi temporary="$(mktemp -d "${TMPDIR:-/tmp}/easyai-release-check.XXXXXX")" trap 'rm -r "$temporary"' EXIT cp "$source_root/docker-compose.yml" "$temporary/" cp -R "$source_root/scripts" "$source_root/system-update" "$temporary/" if [ -n "$manifest_source" ]; then cp "$manifest_source" "$temporary/system-update/releases/${DEPLOY_RELEASE_VERSION}.json"; fi for name in .env .env.tools .env.ASG .env.AMS; do cp "$source_root/$name.sample" "$temporary/$name"; done cd "$temporary" . ./scripts/init-security-env.sh . ./scripts/init-application-version-env.sh write_env_value .env UPDATE_MANIFEST_SOURCE local plan_application_versions .env apply_application_versions .env if docker compose version >/dev/null 2>&1; then compose=(docker compose); else compose=(docker-compose); fi configuration="$("${compose[@]}" config --format json)" printf '%s' "$configuration" | python3 ./scripts/verify-deployment-images.py