mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-25 07:53:44 +08:00
- driver_agents job 一次性产出各平台 driver 集合,build 矩阵直接消费结果\n- detect 阶段补充 setup-go 与缓存,降低 revision 检测的冷启动成本\n- diff-driver-agent-revisions 支持候选 drivers 过滤,并行生成 base/head revisions\n- 补充脚本测试,覆盖候选 driver 过滤与无关 driver 忽略场景
79 lines
2.8 KiB
Bash
79 lines
2.8 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
|
|
|
|
filtered_actual="$(bash ./tools/diff-driver-agent-revisions.sh --base "$base" --head HEAD --platform darwin/arm64 --drivers duckdb)"
|
|
if [[ "$filtered_actual" != "duckdb" ]]; then
|
|
echo "expected --drivers duckdb to keep duckdb revision rebuild only, got: ${filtered_actual:-<empty>}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
ignored_actual="$(bash ./tools/diff-driver-agent-revisions.sh --base "$base" --head HEAD --platform darwin/arm64 --drivers mariadb)"
|
|
if [[ -n "$ignored_actual" ]]; then
|
|
echo "expected --drivers mariadb to ignore unrelated duckdb revision diff, got: ${ignored_actual}" >&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"
|