=================================== Especificación Técnica de MxOS Koji =================================== Este documento detalla las especificaciones técnicas y requisitos de diseño del cluster de compilación de MxOS. El objetivo es mantener una compatibilidad estricta con la infraestructura de CentOS Stream 10 para facilitar la colaboración e integración de paquetes. Arquitectura y Componentes -------------------------- El entorno está compuesto por 5 roles principales distribuidos en nodos independientes ejecutados bajo CentOS Stream 10: * **Koji Hub**: Servidor web Apache con mod_wsgi expuesto por HTTPS. Recibe las llamadas XML-RPC del cliente y los constructores, y maneja el estado de la base de datos. * **Koji DB**: Motor relacional PostgreSQL que almacena los metadatos de las tareas, paquetes, tags y firmas. * **Koji NFS**: Almacenamiento compartido montado en `/mnt/koji` en los nodos pertinentes para el almacenamiento de los RPMs y repositorios. * **Koji Builder**: Nodo ejecutor del demonio `kojid`. Inicia entornos aislados chroot de Mock para compilar los RPMs. * **Lookaside Cache (Dist-Git)**: Servidor web Apache con scripts CGI para la descarga de tarballs y fuentes externas. Integración con Git y Lookaside Cache ------------------------------------- Para asegurar compatibilidad con CentOS Stream, los paquetes RPM se estructuran de la siguiente manera: * **Repositorios Git**: Hospedados bajo la organización `RPMs` en `git.mx-os.mx/RPMs/.git`. * **Filtro de SCM (AllowedSCMs)**: El archivo `/etc/koji-hub/hub.conf` restringe las compilaciones a repositorios oficiales: .. code-block:: ini AllowedSCMs = git.mx-os.mx:/RPMs/*.git:*:use_common_checkout * **Archivo sources**: Cada repositorio Git contiene un archivo `sources` en la raíz del proyecto. El formato del archivo es: .. code-block:: text SHA512 (tarball.tar.gz) = hash_sha512_completo Firma de Paquetes con Sigul --------------------------- La firma de los paquetes resultantes se realiza de manera segura y aislada usando la arquitectura oficial de Sigul: * **Sigul Server**: Nodo aislado donde reside el llavero GPG con la llave privada. * **Sigul Bridge**: Nodo intermediario en una zona de red restringida que recibe solicitudes del cliente y las despacha al servidor. * **Sigul Client**: Cliente CLI (`sigul`) instalado en el Koji Hub. Ejecuta solicitudes de firma mediante llamadas autenticadas por certificados SSL TLS y ACLs.