mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-14 02:19:58 +08:00
- 新增 diff-driver-agent-revisions 脚本,直接比对 base/head 在各平台实际生成出的 driver revision 差异 - dev/release workflow 的驱动检测改为源码归因结果叠加各平台 revision diff union,避免只改 DuckDB 时漏重建真实已变更的 driver assets - 将 CI Go 版本固定到 1.24.3,减少 runner patch 漂移导致的 revision 指纹抖动 - 补充 DuckDB 变更命中与前端变更不误触发的 revision diff 回归测试
67 lines
2.2 KiB
Bash
67 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
same_commit_result="$(bash ./tools/diff-driver-agent-revisions.sh --base HEAD --head HEAD --platform darwin/arm64)"
|
|
if [[ -n "$same_commit_result" ]]; then
|
|
echo "expected same commit revision diff to be empty, got: ${same_commit_result}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
tmpdir="$(mktemp -d "${TMPDIR:-/tmp}/gonavi-diff-driver-revisions.XXXXXX")"
|
|
cleanup() {
|
|
rm -rf "$tmpdir"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
rsync -a --exclude .git ./ "$tmpdir/" >/dev/null
|
|
|
|
(
|
|
cd "$tmpdir"
|
|
git init -q
|
|
git add .
|
|
git -c user.name=GoNavi -c user.email=gonavi@example.test commit -q -m initial
|
|
base="$(git rev-parse HEAD)"
|
|
|
|
perl -0pi -e 's/type DuckDB struct \{/\/\/ test revision change\n&type DuckDB struct {/' internal/db/duckdb_impl.go
|
|
git add internal/db/duckdb_impl.go
|
|
git -c user.name=GoNavi -c user.email=gonavi@example.test commit -q -m 'touch duckdb impl'
|
|
|
|
actual="$(bash ./tools/diff-driver-agent-revisions.sh --base "$base" --head HEAD --platform darwin/arm64)"
|
|
if [[ "$actual" != *"duckdb"* ]]; then
|
|
echo "expected duckdb-specific source change to include duckdb revision rebuild, got: ${actual:-<empty>}" >&2
|
|
exit 1
|
|
fi
|
|
)
|
|
|
|
tmpdir_frontend="$(mktemp -d "${TMPDIR:-/tmp}/gonavi-diff-driver-revisions-frontend.XXXXXX")"
|
|
cleanup_frontend() {
|
|
rm -rf "$tmpdir_frontend"
|
|
}
|
|
trap cleanup_frontend EXIT
|
|
|
|
rsync -a --exclude .git ./ "$tmpdir_frontend/" >/dev/null
|
|
|
|
(
|
|
cd "$tmpdir_frontend"
|
|
git init -q
|
|
git add .
|
|
git -c user.name=GoNavi -c user.email=gonavi@example.test commit -q -m initial
|
|
base="$(git rev-parse HEAD)"
|
|
|
|
perl -0pi -e 's/isAddingPrimaryKey:/isAddingPrimaryKeyFlag:/' frontend/src/components/tableDesignerDuckDbPrimaryKey.ts
|
|
git add frontend/src/components/tableDesignerDuckDbPrimaryKey.ts
|
|
git -c user.name=GoNavi -c user.email=gonavi@example.test commit -q -m 'touch frontend only'
|
|
|
|
actual="$(bash ./tools/diff-driver-agent-revisions.sh --base "$base" --head HEAD --platform darwin/arm64)"
|
|
if [[ -n "$actual" ]]; then
|
|
echo "expected frontend-only change to keep driver revision diff empty, got: ${actual}" >&2
|
|
exit 1
|
|
fi
|
|
)
|
|
|
|
echo "diff-driver-agent-revisions test passed"
|