Repository navigation
feat: add Debian 13, Debian 12 and Rocky Linux 9 images for testing - #104
Merged
Merged
Conversation
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.
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
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.
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.
Summary
Adds
debian-13,debian-12androcky-9images so LinuxGSM can be tested on Debian and the Red Hat family. Ubuntu stays the supported base and keeps thelatest/ubuntutags.ubuntu-versions.jsonis renamed toversions.json, and each entry now has adistrofield. The publish matrix tags each image<distro>-<version>. An entry can setbasewhen the upstream image isn't named<distro>:<version>(Rocky's isrockylinux/rockylinux:9).DISTRO,DISTRO_VERSIONand an optionalBASE_IMAGEin place ofUBUNTU_VERSION. The defaults still build Ubuntu 26.04.contrib non-free(steamcmdis innon-free) and generates the locale from/etc/locale.gen.steamcmdpackage, so the build installs Valve's SteamCMD tarball under/usr/lib/games/steam, plus a smallsteamcmdwrapper (steamcmd-wrapper.sh). Like Debian's packaged wrapper, it seeds~/.local/share/Steam/steamcmdand the~/.steamsymlinks, so paths, volumes and PUID/PGID behave the same as on Ubuntu.gosuisn'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).action-check-ubuntu-release.ymlis nowaction-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 toversions.jsonand open a pull request with a checklist. Only Ubuntu moveslatest. Rocky Linux 10 is on a skip list, because it ships no i686 libraries. For Rocky the new entry getsbase: rockylinux/rockylinux:<version>.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-13androcky-9images built on these (GameServerManagers/docker-linuxgsm#111).Testing
Built locally, for each of
rocky-9,debian-13,debian-12andubuntu-26.04:+login anonymous +app_info_update 1 +quit).-e PUID=1234 -e PGID=1234 ... +app_update 1007reports "Success! App '1007' fully installed."en_US.UTF-8exists,gosuandsteamcmdare on the PATH, and~/.steam/rootand~/.steam/steampoint at~/.local/share/Steam.jqall pass.versions.jsonsteps locally for each distro. With the currentversions.jsonit opens nothing. With an entry removed, it rediscovers it with the right title, checklist andversions.jsonedit (Ubuntu also takeslatest). With Rocky's skip list empty, it picks up Rocky 10. actionlint passes.Notes
--build-arg UBUNTU_VERSION=...needs to switch toDISTRO_VERSION.