Repository navigation
feat: ARM64 runner support and Slurm release line docs - #6
Merged
Merged
Conversation
- add a "Slurm Versions" section: clusters default to sind-node:latest (newest Slurm release line), and sind publishes a sind-node:<YY>.<MM> image per supported release line - example matrix over 25.11 and 26.05 via defaults.image in an inline cluster config Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011NftyNYiF1oHaVJRFsfbNY
dennisklein
added a commit
to GSI-HPC/sind
that referenced
this pull request
Sep 26, 2026
…d64 and arm64 (#76) This PR publishes an official `sind-node` image for each supported Slurm release line: 26.05 (new, now `latest`) and 25.11 (bumped to 25.11.8). Each image is built for linux/amd64 and linux/arm64. It also fixes `sind ssh` into nodes that run with `apparmor=unconfined`. Closes #50 Closes #74 ### Images and tags | Slurm | Tags | Platforms | |---|---|---| | [26.05.4](https://github.com/SchedMD/slurm/releases/tag/slurm-26-05-4-1) | `latest`, `26.05`, `26.05.4` | linux/amd64, linux/arm64 | | [25.11.8](https://github.com/SchedMD/slurm/releases/tag/slurm-25-11-8-1) | `25.11`, `25.11.8` | linux/amd64, linux/arm64 | `latest` is sind's default image. Once the Image workflow runs on `main`, the default moves from Slurm 25.11 to 26.05 for every sind version, including older binaries. `sind-node:25.11` keeps the 25.11 line available. ### Changes - **`Dockerfile`:** - `SLURM_VERSION` and `SLURM_SHA256` are build args without defaults, so one Dockerfile builds every release. - `/etc/shadow` and `/etc/gshadow` are mode `0400` instead of Rocky's `0000` (#74). Root then reads them as their owner, without `CAP_DAC_OVERRIDE`. On `apparmor=unconfined` nodes, the host's `unix-chkpwd` AppArmor profile denies that capability, so `pam_unix`'s account check failed and sshd refused root. - **`docker-bake.hcl`:** `SLURM_RELEASES` lists one release per line with its tarball checksum, newest first. Each entry becomes a target `slurm-<YY>-<MM>` for both platforms, tagged `<version>` and `<YY>.<MM>`. The first entry is also tagged `latest`. - **`.github/workflows/image.yml`:** - builds each target and platform on a native runner (`ubuntu-24.04-arm` for arm64) and pushes it by digest; - merges the digests into one multi-platform image per release line under the bake tags; - takes `latest` from the bake file, which replaces the registry lookup (it parsed the removed `ARG SLURM_VERSION=` default). - **`.github/workflows/ci.yml`:** - the integration tests run per target and platform, four jobs listed from the bake file with `docker/bake-action/subaction/matrix`; - `Integration Test` now aggregates those jobs, so the check name stays stable when release lines or platforms change; - each job runs `sind doctor` first, because the tests skip rather than fail when Docker or cgroup nsdelegate are missing; - the image under test is tagged `ghcr.io/gsi-hpc/sind-node:latest` locally. The mesh's SSH relay runs that image, and the published one is amd64-only until this ships. - **`pkg/slurm/version_test.go`:** `TestDiscoverVersionLifecycle` runs against `sind-node:latest`, now the image under test. It accepts any `X.Y.Z` version instead of expecting 25.11. - **`Makefile`:** `make image` builds all release lines for the host platform only (`--set '*.platform=local'`). A cross-platform build would compile the whole stack under emulation. - **Docs:** - `building-images.md`: tag table, how to pick a release line, how to build a single target, platforms, and the shadow-file requirement for custom images; - `installation.md`, `quickstart.md`, `development-setup.md`, `DESIGN.md` and `README.md`; - the `steward` and `bump-image-deps` skills, including how to add or drop a release line. ### Slurm 26.05 review - The 26.05 release notes remove none of the options sind writes to `slurm.conf` or `cgroup.conf`. - The `configure` flags the Dockerfile passes and the required build dependencies are the same as in 25.11. The new llhttp and libjwt checks only fail when those libraries are requested or installed, and the image builds neither slurmrestd nor JWT support. ### Testing - **CI:** all four integration jobs pass: Slurm 25.11 and 26.05, each on linux/amd64 and linux/arm64. Each job builds its image from source and runs 1282 integration tests, with none skipped. arm64 runs natively on `ubuntu-24.04-arm`, and `sind doctor` passes there. - **Build times:** from a cold cache, a full image build took about 10 minutes on arm64. With the per-target cache, each integration job took 1–3 minutes. - **Tags:** `docker buildx bake --print` shows the expected targets, platforms, build args and tags. - **Checksums:** computed from download.schedmd.com. The previously pinned 25.11.6 checksum matched. - **Local checks:** `make test`, `make lint`, `go vet -tags integration ./...`, `make lint-docs` and `actionlint` pass. - **Not exercised:** the Image workflow's push-by-digest and merge path, which only runs on `main`. ### Notes - **CI cost:** integration tests double (two release lines × two platforms), and each job builds its image from source. The GitHub Actions cache is scoped per target and platform. - **Old tags:** existing tags such as `25.11.6` stay in the registry but are no longer rebuilt, so they don't get the #74 fix. - **sind-action:** it installs `sind-linux-amd64` only, so using arm64 runners needs an architecture switch there. The companion README change is GSI-HPC/sind-action#6, which should merge after a sind release has published these images. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_011NftyNYiF1oHaVJRFsfbNY
- select sind-linux-amd64 or sind-linux-arm64 from uname -m (x86_64, aarch64/arm64) instead of rejecting every runner but Linux x64 - fail early with a clear error on ARM64 for sind v0.9.0 and earlier, which publish only the amd64 binary - document ARM64 runners in the README requirements and CLAUDE.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011NftyNYiF1oHaVJRFsfbNY
This was referenced Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR prepares the action for the next sind release, which GSI-HPC/sind#75 and GSI-HPC/sind#76 set up. That release publishes a
sind-linux-arm64binary, and it publishes thesind-nodeimages per Slurm release line (26.05, which is alsolatest, and25.11) for linux/amd64 and linux/arm64.Changes
scripts/install.sh:sind-linux-amd64orsind-linux-arm64fromuname -m(x86_64,aarch64/arm64); until now it rejected every runner except Linux x64;latest.README.md:sind-node:latest, with an example job that runs a matrix over25.11and26.05by settingdefaults.imagein an inline cluster config.CLAUDE.md: theinstall.shlayout entry covers the arm64 binary.No action inputs or outputs change.
Merge order
Merge after a sind release has published the arm64 binary and the new images. Until then:
latestis v0.9.0;sind-node:25.11andsind-node:26.05don't exist in the registry;#official-images) is only on the preview site.Testing
shellcheck scripts/*.shandactionlintare clean.install.shwas run against stubunameandcurlonPATH:sind-linux-amd64latest→ v0.9.0latest→ v0.10.0sind-linux-arm64create.shpasses inline configs throughyqunchanged, so the nesteddefaults.imageneeds no script change.Not exercised: a real ARM64 run and the Slurm matrix example. Both need the sind release. An
ubuntu-24.04-armleg for thee2ematrix can be added once that release is out; before then it would fail by design.🤖 Generated with Claude Code
https://claude.ai/code/session_011NftyNYiF1oHaVJRFsfbNY