Saltar al contenido principal
La GitHub Action multi-repositorio de Mintlify, mintlify/multirepo-action, copia documentación desde cualquier número de repositorios secundarios a un único repositorio de documentación principal. Combina la navegación de cada repositorio secundario en un solo docs.json, de modo que Mintlify implementa el repositorio principal como cualquier otro sitio de un único repositorio. Usa la acción cuando tu documentación esté repartida en muchos repositorios y quieras gestionar la lista de fuentes en un archivo de configuración en lugar de en el panel. Para combinar repositorios sin copiar contenido, consulta Proyectos multi-repositorio.

Cómo funciona

En cada ejecución, la acción:
  1. Obtiene cada repositorio secundario en paralelo y descarga solo la carpeta que contiene su documentación.
  2. Copia el contenido de cada repositorio secundario en una carpeta de destino del repositorio principal. El destino también es la ruta de URL, por lo que un repositorio secundario en api se publica en /api.
  3. Reescribe los enlaces relativos a la raíz, las imágenes y las importaciones de snippets en los archivos .md y .mdx del repositorio secundario para incluir el destino. Por ejemplo, /guides/start se convierte en /api/guides/start.
  4. Genera docs.json a partir de un archivo docs.base.json, combinando la navegación, las variables y las redirecciones de cada repositorio secundario.
  5. Abre o actualiza una pull request con los cambios, o los envía directamente.
Si la obtención o la combinación de algún repositorio secundario falla, la acción falla sin modificar el repositorio principal.

Requisitos

  • Un repositorio principal en GitHub conectado a tu proyecto de Mintlify
  • Un archivo docs.json con un objeto navigation en cada repositorio secundario
  • Para repositorios secundarios privados, un token de instalación de una GitHub App o un token de acceso personal detallado con contents: read en cada repositorio secundario

Configurar la acción

1

Crear una configuración base

En el repositorio principal, cambia el nombre de docs.json a docs.base.json. La acción genera docs.json a partir de este archivo en cada ejecución.Añade una entrada sourceRef donde deba aparecer la navegación de cada repositorio secundario. Un sourceRef usa la misma sintaxis que los proyectos multi-repositorio.
docs.base.json
La acción reemplaza cada sourceRef por el arreglo de navegación del mismo tipo del repositorio secundario. Por ejemplo, un sourceRef dentro de tabs se convierte en el navigation.tabs del repositorio secundario. Un sourceRef dentro de pages se convierte en las pages del repositorio secundario, o en sus groups si no tiene pages.Los repositorios secundarios sin sourceRef se añaden al final de los products, tabs, anchors o dropdowns de nivel superior de la base.
2

Enumerar los repositorios secundarios

Crea .github/mintlify-multirepo.yml en el repositorio principal.
.github/mintlify-multirepo.yml
La acción nunca copia archivos ocultos (dotfiles), enlaces simbólicos, node_modules ni el docs.json del repositorio secundario. Solo se combinan navigation, variables y redirects del repositorio secundario. El resto de la configuración, como el tema y los colores, proviene de docs.base.json.
3

Añadir el flujo de trabajo

Crea .github/workflows/multirepo.yml en el repositorio principal. Este ejemplo se ejecuta cada hora, bajo demanda y cuando un repositorio secundario envía un evento docs-updated.
.github/workflows/multirepo.yml
Si todos los repositorios secundarios son públicos, elimina el paso create-github-app-token y la entrada token.De forma predeterminada, la acción abre o actualiza una única pull request con los cambios. Fusiónala para implementar. Para permitir que el flujo de trabajo abra pull requests, activa Allow GitHub Actions to create and approve pull requests en Settings > Actions > General del repositorio principal. Para enviar los cambios directamente a la rama, establece mode: push.
4

Opcional: sincronizar cuando cambie un repositorio secundario

Para sincronizar en cuanto cambie un repositorio secundario, añade a cada repositorio secundario un flujo de trabajo que notifique al repositorio principal. Reemplaza acme/docs por tu repositorio principal. DOCS_DISPATCH_TOKEN necesita acceso contents: write al repositorio principal.
.github/workflows/notify-docs.yml

Editar el contenido sincronizado

La acción reemplaza cada carpeta de destino y docs.json en cada ejecución. Edita el contenido en los repositorios secundarios y la configuración del sitio en docs.base.json. Los cambios realizados directamente en los archivos sincronizados del repositorio principal, incluidos los hechos con el editor web, se sobrescriben en la siguiente sincronización. Cuando eliminas un repositorio secundario de .github/mintlify-multirepo.yml, la acción elimina su carpeta en la siguiente ejecución. Escribe los enlaces de un repositorio secundario como si fuera un sitio independiente. La acción añade el destino del repositorio secundario a los enlaces relativos a la raíz, por lo que [Start](/quickstart) en un repositorio secundario con destination: api se convierte en /api/quickstart. La acción no modifica los enlaces que ya apuntan al destino de otro repositorio secundario. Por ejemplo, [SDK](/sdks/js/install) no cambia cuando sdks/js es el destino de otro repositorio secundario. La acción no reescribe los enlaces dentro de bloques de código. Para ver todas las entradas, salidas y opciones de token, consulta el README de la acción.