Skip to content

feat: add Debian 13, Debian 12 and Rocky Linux 9 images for testing - #104

Merged
dgibbs64 merged 8 commits into
mainfrom
feat/debian-13
Oct 17, 2026
Merged

dgibbs64 merged 8 commits into
mainfrom
feat/debian-13

Conversation

@dgibbs64

@dgibbs64 dgibbs64 commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds debian-13, debian-12 and rocky-9 images so LinuxGSM can be tested on Debian and the Red Hat family. Ubuntu stays the supported base and keeps the latest / ubuntu tags.

  • ubuntu-versions.json is renamed to versions.json, and each entry now has a distro field. The publish matrix tags each image <distro>-<version>. An entry can set base when the upstream image isn't named <distro>:<version> (Rocky's is rockylinux/rockylinux:9).
  • The Dockerfile takes DISTRO, DISTRO_VERSION and an optional BASE_IMAGE in place of UBUNTU_VERSION. The defaults still build Ubuntu 26.04.
  • Debian: the build enables contrib non-free (steamcmd is in non-free) and generates the locale from /etc/locale.gen.
  • Rocky Linux: there is no steamcmd package, so the build installs Valve's SteamCMD tarball under /usr/lib/games/steam, plus a small steamcmd wrapper (steamcmd-wrapper.sh). Like Debian's packaged wrapper, it seeds ~/.local/share/Steam/steamcmd and the ~/.steam symlinks, so paths, volumes and PUID/PGID behave the same as on Ubuntu. gosu isn't packaged for Rocky either, so it comes from the 1.19 GitHub release, checked against a pinned SHA-256 (the signature and the release's SHA256SUMS were verified).
  • The Ubuntu path is unchanged.
  • New release check: action-check-ubuntu-release.yml is now action-check-new-releases.yml, a matrix over Ubuntu LTS, Debian stable and Rocky Linux that works the same way for each: find the newest release (distro-info-data for Ubuntu and Debian, endoflife.date for Rocky), wait for its base image, test build, add it to versions.json and open a pull request with a checklist. Only Ubuntu moves latest. Rocky Linux 10 is on a skip list, because it ships no i686 libraries. For Rocky the new entry gets base: rockylinux/rockylinux:<version>.
  • README: a testing-only tags table and the new build arguments.

Debian 12 (Bookworm) is included because it is still supported through Debian LTS until June 2028. Debian 11 is left out: its free LTS ended in August 2026.

Rocky Linux 10 is left out on purpose: it no longer ships any i686 packages (glibc.i686, libstdc++.i686, SDL2.i686), so 32-bit SteamCMD can't run on it.

docker-linuxgsm will follow with matching debian-13 and rocky-9 images built on these (GameServerManagers/docker-linuxgsm#111).

Testing

Built locally, for each of rocky-9, debian-13, debian-12 and ubuntu-26.04:

  • The SteamCMD smoke test passes (+login anonymous +app_info_update 1 +quit).
  • A real download works with remapped IDs: -e PUID=1234 -e PGID=1234 ... +app_update 1007 reports "Success! App '1007' fully installed."
  • en_US.UTF-8 exists, gosu and steamcmd are on the PATH, and ~/.steam/root and ~/.steam/steam point at ~/.local/share/Steam.
  • hadolint (DL3041, pinning dnf versions, ignored like DL3008 for apt), shellcheck, prettier and jq all pass.
  • Release check: ran its detection and versions.json steps locally for each distro. With the current versions.json it opens nothing. With an entry removed, it rediscovers it with the right title, checklist and versions.json edit (Ubuntu also takes latest). With Rocky's skip list empty, it picks up Rocky 10. actionlint passes.

Notes

  • Anyone building locally with --build-arg UBUNTU_VERSION=... needs to switch to DISTRO_VERSION.

Rename ubuntu-versions.json to versions.json with a distro field, and build each entry as <distro>-<version>. The Dockerfile takes DISTRO and DISTRO_VERSION; on Debian it enables contrib non-free for steamcmd and generates the locale from /etc/locale.gen.
Rocky has no steamcmd package, so install Valve's tarball with a wrapper that keeps the ~/.local/share/Steam layout, and gosu from its GitHub release with a pinned SHA-256. versions.json entries can set a base image when it isn't <distro>:<version>. Rocky 10 is left out because it no longer ships the i686 libraries SteamCMD needs.
@dgibbs64 dgibbs64 changed the title feat: add Debian 13 image for testing feat: add Debian 13 and Rocky Linux 9 images for testing Oct 17, 2026
Rename action-check-ubuntu-release.yml to action-check-new-releases.yml and run it as a matrix over Ubuntu LTS, Debian stable and Rocky Linux. Each distro is detected from its release data (distro-info-data for Ubuntu and Debian, endoflife.date for Rocky), gets the same test build and pull request, and only Ubuntu moves the latest tag. Rocky Linux 10 is skipped because it ships no i686 libraries, so SteamCMD can't run on it.
Debian 12 (Bookworm) is still supported through Debian LTS until June 2028. Debian 11 is left out because its free LTS ended in August 2026.
@dgibbs64 dgibbs64 changed the title feat: add Debian 13 and Rocky Linux 9 images for testing feat: add Debian 13, Debian 12 and Rocky Linux 9 images for testing Oct 17, 2026
@dgibbs64
dgibbs64 marked this pull request as ready for review October 17, 2026 19:45
Group the sections as quick start, data, IDs, logins, commands, FAQ, building and releases, and drop the near-identical examples. Create the bind-mount directories before the first run, because Docker creates missing ones owned by root and SteamCMD can't write to them. Say consistently that +force_install_dir goes before +login, and stop using validate on every run in the Compose example. Move the per-distro build details out of the tags section.
Super Linter doesn't read the root .hadolint.yml, so ignore the flagged hadolint rules in the Dockerfile itself. Skip checkov's CKV_DOCKER_7: the base image tag comes from build arguments it can't resolve. Break up README lines longer than markdownlint's 400 character limit.
@dgibbs64
dgibbs64 merged commit 0d6184d into main Oct 17, 2026
25 checks passed
@dgibbs64
dgibbs64 deleted the feat/debian-13 branch October 17, 2026 20:12
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