Files
wangjia 3efd67297e ci(server): 编译/测试直接在 runner 跑,去嵌套 docker(修 DinD;go 工具链自动下载)
compile-backend/test.sh 原在 golang:1.25 容器里跑,job 容器内 $PWD 在宿主不存在
→ DinD 挂载失败。改直接跑;go.mod 要求 1.25.10,靠 Go 工具链经 goproxy.cn 自动拉取。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:40:09 +08:00

45 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# test.sh <server|client> — run the test suite for one side of the repo.
# Invoked directly on the nas runner (see deploy-server.yml's "Test" step),
# so this script itself owns the docker invocation — Go/Flutter are not on
# the host.
#
# server: `go test ./...` inside golang:1.25, mirroring the go-server job's
# docker invocation in .gitea/workflows/ci.yml (mounts + gomod/gobuild
# caches), plus GOPROXY from _env.sh so it doesn't hit proxy.golang.org.
# client: `flutter test` inside ghcr.io/cirruslabs/flutter:stable, mirroring
# the flutter-client job's docker invocation in .gitea/workflows/ci.yml
# (pub-cache volume, same test dirs); analyze/coverage stay in that job.
#
# Run from the repo root (relative paths below assume this).
set -euo pipefail
# shellcheck source=scripts/ci/_env.sh
. scripts/ci/_env.sh
TARGET="${1:-}"
case "$TARGET" in
server)
# 直接在 runner 跑(不嵌套 docker,避免 DinD 挂载失败)。go.mod 要求的
# go 1.25.x 若高于 runner 自带版本,Go 工具链会经 GOPROXY(_env.sh)自动下载。
echo "==> test: go test ./..."
( cd server && go test ./... )
;;
client)
mkdir -p "$HOME/.cache/pangolin-ci/pubcache"
echo "==> test: flutter test (ghcr.io/cirruslabs/flutter:stable 容器)"
docker run --rm \
-v "$PWD/client:/app" -w /app \
-v "$HOME/.cache/pangolin-ci/pubcache:/root/.pub-cache" \
ghcr.io/cirruslabs/flutter:stable \
bash -c "flutter pub get && flutter test test/unit test/widget test/contract"
;;
*)
echo "usage: scripts/ci/test.sh <server|client>" >&2
exit 1
;;
esac
echo "==> test: ${TARGET} 通过"