Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
80 lines
2.1 KiB
Markdown
80 lines
2.1 KiB
Markdown
# CI/CD with Turborepo
|
|
|
|
General principles for running Turborepo in continuous integration environments.
|
|
|
|
## Core Principles
|
|
|
|
### Always Use `turbo run` in CI
|
|
|
|
**Never use the `turbo <tasks>` shorthand in CI or scripts.** Always use `turbo run`:
|
|
|
|
```bash
|
|
# CORRECT - Always use in CI, package.json, scripts
|
|
turbo run build test lint
|
|
|
|
# WRONG - Shorthand is only for one-off terminal commands
|
|
turbo build test lint
|
|
```
|
|
|
|
The shorthand `turbo <tasks>` is only for one-off invocations typed directly in terminal by humans or agents. Anywhere the command is written into code (CI, package.json, scripts), use `turbo run`.
|
|
|
|
### Enable Remote Caching
|
|
|
|
Remote caching dramatically speeds up CI by sharing cached artifacts across runs.
|
|
|
|
Required environment variables:
|
|
|
|
```bash
|
|
TURBO_TOKEN=your_vercel_token
|
|
TURBO_TEAM=your_team_slug
|
|
```
|
|
|
|
### Use --affected for PR Builds
|
|
|
|
The `--affected` flag only runs tasks for packages changed since the base branch:
|
|
|
|
```bash
|
|
turbo run build test --affected
|
|
```
|
|
|
|
This requires Git history to compute what changed.
|
|
|
|
## Git History Requirements
|
|
|
|
### Fetch Depth
|
|
|
|
`--affected` needs access to the merge base. Shallow clones break this.
|
|
|
|
```yaml
|
|
# GitHub Actions
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2 # Minimum for --affected
|
|
# Use 0 for full history if merge base is far
|
|
```
|
|
|
|
### Why Shallow Clones Break --affected
|
|
|
|
Turborepo compares the current HEAD to the merge base with `main`. If that commit isn't fetched, `--affected` falls back to running everything.
|
|
|
|
For PRs with many commits, consider:
|
|
|
|
```yaml
|
|
fetch-depth: 0 # Full history
|
|
```
|
|
|
|
## Environment Variables Reference
|
|
|
|
| Variable | Purpose |
|
|
| ------------------- | ------------------------------------ |
|
|
| `TURBO_TOKEN` | Vercel access token for remote cache |
|
|
| `TURBO_TEAM` | Your Vercel team slug |
|
|
| `TURBO_REMOTE_ONLY` | Skip local cache, use remote only |
|
|
| `TURBO_LOG_ORDER` | Set to `grouped` for cleaner CI logs |
|
|
|
|
## See Also
|
|
|
|
- [github-actions.md](./github-actions.md) - GitHub Actions setup
|
|
- [vercel.md](./vercel.md) - Vercel deployment
|
|
- [patterns.md](./patterns.md) - CI optimization patterns
|