Files
orbit/scripts/test-sdk-isolation.sh

35 lines
1.5 KiB
Bash
Executable File

#!/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"