fix: let turbo handle dep builds, install tsgo before typecheck #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 "=========================================" |