Skip to content

CI: run the unittest workflow on the self-hosted alma10 runners - #321

Merged
oliviermattelaer merged 4 commits into
mainfrom
claude/self-hosted-runner-unittests-684eb5
Oct 24, 2026
Merged

oliviermattelaer merged 4 commits into
mainfrom
claude/self-hosted-runner-unittests-684eb5

Conversation

@oliviermattelaer

Copy link
Copy Markdown
Contributor

Moves every job of unittest.yml to the self-hosted AlmaLinux 10 runners (cern1–cern5, label alma10), to take load off the GitHub-hosted queue (free plan, 20 concurrent jobs).

Runner choice

runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-24.04' || fromJSON('["self-hosted", "alma10"]') }}

The repo is public: pull requests from forks stay on ubuntu-24.04, so outside code never runs on our machines.

Portability fixes (the runners have no apt and no sudo)

  • restore-pip-cache: sudo apt install meson ninja-build only where apt-get exists; on the alma10 runners meson/ninja are preinstalled (dnf), with a pip fallback. The cache key falls back to /etc/os-release when $ImageOS is unset (self-hosted), so a numpy built for ubuntu is never restored there.
  • unittest_bundle_3: sudo pip install scipy/numpy becomes python3 -m pip install --user when there is no apt.
  • restore_ufomodel: no longer fails when the UFO cache misses. Before zstd was installed on the runners the ubuntu-written .tzst cache was not restored, the cp failed, PYTHONPATH was never exported and test_fks_ppzz_in_RS failed with No module named 'RS' (only on a runner's first job, as the test leaves the model in ~/.cache/UFOMODEL).

Validation — run 40098417647: all 8 jobs green on cern1–cern5, 19 min from push to finish. Each job ran exactly as many tests as on main's latest green ubuntu run (588 / 495 / 1527 / 49 / 54 / 56 / 88 / 1), none skipped; the UFO cache restores on the runners.

Runner requirements for future machines: label alma10, plus python3-pip, gcc-gfortran, gcc-c++, make, git, meson, ninja-build, zstd.

Fork PRs stay on ubuntu-24.04. restore-pip-cache and the bundle_3 pip
installs no longer assume apt/sudo; the pip cache key falls back to the
distribution when ImageOS is unset (self-hosted).
On the self-hosted alma10 runners the ubuntu-written cache (zstd) is not
restored, so ~/.cache/UFOMODEL was missing, the cp failed, PYTHONPATH was
never exported and test_fks_ppzz_in_RS could not import RS.
Fork PRs stay on ubuntu-24.04.
@oliviermattelaer
oliviermattelaer merged commit c8fee7a into main Oct 24, 2026
178 checks passed
@oliviermattelaer
oliviermattelaer deleted the claude/self-hosted-runner-unittests-684eb5 branch October 24, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant