fix(ci): verify repo index consistency in poll-upstream check
All checks were successful
poll-upstream / check (push) Successful in 1s

The RPM file existing on the server is not sufficient — the repo
metadata must also reference it. After checking the file exists,
verify repomd.xml is present and dnf repoquery can find the package
in the index. This catches the case where sync succeeded but
createrepo_c failed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-27 10:06:58 +03:00
parent 65a265c095
commit ff8e5437ef

View File

@@ -31,22 +31,44 @@ jobs:
for target in "43:cuda13"; do for target in "43:cuda13"; do
fedora_version="${target%%:*}" fedora_version="${target%%:*}"
flavour="${target##*:}" flavour="${target##*:}"
url="https://rpm.lair.cafe/fedora/${fedora_version}/x86_64/mistralrs-server-${flavour}-${version}-1.fc${fedora_version}.x86_64.rpm" base_url="https://rpm.lair.cafe/fedora/${fedora_version}/x86_64"
rpm_name="mistralrs-server-${flavour}-${version}-1.fc${fedora_version}.x86_64.rpm"
# check that the rpm file exists
http_code=$(curl \ http_code=$(curl \
--silent \ --silent \
--write-out "%{http_code}" \ --write-out "%{http_code}" \
--output /dev/null \ --output /dev/null \
--head \ --head \
--url "${url}") --url "${base_url}/${rpm_name}")
if [ "${http_code}" = "200" ]; then if [ "${http_code}" = "404" ]; then
echo "found: ${url}" echo "missing: ${base_url}/${rpm_name}"
elif [ "${http_code}" = "404" ]; then
echo "missing: ${url}"
needs_build=true needs_build=true
else continue
echo "unexpected HTTP ${http_code} for ${url}" elif [ "${http_code}" != "200" ]; then
echo "unexpected HTTP ${http_code} for ${base_url}/${rpm_name}"
exit 1 exit 1
fi fi
echo "found: ${base_url}/${rpm_name}"
# check that the repo index references this package
if ! curl --silent --fail "${base_url}/repodata/repomd.xml" \
| grep --quiet 'primary'; then
echo "missing or invalid repomd.xml at ${base_url}/repodata/"
needs_build=true
continue
fi
if ! dnf repoquery \
--repofrompath=check,"${base_url}" \
--repo=check \
--quiet \
"mistralrs-server-${flavour}-${version}" 2>&1 \
| grep --quiet "mistralrs-server-${flavour}"; then
echo "repo index missing: mistralrs-server-${flavour}-${version} not in ${base_url}/repodata/"
needs_build=true
continue
fi
echo "indexed: mistralrs-server-${flavour}-${version} in ${base_url}/repodata/"
done done
echo "already_built=$( [ "${needs_build}" = "true" ] && echo false || echo true )" >> "$GITHUB_OUTPUT" echo "already_built=$( [ "${needs_build}" = "true" ] && echo false || echo true )" >> "$GITHUB_OUTPUT"
env: env: