ci: enable Turbo remote cache + parallelize pipeline steps

- Connect to turbo.mosaicstack.dev remote cache (ducktors/turborepo-remote-cache)
- Parallelize lint, format, and test after typecheck (were sequential)
- Add turbo_token secret for cache authentication
- TURBO_API + TURBO_TEAM env vars on all Turbo-managed steps

Before: install → typecheck → lint → format → test → build (serial)
After:  install → typecheck → lint ─┐
                             format ├→ build
                             test ──┘

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 20:14:32 -05:00
parent 7d04874f3c
commit f339f9407b

View File

@@ -5,9 +5,9 @@ variables:
when:
- event: [push, pull_request, manual]
# Steps run sequentially to avoid OOM on the CI runner.
# node_modules is installed once by the install step and shared across
# all subsequent steps via Woodpecker's shared workspace volume.
# Turbo remote cache is at turbo.mosaicstack.dev (ducktors/turborepo-remote-cache).
# TURBO_TOKEN is set as a Woodpecker secret. Turbo picks up TURBO_API, TURBO_TOKEN,
# and TURBO_TEAM from the environment automatically.
steps:
install:
@@ -18,14 +18,23 @@ steps:
typecheck:
image: *node_image
environment:
TURBO_API: https://turbo.mosaicstack.dev
TURBO_TEAM: mosaic
secrets: [turbo_token]
commands:
- *enable_pnpm
- pnpm typecheck
depends_on:
- install
# lint, format, and test are independent — run in parallel after typecheck
lint:
image: *node_image
environment:
TURBO_API: https://turbo.mosaicstack.dev
TURBO_TEAM: mosaic
secrets: [turbo_token]
commands:
- *enable_pnpm
- pnpm lint
@@ -38,20 +47,30 @@ steps:
- *enable_pnpm
- pnpm format:check
depends_on:
- lint
- typecheck
test:
image: *node_image
environment:
TURBO_API: https://turbo.mosaicstack.dev
TURBO_TEAM: mosaic
secrets: [turbo_token]
commands:
- *enable_pnpm
- pnpm test
depends_on:
- format
- typecheck
build:
image: *node_image
environment:
TURBO_API: https://turbo.mosaicstack.dev
TURBO_TEAM: mosaic
secrets: [turbo_token]
commands:
- *enable_pnpm
- pnpm build
depends_on:
- lint
- format
- test