variables: - &node_image 'node:22-alpine' - &enable_pnpm 'corepack enable' when: - event: [push, pull_request, manual] # Turbo remote cache is at turbo.mosaicstack.dev (ducktors/turborepo-remote-cache). # TURBO_TOKEN is a Woodpecker secret injected via from_secret into the environment. # Turbo picks up TURBO_API, TURBO_TOKEN, and TURBO_TEAM automatically. steps: install: image: *node_image commands: - corepack enable - pnpm install --frozen-lockfile typecheck: image: *node_image environment: TURBO_API: https://turbo.mosaicstack.dev TURBO_TEAM: mosaic TURBO_TOKEN: from_secret: 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 TURBO_TOKEN: from_secret: turbo_token commands: - *enable_pnpm - pnpm lint depends_on: - typecheck format: image: *node_image commands: - *enable_pnpm - pnpm format:check depends_on: - typecheck test: image: *node_image environment: TURBO_API: https://turbo.mosaicstack.dev TURBO_TEAM: mosaic TURBO_TOKEN: from_secret: turbo_token commands: - *enable_pnpm - pnpm test depends_on: - typecheck build: image: *node_image environment: TURBO_API: https://turbo.mosaicstack.dev TURBO_TEAM: mosaic TURBO_TOKEN: from_secret: turbo_token commands: - *enable_pnpm - pnpm build depends_on: - lint - format - test