ansible-koji/.agents/journal/entries/2026-06-16-renich-agent-44789154.md
Rénich Bon Ćirić 38a0669db8
feat: implement automatic, atomic, and push-based repository synchronization
- Switched from systemd path monitoring to a custom wrapper script `mxos-trigger-dist-repo.sh` spawned by the Koji signing spooler.
- Wrapper script runs Koji `dist-repo` synchronously and triggers the `mxos-repo-sync.sh` script to perform an atomic rsync of packages to the Caddy server.
- Excluded reposerver from distro-sync to work around VM disk space constraints.
- Configured Koji tag `mxos0` to cancel older pending/running `distRepo` tasks when a new one is triggered.
- Verified successful repository generation, synchronization, and DNF resolution.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 23:57:02 -06:00

20 lines
7.3 KiB
Markdown

# Journal: 2026-06-16 (agent-44789154)
==============================
* [2026-06-16 12:06:23] [agent-44789154] [PRB,DEC,GOT] [prev:5e1354db7c0d7d755c9dfcb9adf6b36a5b7591b466794a514f08e2095ffa78b3] [hash:bf32795c050c4e4334423e30c4ca2a4405f2df2817ceb72c79e8dbb8ad1821a2] Fixed Koji login error (could not verify client: None) by configuring SSLVerifyClient require for /koji/login in kojiweb.conf via Ansible.
* [2026-06-16 12:08:40] [agent-44789154] [PRB,DEC,GOT] [prev:bf32795c050c4e4334423e30c4ca2a4405f2df2817ceb72c79e8dbb8ad1821a2] [hash:4647fb9e2a341bbff2b0baaf381f076bc3cb29fad6410947469ee57758352b39] Configured SSLVerifyClient optional at VirtualHost level to prevent TLS 1.3 Post-Handshake Authentication (PHA) failures during Koji Web login.
* [2026-06-16 12:15:09] [agent-44789154] [PRB,DEC,GOT] [prev:4647fb9e2a341bbff2b0baaf381f076bc3cb29fad6410947469ee57758352b39] [hash:1caa695467849353193c7b3c607e3366846d09215ad35f228ba13ae92b44bc29] Disabled TLS 1.3 in Apache to fallback to TLS 1.2, allowing client certificate renegotiation for Koji CLI and daemons (which don't support TLS 1.3 PHA).
* [2026-06-16 12:17:57] [agent-44789154] [DEC,GOT] [prev:1caa695467849353193c7b3c607e3366846d09215ad35f228ba13ae92b44bc29] [hash:2b7c155f428fc5cca979da324cf854f251a1b26ad91a1f1899cc87501dd54ee7] Added install-ca and remove-ca targets in GNUmakefile to manage local system trust of Koji CA certificate.
* [2026-06-16 12:22:27] [agent-44789154] [PRB,DEC,GOT] [prev:2b7c155f428fc5cca979da324cf854f251a1b26ad91a1f1899cc87501dd54ee7] [hash:3745d45c850df4f6bc9e839a6b4a25d482ebf271b22da0dcf599810e4b3139c0] Fixed Koji Web client cert auth: set group permissions to apache, changed web.conf key to KojiHubCA, and updated ProxyDNs to support RFC 2253 DN format.
* [2026-06-16 13:48:49] [agent-44789154] [GOT,DEC] [prev:3745d45c850df4f6bc9e839a6b4a25d482ebf271b22da0dcf599810e4b3139c0] [hash:dad7e97152b063fccb93c95a10b0d3f44b5547cbacb85839c1f57243f603b4bd] Configured local CentOS Stream 10 repository mirroring in playbooks and group variables, establishing Apache host configs on the Hub, NFS mount points, and automated tag URL updates.
* [2026-06-16 14:47:34] [agent-44789154] [GOT] [prev:dad7e97152b063fccb93c95a10b0d3f44b5547cbacb85839c1f57243f603b4bd] [hash:ff115eb6b7066ffdc4e19a3915954026304bb29e4dcde38f08a98e1dcd66a216] Imported all 4579 package repositories from the Forgejo RPMs organization into the Koji mxos0 build tag.
* [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 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.
* [2026-06-16 21:24:44] [agent-44789154] [PRB,DEC,GOT] [prev:b831bf88d615907d7514b2aa6e03025a5d027053791a430be25b58286ca1a7d0] [hash:a5af3cbb0a393bca91926fdf970c7309451dce9ee12fd2c69052a6ade1dd2191] PRB: Koji Web tables appeared cramped on desktop screens in the centered boxed card layout. DEC: Style overrides on #wrap and #innerwrap were updated to enforce 100% width and remove margins, borders, and shadows on desktop, matching the mobile full-width behavior. GOT: Deployed the updated CSS overrides to cs10-koji-00.mx-os.
* [2026-06-16 21:34:28] [agent-44789154] [PRB,DEC,GOT] [prev:a5af3cbb0a393bca91926fdf970c7309451dce9ee12fd2c69052a6ade1dd2191] [hash:47fa3ddd063139a5c07db6daf7bbc8103f34c361c3e1c9a1291475cebf3e8cb0] PRB: Koji builds failed at SRPM creation due to missing lookaside tarballs, causing bootstrap-baseos.py to loop forever. Also, cs10-repo.mx-os lacked structured directories. DEC: Modified mxos-get-sources.bash to fall back to the official CentOS Stream lookaside cache. Updated bootstrap-baseos.py to stateless check Koji task states using a two-query strategy to skip failed builds. Rewrote export-koji-to-repo.py to organize packages into BaseOS, debug, and source directories. GOT: Deployed updated files, restarted bootstrap service, ran export script, and confirmed builds are succeeding.
* [2026-06-16 21:40:20] [agent-44789154] [DEC,GOT] [prev:47fa3ddd063139a5c07db6daf7bbc8103f34c361c3e1c9a1291475cebf3e8cb0] [hash:fa25fbd91b6bece831992468f28978d148c98869a0150a7fb30eb7fce80fe3ce] DEC: Created a downloadable mxos.repo configuration template for DNF clients. GOT: Deployed it to the repository server using Ansible and committed/pushed the playbook and template changes to master.
* [2026-06-16 21:59:14] [agent-44789154] [GOT] [prev:fa25fbd91b6bece831992468f28978d148c98869a0150a7fb30eb7fce80fe3ce] [hash:5fd40f17879e0137b2c6757022246ef1bd7cceb4f28811337e4a926150516e78] Updated and expanded bootstrap.rst to detail the entire bootstrapping from scratch procedure, including manual priority configurations, package catalogs, lookaside cache fallback, and circular/missing dependency anomalies.
* [2026-06-16 22:32:39] [agent-44789154] [DEC,GOT] [prev:5fd40f17879e0137b2c6757022246ef1bd7cceb4f28811337e4a926150516e78] [hash:441133ddb8c34f268d97f095482f7e51c1dba5cc51aa53995c149d23e1c76f1a] Branded the downloadable DNF repository configuration files as MxOS 10 instead of MxOS CentOS Stream 10.
* [2026-06-16 23:54:50] [agent-44789154] [DEC,RAT,GOT] [prev:667370ff840104b3ddfc8bbe175bfec4ea0396813ba8d6355e4be69ae70425a1] [hash:af439f2d66176139cc283f8465ae2715da41d00d24d679ba8a1f37f25d0f8dee] DEC: Switched from systemd path monitoring to a wrapper script trigger for dist-repo and rsync. RAT: systemd.path follows symlinks and misses updates. DEC: Skip full dnf upgrade on reposerver due to disk constraints. GOT: Automatic repo sync flow configured and deployed successfully.