ci: enable turborepo remote cache for all Node.js pipelines
Some checks failed
ci/woodpecker/push/api Pipeline failed
ci/woodpecker/push/orchestrator Pipeline failed
ci/woodpecker/push/web Pipeline failed

Connect to self-hosted turbo cache at turbo.mosaicstack.dev.
Convert lint/typecheck/test/build steps to use pnpm turbo with
remote cache env vars, removing manual build-shared steps since
turbo handles the dependency graph automatically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-26 19:34:11 -06:00
parent bf299bb672
commit 5ed0a859da
4 changed files with 46 additions and 36 deletions

View File

@@ -24,6 +24,13 @@ variables:
pnpm install --frozen-lockfile pnpm install --frozen-lockfile
- &use_deps | - &use_deps |
corepack enable corepack enable
- &turbo_env
TURBO_API:
from_secret: turbo_api
TURBO_TOKEN:
from_secret: turbo_token
TURBO_TEAM:
from_secret: turbo_team
- &kaniko_setup | - &kaniko_setup |
mkdir -p /kaniko/.docker mkdir -p /kaniko/.docker
echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json
@@ -52,17 +59,6 @@ steps:
depends_on: depends_on:
- install - install
lint:
image: *node_image
environment:
SKIP_ENV_VALIDATION: "true"
commands:
- *use_deps
- pnpm --filter "@mosaic/api" lint
depends_on:
- prisma-generate
- build-shared
prisma-generate: prisma-generate:
image: *node_image image: *node_image
environment: environment:
@@ -73,26 +69,27 @@ steps:
depends_on: depends_on:
- install - install
build-shared: lint:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/shared" build - pnpm turbo lint --filter=@mosaic/api
depends_on: depends_on:
- install - prisma-generate
typecheck: typecheck:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/api" typecheck - pnpm turbo typecheck --filter=@mosaic/api
depends_on: depends_on:
- prisma-generate - prisma-generate
- build-shared
prisma-migrate: prisma-migrate:
image: *node_image image: *node_image
@@ -124,6 +121,7 @@ steps:
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
NODE_ENV: "production" NODE_ENV: "production"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm turbo build --filter=@mosaic/api - pnpm turbo build --filter=@mosaic/api

View File

@@ -24,6 +24,13 @@ variables:
pnpm install --frozen-lockfile pnpm install --frozen-lockfile
- &use_deps | - &use_deps |
corepack enable corepack enable
- &turbo_env
TURBO_API:
from_secret: turbo_api
TURBO_TOKEN:
from_secret: turbo_token
TURBO_TEAM:
from_secret: turbo_team
- &kaniko_setup | - &kaniko_setup |
mkdir -p /kaniko/.docker mkdir -p /kaniko/.docker
echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json
@@ -48,9 +55,10 @@ steps:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/orchestrator" lint - pnpm turbo lint --filter=@mosaic/orchestrator
depends_on: depends_on:
- install - install
@@ -58,9 +66,10 @@ steps:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/orchestrator" typecheck - pnpm turbo typecheck --filter=@mosaic/orchestrator
depends_on: depends_on:
- install - install
@@ -68,9 +77,10 @@ steps:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/orchestrator" test - pnpm turbo test --filter=@mosaic/orchestrator
depends_on: depends_on:
- install - install
@@ -81,6 +91,7 @@ steps:
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
NODE_ENV: "production" NODE_ENV: "production"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm turbo build --filter=@mosaic/orchestrator - pnpm turbo build --filter=@mosaic/orchestrator

View File

@@ -24,6 +24,13 @@ variables:
pnpm install --frozen-lockfile pnpm install --frozen-lockfile
- &use_deps | - &use_deps |
corepack enable corepack enable
- &turbo_env
TURBO_API:
from_secret: turbo_api
TURBO_TOKEN:
from_secret: turbo_token
TURBO_TEAM:
from_secret: turbo_team
- &kaniko_setup | - &kaniko_setup |
mkdir -p /kaniko/.docker mkdir -p /kaniko/.docker
echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$GITEA_USER\",\"password\":\"$GITEA_TOKEN\"}}}" > /kaniko/.docker/config.json
@@ -44,46 +51,38 @@ steps:
depends_on: depends_on:
- install - install
build-shared:
image: *node_image
environment:
SKIP_ENV_VALIDATION: "true"
commands:
- *use_deps
- pnpm --filter "@mosaic/shared" build
- pnpm --filter "@mosaic/ui" build
depends_on:
- install
lint: lint:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/web" lint - pnpm turbo lint --filter=@mosaic/web
depends_on: depends_on:
- build-shared - install
typecheck: typecheck:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/web" typecheck - pnpm turbo typecheck --filter=@mosaic/web
depends_on: depends_on:
- build-shared - install
test: test:
image: *node_image image: *node_image
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm --filter "@mosaic/web" test - pnpm turbo test --filter=@mosaic/web
depends_on: depends_on:
- build-shared - install
# === Build === # === Build ===
@@ -92,6 +91,7 @@ steps:
environment: environment:
SKIP_ENV_VALIDATION: "true" SKIP_ENV_VALIDATION: "true"
NODE_ENV: "production" NODE_ENV: "production"
<<: *turbo_env
commands: commands:
- *use_deps - *use_deps
- pnpm turbo build --filter=@mosaic/web - pnpm turbo build --filter=@mosaic/web

View File

@@ -1,5 +1,6 @@
{ {
"$schema": "https://turbo.build/schema.json", "$schema": "https://turbo.build/schema.json",
"remoteCache": {},
"tasks": { "tasks": {
"prisma:generate": { "prisma:generate": {
"cache": false "cache": false