forked from wangbo/easyai
fix(deploy): 随部署仓库下发正式更新清单
This commit is contained in:
@@ -17,6 +17,7 @@ cp \
|
||||
"$REPO_ROOT/easyai-proxy.conf.sample" \
|
||||
"$TMP_DIR/"
|
||||
mkdir -p "$TMP_DIR/scripts"
|
||||
mkdir -p "$TMP_DIR/system-update"
|
||||
cp \
|
||||
"$REPO_ROOT/scripts/init-security-env.sh" \
|
||||
"$REPO_ROOT/scripts/init-security-origin.sh" \
|
||||
@@ -24,6 +25,7 @@ cp \
|
||||
"$REPO_ROOT/scripts/init-server-http-bind-ip.sh" \
|
||||
"$REPO_ROOT/scripts/check-redis-persistence.sh" \
|
||||
"$TMP_DIR/scripts/"
|
||||
cp "$REPO_ROOT/system-update/release-manifest.json" "$TMP_DIR/system-update/"
|
||||
|
||||
cd "$TMP_DIR"
|
||||
|
||||
@@ -166,6 +168,7 @@ mounts = {(item.get("source"), item.get("target")) for item in updater.get("volu
|
||||
assert ("/var/run/docker.sock", "/var/run/docker.sock") in mounts, mounts
|
||||
assert any(target == "/var/lib/easyai-updater" for _, target in mounts), mounts
|
||||
assert any(target == "/run/secrets/docker-config.json" for _, target in mounts), mounts
|
||||
assert any(target == "/etc/easyai-updater/release-manifest.json" for _, target in mounts), mounts
|
||||
|
||||
server_env = server.get("environment") or {}
|
||||
updater_env = updater.get("environment") or {}
|
||||
@@ -176,6 +179,7 @@ assert server_env.get("SYSTEM_UPDATE_MODE") == "managed", server_env.get("SYSTEM
|
||||
assert str(server_env.get("EASYAI_DEPLOYMENT_SCHEMA_VERSION")) == "2"
|
||||
assert str(updater_env.get("UPDATE_HEALTH_TIMEOUT_MS")) == "300000"
|
||||
assert updater_env.get("DOCKER_CONFIG_FILE") == "/run/secrets/docker-config.json"
|
||||
assert updater_env.get("UPDATE_MANIFEST_FILE") == "/etc/easyai-updater/release-manifest.json"
|
||||
assert updater.get("labels", {}).get("com.centurylinklabs.watchtower.enable") == "true"
|
||||
assert watchtower.get("environment", {}).get("WATCHTOWER_POLL_INTERVAL") == "86400"
|
||||
assert watchtower.get("environment", {}).get("WATCHTOWER_CLEANUP") == "true"
|
||||
@@ -185,6 +189,33 @@ for service in ("easyai-server", "ws-gateway", "easyai-web"):
|
||||
labels = services[service].get("labels") or {}
|
||||
assert labels.get("com.centurylinklabs.watchtower.enable") == "false", (service, labels)
|
||||
'
|
||||
|
||||
python3 - <<'PY'
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
manifest = json.loads(Path("system-update/release-manifest.json").read_text())
|
||||
assert manifest["schemaVersion"] == 1
|
||||
assert manifest["channel"] == "stable"
|
||||
assert manifest["platform"] == "linux/amd64"
|
||||
assert manifest["managedUpdateAllowed"] is True
|
||||
assert manifest["rollbackSafe"] is True
|
||||
assert manifest["minimumUpdaterVersion"] == "1.0.0"
|
||||
assert manifest["minimumDeploymentSchemaVersion"] == 2
|
||||
assert int(manifest["requiredFreeBytes"]) > 0
|
||||
components = {item["key"]: item for item in manifest["components"]}
|
||||
assert set(components) == {"server-main", "ws-gateway", "web"}
|
||||
expected_images = {
|
||||
"server-main": "registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server",
|
||||
"ws-gateway": "registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway",
|
||||
"web": "registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai",
|
||||
}
|
||||
for key, image in expected_images.items():
|
||||
assert components[key]["image"] == image
|
||||
assert re.fullmatch(r"sha256:[a-f0-9]{64}", components[key]["digest"])
|
||||
assert int(components[key]["imageSizeBytes"]) > 0
|
||||
PY
|
||||
}
|
||||
|
||||
assert_legacy_update_contract() {
|
||||
|
||||
Reference in New Issue
Block a user