mirror of
https://github.com/mintlify/docs.git
synced 2026-09-14 13:35:46 +08:00
7021169345
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
162 lines
8.7 KiB
Plaintext
162 lines
8.7 KiB
Plaintext
---
|
|
title: "Exportación estática"
|
|
description: "Genera una exportación estática autocontenida de tu documentación y descárgala como un único paquete a través de la API REST de Mintlify para autoalojarla."
|
|
keywords: ["static export", "static site", "bundle", "self-host", "enterprise"]
|
|
---
|
|
|
|
<Info>
|
|
La exportación estática está en beta privada y requiere un acuerdo empresarial. Contacta con [sales@mintlify.com](mailto:sales@mintlify.com) para solicitar acceso.
|
|
</Info>
|
|
|
|
Usa la API de exportación estática para prerenderizar tu sitio de forma programática en un conjunto autocontenido de archivos estáticos y descargar el resultado como un único paquete. El paquete exportado es HTML, CSS y JavaScript puros, sin dependencias en tiempo de ejecución, por lo que puedes alojarlo en cualquier almacenamiento de archivos estáticos o CDN.
|
|
|
|
<div id="page-urls-in-static-bundles">
|
|
## URLs de página en paquetes estáticos
|
|
</div>
|
|
|
|
Las exportaciones estáticas usan URLs `.html` que coinciden con los archivos del paquete. Por ejemplo, `/guides/getting-started` se convierte en `/guides/getting-started.html`. Esto sucede de forma automática y no requiere configuración.
|
|
|
|
<Note>
|
|
Las URLs canónicas y las del sitemap siguen sin extensión. CloudFront resuelve estas URLs automáticamente, pero otros hostings estáticos pueden requerir reglas de reescritura.
|
|
</Note>
|
|
|
|
<div id="how-static-export-works">
|
|
## Cómo funciona la exportación estática
|
|
</div>
|
|
|
|
Una exportación estática se ejecuta como un trabajo asíncrono. Inicias el trabajo para un proyecto y luego consultas su estado hasta que el paquete esté listo para descargar.
|
|
|
|
<Steps>
|
|
<Step title="Iniciar un trabajo de exportación estática">
|
|
Llama a [Iniciar trabajo de exportación estática](/es/api/static-export/start-job) con tu ID de proyecto. La API pone el trabajo en cola y devuelve un `jobId`.
|
|
|
|
Una implementación solo puede tener un trabajo activo a la vez. Si ya hay un trabajo `queued` o `running` para la implementación, el endpoint devuelve `409`. El endpoint está limitado a 10 inicios de trabajo por organización por hora.
|
|
</Step>
|
|
<Step title="Consultar el trabajo y descargar el paquete">
|
|
Consulta [Obtener estado del trabajo de exportación estática](/es/api/static-export/get-job-status) con el `jobId` hasta que `status` sea `completed`. La respuesta completada incluye `bundleUrl`, un enlace de S3 prefirmado con tiempo limitado al paquete, junto con `sizeBytes` y una marca de tiempo `expiresAt`.
|
|
|
|
Descarga el paquete antes de `expiresAt`. Una vez que caduque, vuelve a llamar al endpoint de estado para obtener un `bundleUrl` nuevo. Los archivos de exportación subyacentes siguen siendo reutilizables. Solo el enlace tiene tiempo limitado.
|
|
</Step>
|
|
</Steps>
|
|
|
|
<div id="feature-support-by-deployment">
|
|
## Compatibilidad de funciones por tipo de despliegue
|
|
</div>
|
|
|
|
Las funciones disponibles dependen de cómo alojes tu despliegue. Los despliegues aislados (air-gapped) no tienen acceso saliente a la red, por lo que cualquier función que dependa de los servicios en la nube de Mintlify no está disponible. Las funciones etiquetadas como **Configurable** tienen distinta disponibilidad según la configuración de tu entorno.
|
|
|
|
| Función | Cloud | Alojado por el cliente | Air-gapped |
|
|
| --- | :---: | :---: | :---: |
|
|
| Búsqueda en la documentación | <Icon icon="check" color="#16a34a" /> | Configurable | <Icon icon="x" color="#dc2626" /> |
|
|
| Asistente de IA | <Icon icon="check" color="#16a34a" /> | Configurable | <Icon icon="x" color="#dc2626" /> |
|
|
| Analíticas web | <Icon icon="check" color="#16a34a" /> | Configurable | <Icon icon="x" color="#dc2626" /> |
|
|
| Playground de API ("Try it") | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> | Configurable |
|
|
| Paquete de exportación estática | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> |
|
|
|
|
<div id="endpoints">
|
|
## Endpoints
|
|
</div>
|
|
|
|
- [Iniciar trabajo de exportación estática](/es/api/static-export/start-job): Pone en cola un trabajo de exportación estática para un proyecto.
|
|
- [Obtener estado del trabajo de exportación estática](/es/api/static-export/get-job-status): Consulta el estado del trabajo y, una vez completado, recupera un enlace prefirmado para descargar el paquete.
|
|
|
|
<div id="authentication">
|
|
## Autenticación
|
|
</div>
|
|
|
|
Autentica las solicitudes con tu clave de API de administrador. Genera una clave de API de administrador en la [página de claves de API](https://app.mintlify.com/settings/organization/api-keys) de tu panel. Las claves de API de administrador comienzan con el prefijo `mint_` y son secretos del lado del servidor: no las expongas en código del lado del cliente.
|
|
|
|
Copia tu ID de proyecto desde la misma página y úsalo como el parámetro de ruta `projectId`.
|
|
|
|
<div id="deploy-the-bundle-to-your-enterprise-helm-chart">
|
|
## Desplegar el paquete en tu Helm chart de Enterprise
|
|
</div>
|
|
|
|
Mintlify autoalojado se implementa con el Helm chart del repositorio [`mintlify/enterprise`](https://github.com/mintlify/enterprise). Una vez que un trabajo de exportación estática se completa, apuntas el chart al `bundleUrl` y el despliegue lo sirve desde tu propia infraestructura.
|
|
|
|
<Steps>
|
|
<Step title="Añade la referencia al paquete en tus values">
|
|
Configura los campos de exportación estática en tu `values.yaml` con el `bundleUrl` devuelto por [Obtener estado del trabajo de exportación estática](/es/api/static-export/get-job-status). El chart descarga el paquete al iniciarse y lo sirve como la versión activa.
|
|
|
|
```yaml values.yaml
|
|
staticExport:
|
|
enabled: true
|
|
# Presigned S3 link returned by the Get static export job status endpoint.
|
|
bundleUrl: "https://mintlify-static-export-outputs-prod.s3.amazonaws.com/6520f3a1c9b1a20012ab34cd/export.tar.gz"
|
|
# Optional: pin to a specific export version for reproducible rollouts.
|
|
version: "2024-06-01"
|
|
```
|
|
</Step>
|
|
<Step title="Despliega el chart">
|
|
Aplica los values actualizados con `helm upgrade`. El despliegue descarga el paquete, lo intercambia como el sitio en vivo y lo sirve desde tu clúster.
|
|
|
|
```bash
|
|
helm upgrade --install mintlify mintlify/enterprise \
|
|
--namespace mintlify \
|
|
--create-namespace \
|
|
-f values.yaml
|
|
```
|
|
</Step>
|
|
</Steps>
|
|
|
|
Dado que los enlaces prefirmados expiran, vuelve a consultar el estado del trabajo y a ejecutar la actualización siempre que publiques contenido nuevo, o automatiza el ciclo con GitHub Actions.
|
|
|
|
<div id="automate-with-a-github-action">
|
|
## Automatizar con una GitHub Action
|
|
</div>
|
|
|
|
La siguiente plantilla de workflow ejecuta todo el ciclo de exportación de forma programada o bajo demanda. Inicia un trabajo, espera hasta que la exportación se complete y despliega el nuevo `bundleUrl` en el Helm chart.
|
|
|
|
```yaml .github/workflows/static-export.yml
|
|
name: Publish static export
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: "0 6 * * *" # Daily at 06:00 UTC
|
|
|
|
env:
|
|
PROJECT_ID: proj_your_project_id
|
|
|
|
jobs:
|
|
export:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Start static export job
|
|
id: start
|
|
run: |
|
|
JOB_ID=$(curl -s -X POST \
|
|
https://api.mintlify.com/v1/static-export/${{ env.PROJECT_ID }}/jobs \
|
|
-H "Authorization: Bearer ${{ secrets.MINTLIFY_ADMIN_KEY }}" | jq -r '.jobId')
|
|
echo "job_id=$JOB_ID" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Wait for the job to complete and capture the bundle URL
|
|
id: bundle
|
|
run: |
|
|
for i in $(seq 1 60); do
|
|
RESPONSE=$(curl -s \
|
|
https://api.mintlify.com/v1/static-export/${{ env.PROJECT_ID }}/jobs/${{ steps.start.outputs.job_id }} \
|
|
-H "Authorization: Bearer ${{ secrets.MINTLIFY_ADMIN_KEY }}")
|
|
STATUS=$(echo "$RESPONSE" | jq -r '.status')
|
|
echo "status=$STATUS"
|
|
if [ "$STATUS" = "completed" ]; then
|
|
BUNDLE_URL=$(echo "$RESPONSE" | jq -r '.bundleUrl')
|
|
echo "bundle_url=$BUNDLE_URL" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
[ "$STATUS" = "failed" ] && exit 1
|
|
sleep 10
|
|
done
|
|
echo "Timed out waiting for the export job to complete." >&2
|
|
exit 1
|
|
|
|
- name: Deploy to the Helm chart
|
|
run: |
|
|
helm upgrade --install mintlify mintlify/enterprise \
|
|
--namespace mintlify \
|
|
--set staticExport.enabled=true \
|
|
--set staticExport.bundleUrl="${{ steps.bundle.outputs.bundle_url }}"
|
|
```
|
|
|
|
Guarda tu clave de API de administrador como el secret de repositorio `MINTLIFY_ADMIN_KEY` y establece `PROJECT_ID` con el ID de tu proyecto. Antes de desplegar, configura las credenciales del clúster, por ejemplo con `azure/setup-helm` y tu archivo de configuración de Kubernetes (`kubeconfig`).
|