feat(platform): expose multi-source vehicle evidence

This commit is contained in:
lingniu
2026-07-16 16:35:04 +08:00
parent 196cfa018f
commit 17c4591040
21 changed files with 1129 additions and 11 deletions

View File

@@ -68,7 +68,9 @@ trap rollback ERR
test ! -e "$next" || { printf 'release already exists: %s\n' "$next" >&2; exit 1; }
mkdir -p "$next/web"
cp "$old/platform-api" "$next/platform-api"
cp "$old/lingniu-vehicle-platform.service" "$next/lingniu-vehicle-platform.service"
if test -f "$old/lingniu-vehicle-platform.service"; then
cp "$old/lingniu-vehicle-platform.service" "$next/lingniu-vehicle-platform.service"
fi
cp -a "$old/deploy" "$next/deploy"
cp "$SCRIPT_DIR/prepare-web-release-tree.sh" "$next/deploy/prepare-web-release-tree.sh"
cp "$SCRIPT_DIR/prune-release-history.py" "$next/deploy/prune-release-history.py"

View File

@@ -10,7 +10,6 @@ old="$root/releases/old-release"
mkdir -p "$old/web/assets" "$old/deploy" "$root/env" "$fixture/bin"
printf '#!/usr/bin/env bash\nexit 0\n' > "$old/platform-api"
chmod +x "$old/platform-api"
printf '[Service]\n' > "$old/lingniu-vehicle-platform.service"
cp "$SCRIPT_DIR/verify-web-release.sh" "$old/deploy/verify-web-release.sh"
printf 'old.js\n' > "$old/web/.release-assets"
printf 'old\n' > "$old/web/assets/old.js"
@@ -38,6 +37,7 @@ grep -q '^PLATFORM_RELEASE=new-release$' "$root/env/platform.env"
test -f "$root/current/web/assets/new.js"
test -f "$root/current/web/assets/old.js"
test -f "$root/current/web/.compatibility-manifests/1.assets"
test ! -e "$root/current/lingniu-vehicle-platform.service"
test "$(find "$root/releases" -mindepth 1 -maxdepth 1 -type d | wc -l | tr -d ' ')" = 3
grep -q 'web_release_install=ok release=new-release previous=old-release' "$fixture/install.out"

View File

@@ -29,6 +29,12 @@ def main():
raise SystemExit('protected release is outside the release root: {}'.format(path))
protected.add(path)
metadata_removed = 0
for path in releases.iterdir():
if path.is_file() and path.name.startswith('._'):
path.unlink()
metadata_removed += 1
candidates = [path.resolve() for path in releases.iterdir() if path.is_dir() and not path.is_symlink()]
candidates.sort(key=lambda path: path.stat().st_mtime, reverse=True)
keep = set(protected)
@@ -46,7 +52,9 @@ def main():
shutil.rmtree(str(path))
removed += 1
print('release_prune=ok before={} kept={} removed={}'.format(len(candidates), len(keep), removed))
print('release_prune=ok before={} kept={} removed={} metadata_removed={}'.format(
len(candidates), len(keep), removed, metadata_removed
))
if __name__ == '__main__':

View File

@@ -10,9 +10,11 @@ for index in 1 2 3 4 5 6; do
mkdir "$fixture/releases/r$index"
touch -t "20260716010${index}" "$fixture/releases/r$index"
done
printf 'metadata\n' > "$fixture/releases/._r1"
output=$(python3 "$SCRIPT_DIR/prune-release-history.py" "$fixture" 3 "$fixture/releases/r1")
test "$output" = 'release_prune=ok before=6 kept=3 removed=3'
test "$output" = 'release_prune=ok before=6 kept=3 removed=3 metadata_removed=1'
test ! -e "$fixture/releases/._r1"
test -d "$fixture/releases/r1"
test -d "$fixture/releases/r6"
test -d "$fixture/releases/r5"