---
title: CLI Deploy
description: Despliega documentación directamente desde la línea de comandos. Sube, construye y publica sin hacer push a GitHub.
---

El comando `deploy` empaqueta tu documentación, la sube a Jamdesk y activa un build desde la terminal. Úsalo para iteraciones rápidas, probar cambios o proyectos que no están conectados a un repositorio de GitHub.

## Quick Start

```bash
jamdesk login        # First time only
jamdesk deploy       # From your project directory
```

## Options

| Flag | Descripción |
|------|-------------|
| `--detach` | Encola el build y sale inmediatamente (imprime un enlace al dashboard) |
| `--full-rebuild` | Fuerza un rebuild completo, ignorando la caché de build |
| `--project <id>` | Despliega a un ID de proyecto específico (omite la selección interactiva) |

`jamdesk push` es un alias de `jamdesk deploy`.

## Cómo funciona

<Steps>
  <Step title="Autenticar">
    Verifica que tu sesión sea válida. Si tu token ha expirado, se te pedirá que ejecutes `jamdesk login`.
  </Step>
  <Step title="Cargar configuración">
    Lee y valida `docs.json` del directorio actual.
  </Step>
  <Step title="Resolver proyecto">
    Lee `projectId` de `docs.json`. Si no está presente (primer despliegue), la CLI te pedirá que selecciones entre tus proyectos. Tu elección se guarda en `docs.json` para que el siguiente despliegue omita el prompt.

    Usa `--project <id>` para anular esto.
  </Step>
  <Step title="Empaquetar archivos">
    Crea un tarball comprimido de tu documentación, respetando `.gitignore`. Si algún archivo parece contener secretos, la CLI muestra una advertencia (pero no bloquea la subida).
  </Step>
  <Step title="Subir">
    Envía el tarball a Jamdesk mediante una URL prefirmada. El tamaño máximo de subida es 100 MB.
  </Step>
  <Step title="Build">
    Encola un build y sondea el estado, imprimiendo cada fase al completarse. Presiona Ctrl+C para dejar de sondear; el build continúa en segundo plano.
  </Step>
  <Step title="Listo">
    Imprime la URL en producción cuando el build finaliza.
  </Step>
</Steps>

## Fases del Build

Durante el sondeo, verás cada fase completarse en secuencia:

| Fase | Descripción |
|------|-------------|
| Extracting files | Descomprimiendo el tarball subido |
| Validating configuration | Verificando el esquema y contenido de `docs.json` |
| Preparing content | Procesando archivos MDX y assets |
| Building documentation | Compilando páginas y generando artefactos estáticos |
| Uploading to CDN | Subiendo el output construido a la red edge |
| Refreshing cache | Purgando contenido obsoleto del CDN |

## Exclusiones de archivos

Los siguientes siempre se excluyen de las subidas, independientemente de tu `.gitignore`:

`.git`, `node_modules`, `.next`, `.env`, `.env.*`, `*.pem`, `*.key`, `credentials.json`, `.gcloud`, `.DS_Store`, `Thumbs.db`

Todo lo que esté en tu `.gitignore` también se excluye.

### Advertencias de archivos secretos

La CLI advierte (pero no bloquea) cuando detecta archivos que parecen contener secretos:

- Archivos `.env` y `.env.*`
- Archivos `*.pem` y `*.key`
- `credentials.json`
- `service_account*.json`
- Archivos que comienzan con `secret`

Agrégalos a `.gitignore` para suprimir la advertencia y excluirlos de las subidas.

## Referencia de errores

| Error | Código | Causa | Solución |
|-------|--------|-------|----------|
| Not logged in | `AUTH_REQUIRED` | No hay credenciales almacenadas | `jamdesk login` |
| Session expired | `AUTH_EXPIRED` | El token no pudo renovarse | `jamdesk login` |
| Access denied | `FORBIDDEN` | No eres miembro de este proyecto | Verifica la membresía del proyecto en el dashboard |
| Project not found | `NOT_FOUND` | ID de proyecto inválido | Verifica el ID o elimina `projectId` de docs.json |
| Build in progress | `BUILD_IN_PROGRESS` | Hay otro build en ejecución | Espera o revisa el dashboard |
| Upload too large | `TOO_LARGE` | El servidor rechazó la subida (límite de 100 MB) | Excluye archivos grandes mediante `.gitignore` |
| Project too large | `PROJECT_TOO_LARGE` | El tarball supera 100 MB durante el empaquetado | Excluye archivos grandes mediante `.gitignore` |
| No projects | `NO_PROJECTS` | No hay proyectos en tu cuenta | Crea un proyecto en el dashboard primero |
| No files | `EMPTY_PROJECT` | Todos los archivos fueron excluidos | Revisa tu `.gitignore` |
| Config invalid | `CONFIG_NOT_FOUND` | Falta `docs.json` o es inválido | Ejecuta desde la raíz del proyecto y revisa la configuración |
| Upload failed | `UPLOAD_FAILED` | Problema de red durante la subida | Verifica tu conexión a internet y reintenta |
| Build failed | `BUILD_FAILED` | Error del servicio de build | Revisa los logs de build en el dashboard |

## Solución de problemas

<AccordionGroup>
  <Accordion title='"A build is already in progress"'>
    Solo un build se ejecuta a la vez por proyecto. Espera a que el build actual finalice; revisa el estado en el dashboard bajo **Deployments**.
  </Accordion>

  <Accordion title='"docs.json not found or invalid"'>
    Asegúrate de ejecutar el comando desde el directorio que contiene `docs.json`. Ejecuta `jamdesk validate` para comprobar errores de configuración.
  </Accordion>

  <Accordion title='"Upload too large"'>
    El límite de 100 MB se aplica al tarball comprimido de todos los archivos no excluidos. Revisa qué se está incluyendo. Las imágenes grandes, videos o archivos de datos son causas comunes; agrégalos a `.gitignore` para excluirlos.
  </Accordion>

  <Accordion title="Deploy hangs during polling">
    Presiona Ctrl+C para salir; el build sigue ejecutándose en segundo plano. Revisa el dashboard para ver el estado. Si esto ocurre de forma consistente, tu red puede estar descartando las solicitudes de sondeo.
  </Accordion>

  <Accordion title='"No projects found"'>
    Necesitas al menos un proyecto en tu cuenta de Jamdesk. Crea uno en [dashboard.jamdesk.com](https://dashboard.jamdesk.com).
  </Accordion>
</AccordionGroup>

Para más soluciones de problemas de CLI, consulta la [guía CLI del Centro de ayuda](/es/help/troubleshooting/cli-issues).

## ¿Qué sigue?

<Columns cols={2}>
  <Card title="Flujo de despliegue" icon="rotate" href="/es/development/deployment">
    Auto-despliegue con GitHub y estado de despliegue
  </Card>
  <Card title="Autenticación" icon="key" href="/es/cli/authentication">
    Flujo de inicio de sesión, sesiones y solución de problemas
  </Card>
</Columns>
