Skip to content

fix: let turbo handle dep builds, install tsgo before typecheck #2

fix: let turbo handle dep builds, install tsgo before typecheck

fix: let turbo handle dep builds, install tsgo before typecheck #2

Workflow file for this run

name: "⚡ tsgo typecheck experiment"
on:
push:
branches: [test/tsgo-typecheck]
permissions:
contents: read
jobs:
typecheck-tsgo:
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
- name: ⎔ Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.23.0
- name: ⎔ Setup node
uses: buildjet/setup-node@v4
with:
node-version: 20.20.0
cache: "pnpm"
- name: 📥 Download deps
run: pnpm install --frozen-lockfile
- name: 📀 Generate Prisma Client
run: pnpm run generate
- name: 📦 Install tsgo
run: pnpm add -Dw @typescript/native-preview
- name: 🔎 Typecheck with tsc (via turbo — builds deps then typechecks)
run: |
echo "::group::tsc version"
npx tsc --version
echo "::endgroup::"
SECONDS=0
pnpm run typecheck
echo ""
echo "========================================="
echo "tsc total (including dep builds): ${SECONDS}s"
echo "========================================="
env:
NODE_OPTIONS: --max-old-space-size=8192
- name: ⚡ Typecheck with tsgo
run: |
set +e
echo "::group::tsgo version"
npx tsgo --version
echo "::endgroup::"
TSGO="npx tsgo"
TOTAL_START=$SECONDS
PASS=0
FAIL=0
ERRORS=""
run_tsgo() {
local label="$1"
local dir="$2"
local tsconfig="${3:-tsconfig.json}"
echo "::group::$label"
local start=$SECONDS
$TSGO --noEmit -p "$dir/$tsconfig" 2>&1
local rc=$?
local elapsed=$(( SECONDS - start ))
if [ $rc -eq 0 ]; then
echo "✅ $label (${elapsed}s)"
PASS=$((PASS + 1))
else
echo "❌ $label (${elapsed}s) — exit code $rc"
FAIL=$((FAIL + 1))
ERRORS="$ERRORS\n ❌ $label"
fi
echo "::endgroup::"
}
echo ""
echo "=== Internal packages ==="
run_tsgo "database" "internal-packages/database"
run_tsgo "emails" "internal-packages/emails"
run_tsgo "otlp-importer" "internal-packages/otlp-importer"
run_tsgo "redis" "internal-packages/redis"
run_tsgo "cache" "internal-packages/cache"
run_tsgo "tracing" "internal-packages/tracing"
run_tsgo "tsql" "internal-packages/tsql"
run_tsgo "zod-worker" "internal-packages/zod-worker"
run_tsgo "testcontainers" "internal-packages/testcontainers"
run_tsgo "sdk-compat-tests" "internal-packages/sdk-compat-tests"
run_tsgo "replication" "internal-packages/replication" "tsconfig.build.json"
run_tsgo "clickhouse" "internal-packages/clickhouse" "tsconfig.build.json"
run_tsgo "schedule-engine" "internal-packages/schedule-engine" "tsconfig.build.json"
run_tsgo "run-engine" "internal-packages/run-engine" "tsconfig.build.json"
echo ""
echo "=== Public packages ==="
run_tsgo "core" "packages/core" "tsconfig.src.json"
run_tsgo "trigger-sdk" "packages/trigger-sdk"
run_tsgo "cli-v3" "packages/cli-v3" "tsconfig.src.json"
run_tsgo "build" "packages/build" "tsconfig.src.json"
run_tsgo "react-hooks" "packages/react-hooks"
run_tsgo "redis-worker" "packages/redis-worker" "tsconfig.src.json"
run_tsgo "rsc" "packages/rsc"
run_tsgo "schema-to-json" "packages/schema-to-json" "tsconfig.src.json"
run_tsgo "python" "packages/python" "tsconfig.src.json"
echo ""
echo "=== Apps ==="
run_tsgo "supervisor" "apps/supervisor"
run_tsgo "coordinator" "apps/coordinator"
run_tsgo "docker-provider" "apps/docker-provider"
run_tsgo "kubernetes-provider" "apps/kubernetes-provider"
run_tsgo "webapp" "apps/webapp" "tsconfig.check.json"
TOTAL_ELAPSED=$(( SECONDS - TOTAL_START ))
echo ""
echo "========================================="
echo "tsgo total: ${TOTAL_ELAPSED}s"
echo "Pass: $PASS | Fail: $FAIL"
if [ $FAIL -gt 0 ]; then
echo -e "Failed packages:$ERRORS"
fi
echo "========================================="