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>
This commit is contained in:
Rénich Bon Ćirić 2026-06-16 23:57:02 -06:00
commit 38a0669db8
Signed by: renich
GPG key ID: AB2A9F49384FE324
11 changed files with 191 additions and 54 deletions

View file

@ -354,6 +354,15 @@
- /var/spool/koji-sign/queue
- /var/spool/koji-sign/failed
- name: Set SELinux context for Koji sign spool directory
ansible.builtin.command: semanage fcontext -a -t httpd_sys_rw_content_t "/var/spool/koji-sign(/.*)?"
changed_when: false
- name: Apply SELinux context to Koji sign spool directory
ansible.builtin.command: restorecon -r -v /var/spool/koji-sign
changed_when: false
- name: Copy Koji sign spooler daemon to libexec
ansible.builtin.copy:
src: koji-sign-spooler
@ -423,6 +432,39 @@
state: started
enabled: true
- name: Deploy mxos-repo-sync script
ansible.builtin.template:
src: mxos-repo-sync.sh.j2
dest: /usr/local/bin/mxos-repo-sync.sh
owner: root
group: root
mode: "0755"
- name: Deploy mxos-trigger-dist-repo script
ansible.builtin.template:
src: mxos-trigger-dist-repo.sh.j2
dest: /usr/local/bin/mxos-trigger-dist-repo.sh
owner: root
group: root
mode: "0755"
- name: Ensure mxos-repo-sync path unit is stopped and disabled
ansible.builtin.systemd:
name: mxos-repo-sync.path
state: stopped
enabled: false
ignore_errors: true
- name: Remove mxos-repo-sync systemd unit files
ansible.builtin.file:
path: "{{ item }}"
state: absent
loop:
- /etc/systemd/system/mxos-repo-sync.service
- /etc/systemd/system/mxos-repo-sync.path
- name: "Generate: MxOS Theme Graphic Assets on Localhost"
delegate_to: localhost
run_once: true
@ -726,6 +768,12 @@
font-size: 15px !important; /* Letras más grandes */
}
table th[colspan] {
text-align: left !important;
width: auto !important;
}
table td {
padding: 14px 20px !important;
border-bottom: 1px solid #e2e8f0;