feat: deploy Caddy repository server for BaseOS packages

- Provision cs10-repo.mx-os VM with 500 GB system disk using OpenTofu.
- Create and apply Ansible role to install and configure Caddy to serve /srv/repo/.
- Update Koji Hub export script to rsync signed binary RPMs to the repo server and trigger createrepo_c.
- Record ADR-05 detailing this design decision and update package compilation guide.
- Log progress in the project journal.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
This commit is contained in:
Rénich Bon Ćirić 2026-06-16 16:10:32 -06:00
commit c290878c96
Signed by: renich
GPG key ID: AB2A9F49384FE324
9 changed files with 243 additions and 19 deletions

View file

@ -100,21 +100,23 @@ Puedes supervisar el progreso de las tareas leyendo su archivo de bitácora o li
tail -f /var/log/bootstrap-baseos.log
koji list-tasks --mine
Exportación de Paquetes al Registro Forgejo
===========================================
Exportación de Paquetes al Servidor de Repositorio (Caddy)
==========================================================
El registro final para alojar y servir nuestros paquetes RPM oficiales para consumo de DNF es el Registro de Paquetes de Forgejo (``git.mx-os.mx/api/packages/RPMs/rpm``).
El repositorio final para alojar y servir nuestros paquetes RPM oficiales para consumo de DNF se hospeda en el servidor dedicado ``cs10-repo.mx-os`` mediante el servidor web Caddy. El repositorio está expuesto públicamente en ``http://cs10-repo.mx-os/``.
Para automatizar la exportación de todos los paquetes RPM que Koji ha compilado y firmado exitosamente, se utiliza el script ``/root/export-koji-to-forgejo.py``. Este script:
Para automatizar la exportación y sincronización de todos los paquetes RPM que Koji ha compilado y firmado exitosamente, se utiliza el script ``/root/export-koji-to-repo.py`` en el Koji Hub. Este script:
1. Consulta todas las compilaciones completadas bajo la etiqueta ``mxos0``.
2. Localiza los RPMs firmados en el almacenamiento compartido de Koji (``/mnt/koji/packages/``).
3. Filtra archivos fuentes (``.src.rpm``) y subpaquetes de depuración (``debuginfo`` y ``debugsource``).
4. Sube por HTTP PUT cada RPM binario firmado al registro Forgejo de la organización ``RPMs``.
4. Utiliza ``rsync`` para sincronizar los RPMs binarios firmados hacia el directorio ``/srv/repo/`` en el servidor ``cs10-repo.mx-os``.
5. Ejecuta de forma remota el comando ``createrepo_c /srv/repo`` en el servidor de repositorios para regenerar los metadatos de DNF.
Para ejecutar la exportación manualmente de todos los paquetes listos, ejecuta en Koji Hub:
.. code-block:: bash
sudo python3 /root/export-koji-to-forgejo.py
sudo python3 /root/export-koji-to-repo.py