35 lines
1.5 KiB
Bash
Executable File
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"
|