refactor: change repository path to /srv/www/repo for SELinux compliance

- Update Caddy tasks and templates to serve from /srv/www/repo.
- Update Koji Hub export script to target /srv/www/repo/.
- Redeploy Caddy config via Ansible.
- Update ADR-05 and package compilation documentation.
- 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:52:29 -06:00
commit b7c28ade88
Signed by: renich
GPG key ID: AB2A9F49384FE324
5 changed files with 8 additions and 7 deletions

View file

@ -11,3 +11,4 @@
* [2026-06-16 15:34:06] [agent-44789154] [GOT,DEC] [prev:ff115eb6b7066ffdc4e19a3915954026304bb29e4dcde38f08a98e1dcd66a216] [hash:267e20bbe8860aa24ba9857f43a7e57fdfe3316d66b0b0fd2373a4f66377d8ea] DEC: Reverted mergerepo_c wrapper and restored correct BaseOS (5) / AppStream (10) priorities on mxos0-build tag. GOT: Cleaned Ansible playbooks, added noarch to builder cs10-koji-03.mx-os arches, successfully triggered and checked rust-siguldry package compilation, created docs/compilación_de_paquetes.rst. * [2026-06-16 15:34:06] [agent-44789154] [GOT,DEC] [prev:ff115eb6b7066ffdc4e19a3915954026304bb29e4dcde38f08a98e1dcd66a216] [hash:267e20bbe8860aa24ba9857f43a7e57fdfe3316d66b0b0fd2373a4f66377d8ea] DEC: Reverted mergerepo_c wrapper and restored correct BaseOS (5) / AppStream (10) priorities on mxos0-build tag. GOT: Cleaned Ansible playbooks, added noarch to builder cs10-koji-03.mx-os arches, successfully triggered and checked rust-siguldry package compilation, created docs/compilación_de_paquetes.rst.
* [2026-06-16 15:47:09] [agent-44789154] [GOT,DEC] [prev:267e20bbe8860aa24ba9857f43a7e57fdfe3316d66b0b0fd2373a4f66377d8ea] [hash:ba5dc0fe3c77a6f0299c27e3ba1c16c2233d6464e87f9685b77df1f9d61dd298] Calculated topological bootstrap order for all 480 BaseOS packages using DNF API inside a CentOS Stream 10 container. Updated bootstrap-baseos.py on Koji Hub to build packages in this order and started it in the background. Deployed export-koji-to-forgejo.py to sync signed RPMs to the Forgejo Package Registry. Created ADR-05 and updated compilación_de_paquetes.rst. * [2026-06-16 15:47:09] [agent-44789154] [GOT,DEC] [prev:267e20bbe8860aa24ba9857f43a7e57fdfe3316d66b0b0fd2373a4f66377d8ea] [hash:ba5dc0fe3c77a6f0299c27e3ba1c16c2233d6464e87f9685b77df1f9d61dd298] Calculated topological bootstrap order for all 480 BaseOS packages using DNF API inside a CentOS Stream 10 container. Updated bootstrap-baseos.py on Koji Hub to build packages in this order and started it in the background. Deployed export-koji-to-forgejo.py to sync signed RPMs to the Forgejo Package Registry. Created ADR-05 and updated compilación_de_paquetes.rst.
* [2026-06-16 16:10:24] [agent-44789154] [GOT,DEC] [prev:ba5dc0fe3c77a6f0299c27e3ba1c16c2233d6464e87f9685b77df1f9d61dd298] [hash:dae096cb37d89f9ef09ef6ac6ad2f2ea981108412ca44b1fc9cd525611f1fee7] DEC: Decided to use a dedicated 500 GB VM serving via Caddy on port 80 as our package repository server instead of Forgejo Package Registry. GOT: Provisioned cs10-repo.mx-os using OpenTofu, configured Caddy via Ansible role, deployed export-koji-to-repo.py on Koji Hub to automatically rsync RPMs and run createrepo_c, and documented the design change in ADR-05 and compilación_de_paquetes.rst. * [2026-06-16 16:10:24] [agent-44789154] [GOT,DEC] [prev:ba5dc0fe3c77a6f0299c27e3ba1c16c2233d6464e87f9685b77df1f9d61dd298] [hash:dae096cb37d89f9ef09ef6ac6ad2f2ea981108412ca44b1fc9cd525611f1fee7] DEC: Decided to use a dedicated 500 GB VM serving via Caddy on port 80 as our package repository server instead of Forgejo Package Registry. GOT: Provisioned cs10-repo.mx-os using OpenTofu, configured Caddy via Ansible role, deployed export-koji-to-repo.py on Koji Hub to automatically rsync RPMs and run createrepo_c, and documented the design change in ADR-05 and compilación_de_paquetes.rst.
* [2026-06-16 16:52:24] [agent-44789154] [DEC,GOT] [prev:dae096cb37d89f9ef09ef6ac6ad2f2ea981108412ca44b1fc9cd525611f1fee7] [hash:b831bf88d615907d7514b2aa6e03025a5d027053791a430be25b58286ca1a7d0] DEC: Updated repository path to /srv/www/repo/ to align with SELinux predefined web content contexts. GOT: Reconfigured caddy Ansible role, updated export-koji-to-repo.py, redeployed, and cleaned up the old /srv/repo directory.

