Files
computer-playbook/scripts
kevinveenbirkenbachandClaude Opus 5 7a836f934c fix(ci): read CentOS repository metadata from the mirrorlist
Both image jobs of run 37494541850 fail building the centos image:

    Downloading successful, but checksum doesn't match.
      Calculated: 76995e25878232ab...  Expected: 0ebc31a075dcba98...
    Error: Failed to download metadata for repo 'baseos':
      Cannot download repomd.xml: All mirrors were tried
    [filesystem] ERROR: 'dnf install -y epel-release' failed after 3 attempts

The retry added in d0b0b464e7 does not help and the log says why: the
Calculated digest is byte-identical on all three attempts, so dropping the dnf
metadata cache between them changes nothing. The stale bytes were never local.

Probing the sources directly settles where they come from. The metalink
advertises 0ebc31a075... for x86_64 BaseOS, matching the job's Expected value
hours later, while mirror.plusline.net and mirrors.xtom.de both serve a
repomd.xml hashing to 76995e25..., matching the job's Calculated value. The
mirrors agree with each other; the metalink is the outlier, and no retry can
reconcile a digest that no mirror serves.

The metalink exists to carry that digest alongside the mirror list, which
means the bytes and the hash for the same file arrive from two sources that
can drift apart. The mirrorlist offers the same mirrors without the second
source, so the failure class disappears rather than being retried. Mirror
redundancy is unchanged; no host is pinned.

Scoped to mirrors.centos.org. Fedora ships the same metalink shape, is not
affected by the desync, and keeps its repositories as upstream set them.
Distros without /etc/yum.repos.d exit before the rewrite.

Verified against the files the image actually ships, extracted from
centos-stream-repos-10.0-18.el10.noarch.rpm: all 23 metalink lines convert, 9
in centos.repo and 14 in centos-addons.repo. The three repositories that are
enabled there -- baseos, appstream and extras-sig-extras-common -- all resolve
through the mirrorlist endpoint.

This gives up the metalink's integrity check on repomd.xml itself. Packages
remain GPG-verified through gpgcheck.

No image has been built from this and no CI run has exercised it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-06 21:27:08 +02:00
..
…

Script Collection

This directory contains automation scripts used across the project.

  • system/ contains host and system-facing helpers.

  • container/ contains helpers that run inside the local container.

  • github/ contains GitHub workflow helper scripts.

  • For the canonical Make target index, see make.md.

  • 🛠️ Organize operational helpers for development, CI, release, and maintenance

  • 🧭 Separate responsibilities into focused subdirectories with clear scope

  • 📚 Keep script-based workflows discoverable and easier to navigate

The scope of this folder is script organization at the repository level. Detailed responsibilities belong in the README files of the respective subdirectories.