CI/CD Pipelines

Ship confidently with zero-drama deploys. We use Vercel for hosting, Git for source-of-truth, and a small GitHub Action to guarantee a deploy on every push to main.

Branch model

Keep PRs small. Merge with squash to maintain a clean history.

Production deploys (push to main)

Vercel should auto-build on push to main. To guarantee a deploy even if a webhook flakes, we also call a Deploy Hook via GitHub Actions.

.github/workflows/deploy.yml
name: Deploy on push (Vercel Hook)
on:
  push:
    branches: [ "main" ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Call Vercel Deploy Hook
        run: curl -fsSL -X POST "$VERCEL_DEPLOY_HOOK_URL"
        env:
          VERCEL_DEPLOY_HOOK_URL: ${{ secrets.VERCEL_DEPLOY_HOOK_URL }}

In Vercel → Project Settings → Git → Deploy Hooks, create a hook for main. Save the URL as the GitHub secret VERCEL_DEPLOY_HOOK_URL.

Preview deploys (optional)

Open a PR or push a feature branch; Vercel creates a unique preview URL. Use these for reviews, link checks, and content sign-off.

Manual production deploy (CLI)

# from repo root
npx vercel link --project justinelonglat-lane-docs
npx vercel --prod

Useful when testing or if you’ve temporarily disabled automatic deploys.

Static build behavior

Quality gate (format check)

Lightweight formatting check to keep diffs small and consistent. (From Tooling Setup.)

.github/workflows/quality.yml
name: Quality
on:
  pull_request:
  push:
    branches: [ "main" ]
jobs:
  quality:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci || pnpm i
      - run: npm run fmt:check || pnpm fmt:check

Next step

Review the big picture and decisions behind the stack:

Next: Architecture →

← Back: Tooling Setup