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
- Obtiene cada repositorio secundario en paralelo y descarga solo la carpeta que contiene su documentación.
- 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
apise publica en/api. - Reescribe los enlaces relativos a la raíz, las imágenes y las importaciones de snippets en los archivos
.mdy.mdxdel repositorio secundario para incluir el destino. Por ejemplo,/guides/startse convierte en/api/guides/start. - Genera
docs.jsona partir de un archivodocs.base.json, combinando la navegación, las variables y las redirecciones de cada repositorio secundario. - Abre o actualiza una pull request con los cambios, o los envía directamente.
Requisitos
- Un repositorio principal en GitHub conectado a tu proyecto de Mintlify
- Un archivo
docs.jsoncon un objetonavigationen 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: readen cada repositorio secundario
Configurar la acción
1
Crear una configuración base
En el repositorio principal, cambia el nombre de La acción reemplaza cada
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
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 Si todos los repositorios secundarios son públicos, elimina el paso
.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
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
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.
Enlazar entre repositorios secundarios
[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.