Skip to content

GitHub Service (infra-github)


infra-github

Microservicio para gestionar automatizaciones Git de forma local y remota mediante GitHub API (Octokit) y Git local. Sirve como backend del GitPublish CMS.

Especificaciones Técnicas

  • Puerto de red: 3100 (Gateway: /api/git)
  • Ruta física: IA_Infraestructura/infra-github/
  • Requiere variables de entorno (.env): Sí
    • GITHUB_TOKEN: Token de acceso personal con permisos en repositorios.
    • GITHUB_OWNER: Usuario u organización propietaria del repositorio.
    • GITHUB_REPO: Nombre del repositorio remoto a gestionar.
    • GITHUB_BRANCH: Rama por defecto (ej. main).
    • GITHUB_POSTS_PATH: Ruta dentro del repo donde se guardan los Markdown (ej. posts).

Funciones Clave

  1. Gestión Remota (GitHub API):
    • Control total de repositorios, ramas, Issues y Pull Requests.
    • Guardado, actualización y borrado de posts Markdown con validación Frontmatter obligatoria.
    • Workflow automatizado en un paso: crea rama -> commitea archivo -> crea PR -> mergea PR -> elimina rama.
  2. Control de Versiones Local (Git CLI):
    • Permite consultar logs, diffs de commits y el estado del working tree local.
    • Ejecuta git init, git add, git commit y reseteo de cambios locales.

Endpoints Mapeados

API Remota (GitHub)

MétodoRutaDescripción
GET/POST/api/configObtener o guardar variables de configuración
GET/api/reposListar repositorios del usuario
POST/api/reposCrear un repositorio remoto
GET/api/branchesListar ramas
POST/api/branchesCrear una nueva rama desde otra existente
DELETE/api/branches/:nameEliminar rama
GET/api/pullsListar Pull Requests con estado de CI
POST/api/pullsCrear un Pull Request
POST/api/pulls/:number/mergeMerge de un Pull Request
GET/api/issuesListar Issues abiertas
POST/api/issuesCrear un Issue
POST/api/issues/:number/closeCerrar un Issue
GET/api/postsListar archivos Markdown en la ruta configurada
GET/api/posts/:filenameLeer el contenido de un post
POST/api/postsGuardar o actualizar un post Markdown (con Frontmatter)
DELETE/api/posts/:filenameEliminar un post
POST/api/mediaSubir archivos/recursos (base64)
GET/api/commitsListar los últimos commits remotos
POST/api/workflowEjecutar el workflow automatizado completo

API Local (Git)

MétodoRutaDescripción
GET/local/status/:projectgit status del proyecto
POST/local/init/:projectgit init + primer commit local
GET/local/log/:projectÚltimos 20 commits locales
GET/local/diff/:project/:hashDiff de un commit específico o working tree
POST/local/revert/:projectRevierte cambios locales (hard reset o revert)
POST/local/commit/:projectAñade todo y realiza commit local