View file

@ -110,8 +110,8 @@ Para automatizar la exportación y sincronización de todos los paquetes RPM que
1. Consulta todas las compilaciones completadas bajo la etiqueta ``mxos0``. 1. Consulta todas las compilaciones completadas bajo la etiqueta ``mxos0``.
2. Localiza los RPMs firmados en el almacenamiento compartido de Koji (``/mnt/koji/packages/``). 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``). 3. Filtra archivos fuentes (``.src.rpm``) y subpaquetes de depuración (``debuginfo`` y ``debugsource``).
4. Utiliza ``rsync`` para sincronizar los RPMs binarios firmados hacia el directorio ``/srv/repo/`` en el servidor ``cs10-repo.mx-os``. 4. Utiliza ``rsync`` para sincronizar los RPMs binarios firmados hacia el directorio ``/srv/www/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. 5. Ejecuta de forma remota el comando ``createrepo_c /srv/www/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: Para ejecutar la exportación manualmente de todos los paquetes listos, ejecuta en Koji Hub:

View file

@ -31,14 +31,14 @@ Adoptaremos la siguiente estrategia técnica:
3. **Servidor de Repositorio Dedicado con Caddy**: 3. **Servidor de Repositorio Dedicado con Caddy**:
* Provisionamos una máquina virtual dedicada ``cs10-repo.mx-os`` mediante OpenTofu con un disco virtual del sistema redimensionado a 500 GB de capacidad. * Provisionamos una máquina virtual dedicada ``cs10-repo.mx-os`` mediante OpenTofu con un disco virtual del sistema redimensionado a 500 GB de capacidad.
* Automatizamos la instalación de Caddy, la configuración de firewalld para HTTP (puerto 80) y la creación del directorio ``/srv/repo/`` mediante el rol de Ansible ``caddy``. * Automatizamos la instalación de Caddy, la configuración de firewalld para HTTP (puerto 80) y la creación del directorio ``/srv/www/repo/`` mediante el rol de Ansible ``caddy``.
* Caddy está configurado para servir y permitir el listado de este directorio (``file_server browse``), actuando como nuestro servidor de repositorio oficial. * Caddy está configurado para servir y permitir el listado de este directorio (``file_server browse``), actuando como nuestro servidor de repositorio oficial.
4. **Exportación y Sincronización Automatizada vía Rsync**: 4. **Exportación y Sincronización Automatizada vía Rsync**:
* Escribimos y desplegamos el script de exportación ``/root/export-koji-to-repo.py`` en el Koji Hub. * Escribimos y desplegamos el script de exportación ``/root/export-koji-to-repo.py`` en el Koji Hub.
* Este script utiliza el API de Koji para listar todas las compilaciones completadas bajo el tag ``mxos0``, busca sus RPMs correspondientes en `/mnt/koji/packages/`, y los sincroniza mediante ``rsync`` al directorio ``/srv/repo/`` en ``cs10-repo.mx-os`` utilizando la llave SSH del usuario root de Koji Hub (previamente autorizada en el servidor de repositorio). * Este script utiliza el API de Koji para listar todas las compilaciones completadas bajo el tag ``mxos0``, busca sus RPMs correspondientes en `/mnt/koji/packages/`, y los sincroniza mediante ``rsync`` al directorio ``/srv/www/repo/`` en ``cs10-repo.mx-os`` utilizando la llave SSH del usuario root de Koji Hub (previamente autorizada en el servidor de repositorio).
* El script filtra los archivos ``.src.rpm`` y los paquetes con sufijos ``debuginfo`` y ``debugsource``, exportando únicamente los RPMs binarios firmados. * El script filtra los archivos ``.src.rpm`` y los paquetes con sufijos ``debuginfo`` y ``debugsource``, exportando únicamente los RPMs binarios firmados.
* Tras la sincronización, el script ejecuta de forma remota el comando ``createrepo_c /srv/repo`` en el servidor de repositorios para regenerar los metadatos de DNF en caliente. * Tras la sincronización, el script ejecuta de forma remota el comando ``createrepo_c /srv/www/repo`` en el servidor de repositorios para regenerar los metadatos de DNF en caliente.
Consecuencias Consecuencias
------------- -------------

View file

@ -11,7 +11,7 @@
- name: Create repository directory - name: Create repository directory
ansible.builtin.file: ansible.builtin.file:
path: /srv/repo path: /srv/www/repo
state: directory state: directory
mode: '0755' mode: '0755'
owner: root owner: root

View file

@ -1,4 +1,4 @@
:80 { :80 {
root * /srv/repo root * /srv/www/repo
file_server browse file_server browse
} }