Cómo Fedora 45 fabrica sus distribuciones: del código fuente a la ISO

Fuentes: The Fedora 45 Sausage Factory

Fedora publica cada seis meses imágenes instalables (ISOs, imágenes para nube, contenedores y despliegues OSTree) que nacen de un proceso de fabricación bautizado en clave como la «fábrica de salchichas». Este artículo recorre ese pipeline paso a paso tal y como funciona en el ciclo de Fedora 45.

Todo arranca en dist-git, donde cada paquete vive en su propio repositorio Git en src.fedoraproject.org o forge.fedoraproject.org (en plena migración de Pagure a Forgejo). El empacador sube un commit y, normalmente mediante la herramienta fedpkg, envía una URL que apunta a ese hash de commit al sistema de compilación Koji.

Koji, el constructor de Fedora desde la versión 7, sigue una arquitectura hub-and-spoke: un hub pasivo con base de datos PostgreSQL y daemons constructores que crean entornos chroot limpios con Mock para garantizar compilaciones reproducibles. Los builds se organizan mediante tags con herencia, y Koji también orquesta imágenes Kiwi, Image Builder y composes OSTree.

Para versiones ramificadas (no Rawhide), los paquetes pasan por Bodhi, el sistema de gestión de actualizaciones, que aplica un ciclo de karma: estados pendiente, testing y estable, con umbrales de +3 karma o días en testing. Los paquetes de ruta crítica requieren 14 días en testing y más karma. Bodhi se integra con Greenwave y ResultsDB para bloquear actualizaciones si fallan pruebas de CI. Al pasar a estable, Pungi recompone el repositorio yum/dnf.

Pungi es el orquestador de la composición: coordina las herramientas que crean las imágenes finales. Comienza congelando el conjunto de paquetes desde un tag de Koji (fase Pkgset), después decide qué va en cada producto mediante comps (grupos de paquetes) y variants (Everything, Server, Workstation, KDE, Silverblue, etc.), y por último genera el boot.iso con lorax, que prepara un sistema mínimo con Anaconda. El documento es un trabajo en curso que se actualizará hasta el lanzamiento de Fedora 45.