Skip to content

Commit 7b49947

Browse files
committed
chore: add tsgo typecheck experiment workflow
1 parent d7bc37f commit 7b49947

1 file changed

Lines changed: 136 additions & 0 deletions

File tree

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
name: "⚡ tsgo typecheck experiment"
2+
3+
on:
4+
push:
5+
branches: [test/tsgo-typecheck]
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
typecheck-tsgo:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: ⬇️ Checkout repo
15+
uses: actions/checkout@v4
16+
17+
- name: ⎔ Setup pnpm
18+
uses: pnpm/action-setup@v4
19+
with:
20+
version: 10.23.0
21+
22+
- name: ⎔ Setup node
23+
uses: buildjet/setup-node@v4
24+
with:
25+
node-version: 20.20.0
26+
cache: "pnpm"
27+
28+
- name: 📥 Download deps
29+
run: pnpm install --frozen-lockfile
30+
31+
- name: 📀 Generate Prisma Client
32+
run: pnpm run generate
33+
34+
- name: 🔨 Build all packages
35+
run: pnpm run build
36+
env:
37+
NODE_OPTIONS: --max-old-space-size=8192
38+
39+
- name: 📦 Install tsgo
40+
run: pnpm add -Dw @typescript/native-preview
41+
42+
- name: 🔎 Typecheck with tsc (baseline)
43+
run: |
44+
echo "::group::tsc versions"
45+
npx tsc --version
46+
echo "::endgroup::"
47+
SECONDS=0
48+
pnpm run typecheck
49+
echo ""
50+
echo "========================================="
51+
echo "tsc total: ${SECONDS}s"
52+
echo "========================================="
53+
env:
54+
NODE_OPTIONS: --max-old-space-size=8192
55+
56+
- name: ⚡ Typecheck with tsgo
57+
run: |
58+
set +e
59+
echo "::group::tsgo version"
60+
npx tsgo --version
61+
echo "::endgroup::"
62+
63+
TSGO="npx tsgo"
64+
TOTAL_START=$SECONDS
65+
PASS=0
66+
FAIL=0
67+
ERRORS=""
68+
69+
run_tsgo() {
70+
local label="$1"
71+
local dir="$2"
72+
local tsconfig="${3:-tsconfig.json}"
73+
74+
echo "::group::$label"
75+
local start=$SECONDS
76+
$TSGO --noEmit -p "$dir/$tsconfig" 2>&1
77+
local rc=$?
78+
local elapsed=$(( SECONDS - start ))
79+
80+
if [ $rc -eq 0 ]; then
81+
echo "✅ $label (${elapsed}s)"
82+
PASS=$((PASS + 1))
83+
else
84+
echo "❌ $label (${elapsed}s) — exit code $rc"
85+
FAIL=$((FAIL + 1))
86+
ERRORS="$ERRORS\n ❌ $label"
87+
fi
88+
echo "::endgroup::"
89+
}
90+
91+
echo ""
92+
echo "=== Internal packages ==="
93+
run_tsgo "database" "internal-packages/database"
94+
run_tsgo "emails" "internal-packages/emails"
95+
run_tsgo "otlp-importer" "internal-packages/otlp-importer"
96+
run_tsgo "redis" "internal-packages/redis"
97+
run_tsgo "cache" "internal-packages/cache"
98+
run_tsgo "tracing" "internal-packages/tracing"
99+
run_tsgo "tsql" "internal-packages/tsql"
100+
run_tsgo "zod-worker" "internal-packages/zod-worker"
101+
run_tsgo "testcontainers" "internal-packages/testcontainers"
102+
run_tsgo "sdk-compat-tests" "internal-packages/sdk-compat-tests"
103+
run_tsgo "replication" "internal-packages/replication" "tsconfig.build.json"
104+
run_tsgo "clickhouse" "internal-packages/clickhouse" "tsconfig.build.json"
105+
run_tsgo "schedule-engine" "internal-packages/schedule-engine" "tsconfig.build.json"
106+
run_tsgo "run-engine" "internal-packages/run-engine" "tsconfig.build.json"
107+
108+
echo ""
109+
echo "=== Public packages ==="
110+
run_tsgo "core" "packages/core" "tsconfig.src.json"
111+
run_tsgo "trigger-sdk" "packages/trigger-sdk"
112+
run_tsgo "cli-v3" "packages/cli-v3" "tsconfig.src.json"
113+
run_tsgo "build" "packages/build" "tsconfig.src.json"
114+
run_tsgo "react-hooks" "packages/react-hooks"
115+
run_tsgo "redis-worker" "packages/redis-worker" "tsconfig.src.json"
116+
run_tsgo "rsc" "packages/rsc"
117+
run_tsgo "schema-to-json" "packages/schema-to-json" "tsconfig.src.json"
118+
run_tsgo "python" "packages/python" "tsconfig.src.json"
119+
120+
echo ""
121+
echo "=== Apps ==="
122+
run_tsgo "supervisor" "apps/supervisor"
123+
run_tsgo "coordinator" "apps/coordinator"
124+
run_tsgo "docker-provider" "apps/docker-provider"
125+
run_tsgo "kubernetes-provider" "apps/kubernetes-provider"
126+
run_tsgo "webapp" "apps/webapp" "tsconfig.check.json"
127+
128+
TOTAL_ELAPSED=$(( SECONDS - TOTAL_START ))
129+
echo ""
130+
echo "========================================="
131+
echo "tsgo total: ${TOTAL_ELAPSED}s"
132+
echo "Pass: $PASS | Fail: $FAIL"
133+
if [ $FAIL -gt 0 ]; then
134+
echo -e "Failed packages:$ERRORS"
135+
fi
136+
echo "========================================="

0 commit comments

Comments
 (0)