Saltar a contenido

CI/CD

Bitbucket Pipelines

graph LR
    PUSH["Push a cualquier rama"] --> INSTALL["pnpm install<br/>--frozen-lockfile"]
    INSTALL --> MIGRATE["pnpm db:migrate:remote"]
    MIGRATE --> DEPLOY["pnpm deploy"]
    DEPLOY --> LIVE["✅ En producción"]

    style LIVE fill:#00d4aa,color:#000

Pipeline

# bitbucket-pipelines.yml
image: node:20-alpine

definitions:
  caches:
    pnpm: ~/.local/share/pnpm/store

pipelines:
  default:
    - step:
        name: Deploy to Cloudflare Workers
        caches:
          - pnpm
        script:
          - corepack enable
          - corepack prepare pnpm@latest --activate
          - pnpm install --frozen-lockfile
          - pnpm db:migrate:remote
          - pnpm deploy

Variables de repositorio

Configurar en Bitbucket → Repository Settings → Repository Variables:

Variable Descripción
CLOUDFLARE_API_TOKEN Token de API de Cloudflare con permisos de Workers y D1
CLOUDFLARE_ACCOUNT_ID ID de la cuenta de Cloudflare

Obtener el token

En Cloudflare Dashboard → My Profile → API Tokens → Create Token → Edit Cloudflare Workers.

Flujo de deploy

sequenceDiagram
    participant DEV as Developer
    participant BB as Bitbucket
    participant CF as Cloudflare

    DEV->>BB: git push
    BB->>BB: Install dependencies (pnpm)
    BB->>CF: wrangler d1 migrations apply (remote)
    Note over BB,CF: Ejecuta migraciones SQL pendientes
    BB->>CF: wrangler deploy
    Note over BB,CF: Sube worker + assets estáticos
    CF-->>BB: Deploy OK
    BB-->>DEV: ✅ Pipeline passed