Skip to content

ci: Pin openSUSE to second-to-last Tumbleweed snapshot; use metalink for the default mirror#4366

Closed
martinpitt wants to merge 3 commits into
systemd:mainfrom
martinpitt:opensuse-snapshot
Closed

ci: Pin openSUSE to second-to-last Tumbleweed snapshot; use metalink for the default mirror#4366
martinpitt wants to merge 3 commits into
systemd:mainfrom
martinpitt:opensuse-snapshot

Conversation

@martinpitt

@martinpitt martinpitt commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

See #4365 for details. It will fix this kind of failure and also this kind.

@martinpitt

Copy link
Copy Markdown
Contributor Author

Wow, a green CI run! That's been a while 🎉

@martinpitt

This comment was marked as resolved.

@martinpitt

Copy link
Copy Markdown
Contributor Author

See #4365 (comment) -- sadly, only using the metalink is structurally broken. We need both, I'm afraid 😢 and dear openSUSE, pleeease fix your mirror situation. 🙏

@martinpitt martinpitt changed the title ci: Pin openSUSE to second-to-last Tumbleweed snapshot ci: Pin openSUSE to second-to-last Tumbleweed snapshot; use metalink for the default mirror Jun 19, 2026
@martinpitt

martinpitt commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

The opensuse extension tests all failed, they don't use the snapshot of the main image build. Fixed.

@martinpitt martinpitt mentioned this pull request Jun 20, 2026
7 tasks
If tests build an image with a particular `Snapshot=` (as the next
commit will do), we need extension builds to
use the same snapshot, so that (1) they match the base image, and (2)
avoid trying to download newer packages from mirrors which don't have
these yet.

Read the snapshot from the main mkosi.local.conf and pass it along in
`ImageConfig`, for the `--directory ...` extension builds in
tests/test_extension.py.
@martinpitt

This comment was marked as resolved.

@martinpitt

Copy link
Copy Markdown
Contributor Author

two failures, both with the same cause:

  • test_extension[confext]: correct snapshot now, but failed to connect to slc-mirror.opensuse.org
  • image build: zypper fetches metainfo from the single top metalink mirror (slc-mirror, as above) and doesn't fail over for repomd. This mirror keeps being advertised as top US one, and keeps being faulty 😢

On the good side, the rpm download failover and the consistent snapshot selection now work!

Neither me nor Claude have any idea what else to try now. So I think that's about as good as it gets. At least slc-mirror is reachable again, so if @behrmann or @daandemeyer could retry that failed test, I'd appreciate -- it should hopefully go green now.

Also, ready for review! @Firstyear @cyphar I think this does what we discussed in #4365 -- but second pair of eyes appreciated!

@martinpitt martinpitt marked this pull request as ready for review June 20, 2026 09:46

@behrmann behrmann left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I've not seen CI this green in a long time.

Comment thread tools/integration-test-setup.sh Outdated
Comment thread tools/integration-test-setup.sh Outdated
openSUSE Tumbleweed US mirrors frequently lag behind freshly published
snapshots. On US-based GitHub action runners the geo-redirector routes
to US mirrors that haven't rsync'd the latest snapshot yet, so
zypper/dnf get 404s and timeouts on every mirror and abort. (This never
reproduces in Germany, as the primary mirrors in Nürnberg sync very
quickly.)

Pin the second-to-last published snapshot for openSUSE image builds,
which should have had time to propagate to all mirrors.

Fixes half of systemd#4365.
Point the openSUSE repositories at download.opensuse.org's per-file
metalink instead of a plain baseurl when using the default mirror.

download.opensuse.org routes each client to a single sticky mirror, so
when that mirror is slow, overloaded or has not yet synced a freshly
published snapshot, downloads often fail. Note that
`download.max_silent_tries` doesn't save us here, as it's just going to
hit the same mirror again.

The metalink is a ranked list of mirrors that libdnf/libzypp fall back
across on download failure.

Custom mirrors (`Mirror=`) don't serve a metalink, so they keep baseurl.

This fixes the other half of systemd#4365
@martinpitt martinpitt requested a review from behrmann June 21, 2026 05:08
@behrmann

Copy link
Copy Markdown
Contributor

So, LGTM in principle, but opensuse/arch and opensuse/opensuse are still running into timeouts. fedora/arch is running into a cooldown it can't handle, so that's different, but I'll leave looking at the suse failures for your, by now, trained eye.

@martinpitt

Copy link
Copy Markdown
Contributor Author

@behrmann that's the same issue as above: slc-mirror.opensuse.org doesn't respond:

zypper fetches metainfo from the single top metalink mirror (slc-mirror, as above) and doesn't fail over for repomd. This mirror keeps being advertised as top US one, and keeps being faulty

sadly, zypper/opensuse repos seem to have no solution for that, I'm at my wit's end 😢 It seems to be working again now.

fedora/arch cooldown: same, no idea -- we can't immediately retry a 429 error, that would only put even more load on the mirror.

@martinpitt

Copy link
Copy Markdown
Contributor Author

I sent #4368 with a version without the metalink change. Since both approaches are broken in different ways, I suppose when in doubt use the less intrusive one.

@martinpitt martinpitt marked this pull request as draft June 21, 2026 15:28
@martinpitt

Copy link
Copy Markdown
Contributor Author

I am shelving this. metalink would be better (that's what zypper is designed to handle well), but with that being so unreliable, there's no point in this.

@martinpitt martinpitt closed this Jun 22, 2026
@martinpitt martinpitt deleted the opensuse-snapshot branch June 22, 2026 06:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants