feat: add sdk isolation release gate
This commit is contained in:
34
scripts/test-sdk-isolation.sh
Executable file
34
scripts/test-sdk-isolation.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
# 检查 SDK module 可脱离服务端仓库独立测试、检查和构建。
|
||||
set -eu
|
||||
|
||||
TASK_GO=${GO:-go}
|
||||
TASK_SDK_DIR=${ORBIT_SDK_DIR:-sdk/go}
|
||||
TASK_DEPS=$(mktemp "${TMPDIR:-/tmp}/orbit-sdk-deps.XXXXXX")
|
||||
cleanup() {
|
||||
unlink "$TASK_DEPS" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT HUP INT TERM
|
||||
|
||||
if [ ! -f "$TASK_SDK_DIR/go.mod" ]; then
|
||||
printf '%s\n' 'SDK go.mod not found.' >&2
|
||||
exit 1
|
||||
fi
|
||||
if grep -Eq 'github\.com/go-sql-driver/mysql|git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)' "$TASK_SDK_DIR/go.mod"; then
|
||||
printf '%s\n' 'SDK go.mod contains a forbidden server or database dependency.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" list -mod=readonly -deps ./... >"$TASK_DEPS")
|
||||
if grep -Eq '^git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)(/|$)|github\.com/go-sql-driver/mysql$' "$TASK_DEPS"; then
|
||||
printf '%s\n' 'SDK dependency graph contains a forbidden server or database package.' >&2
|
||||
grep -E 'git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)|github\.com/go-sql-driver/mysql' "$TASK_DEPS" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" test -race ./...)
|
||||
(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" vet ./...)
|
||||
(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" build ./...)
|
||||
|
||||
TASK_PACKAGE_COUNT=$(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" list ./... | wc -l | tr -d ' ')
|
||||
printf '{"sdk_module":"git.yuntuo.hk/k2safe/orbit/sdk/go","independent":true,"package_count":%s,"forbidden_dependencies":0}\n' "$TASK_PACKAGE_COUNT"
|
||||
Reference in New Issue
Block a user