From 3cce621220208afdd911e4a47f3f4dd5a6703dc7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Apr 2026 01:42:24 +0100 Subject: [PATCH] feat: add Ubuntu 26.04 (Resolute Raccoon) support - Added Dockerfile for Ubuntu 26.04 - Added build job to GitHub Actions workflow - Updated README with new tag information and fixed a typo --- .github/workflows/action-docker-publish.yml | 50 +++++++++++++++- Dockerfile.ubuntu-2604 | 64 +++++++++++++++++++++ README.md | 15 ++--- 3 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 Dockerfile.ubuntu-2604 diff --git a/.github/workflows/action-docker-publish.yml b/.github/workflows/action-docker-publish.yml index 7fe0eb7..f1fd821 100644 --- a/.github/workflows/action-docker-publish.yml +++ b/.github/workflows/action-docker-publish.yml @@ -10,6 +10,54 @@ on: - cron: "0 1 * * 6" jobs: + build-ubuntu-2604: + name: Build Ubuntu 26.04 + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + attestations: write + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup QEMU + uses: docker/setup-qemu-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: | + gameservermanagers/steamcmd + ghcr.io/gameservermanagers/steamcmd + tags: | + ubuntu-26.04 + + - name: Build and push (Ubuntu 26.04) + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile.ubuntu-2604 + platforms: linux/amd64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-ubuntu-2404: name: Build Ubuntu 24.04 runs-on: ubuntu-latest @@ -158,7 +206,7 @@ jobs: package-cleanup: name: Cleanup Old GitHub Packages - needs: [build-ubuntu-2004, build-ubuntu-2204, build-ubuntu-2404] + needs: [build-ubuntu-2004, build-ubuntu-2204, build-ubuntu-2404, build-ubuntu-2604] runs-on: ubuntu-latest steps: - name: Delete Package Versions diff --git a/Dockerfile.ubuntu-2604 b/Dockerfile.ubuntu-2604 new file mode 100644 index 0000000..ac82fd7 --- /dev/null +++ b/Dockerfile.ubuntu-2604 @@ -0,0 +1,64 @@ +FROM ubuntu:26.04 + +## Remove ubuntu user added by default +RUN touch /var/mail/ubuntu && chown ubuntu /var/mail/ubuntu && userdel -r ubuntu + +ARG DEBIAN_FRONTEND=noninteractive +ARG PUID=1000 +ARG PGID=1000 +ARG BUILD_DATE +ARG VCS_REF + +LABEL maintainer="LinuxGSM " \ + org.opencontainers.image.title="SteamCMD" \ + org.opencontainers.image.description="SteamCMD headless image for acquiring dedicated server files" \ + org.opencontainers.image.url="https://github.com/GameServerManagers/docker-steamcmd" \ + org.opencontainers.image.source="https://github.com/GameServerManagers/docker-steamcmd" \ + org.opencontainers.image.vendor="GameServerManagers" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.created=$BUILD_DATE \ + org.opencontainers.image.revision=$VCS_REF + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Install SteamCMD +RUN echo "**** Install SteamCMD ****" \ + && echo steam steam/question select "I AGREE" | debconf-set-selections \ + && echo steam steam/license note '' | debconf-set-selections \ + && dpkg --add-architecture i386 \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + locales \ + lib32gcc-s1 \ + libsdl2-2.0-0:i386 \ + tzdata \ + steamcmd \ + gosu \ + && ln -s /usr/games/steamcmd /usr/bin/steamcmd \ + && locale-gen en_US.UTF-8 \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /usr/share/man /usr/share/doc /usr/share/info /usr/share/lintian /usr/share/locale/* \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Add unicode support +ENV LANG=en_US.UTF-8 + +# Create non-root user (default IDs; can be adjusted at runtime by entrypoint) +RUN groupadd -g "${PGID}" steam \ + && useradd -l -u "${PUID}" -g steam -m -d /home/steam -s /bin/bash steam \ + && mkdir -p /home/steam/Steam \ + && chown -R steam:steam /home/steam + +WORKDIR /home/steam + +# Bootstrap SteamCMD as steam user +RUN su -s /bin/bash - steam -c 'steamcmd +login anonymous +quit || true' + +# Copy entrypoint +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["+help", "+quit"] diff --git a/README.md b/README.md index 4bc2abf..ee79084 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,13 @@ SteamCMD is a command-line version of the Steam client. It allows you to downloa ## Tags -| Tag(s) | Ubuntu Release | Standard Support Ends\* | Notes | -| ------------------ | --------------------------- | ----------------------- | ---------------------------------- | -| `latest`, `ubuntu` | 24.04 LTS (Noble) | April 2029 | Current LTS | -| `ubuntu-24.04` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS | -| `ubuntu-22.04` | 22.04 LTS (Jammy Jackalope) | April 2027 | Previous LTS | -| `ubuntu-20.04` | 20.04 LTS (Focal Fossa) | April 2025 | Legacy (receives security updates) | +| Tag(s) | Ubuntu Release | Standard Support Ends\* | Notes | +| ------------------ | -------------------------------- | ----------------------- | ---------------------------------- | +| `latest`, `ubuntu` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS | +| `ubuntu-26.04` | 26.04 LTS (Resolute Raccoon) | April 2031 | Upcoming LTS | +| `ubuntu-24.04` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS | +| `ubuntu-22.04` | 22.04 LTS (Jammy Jellyfish) | April 2027 | Previous LTS | +| `ubuntu-20.04` | 20.04 LTS (Focal Fossa) | April 2025 | Legacy (ESM only; may be removed) | \*Dates are end of standard (free) security updates per Canonical's published LTS schedule. Extended Security Maintenance (ESM) may continue beyond these dates, but images may be deprecated earlier if upstream packages (e.g. SteamCMD dependencies) become unavailable. @@ -50,7 +51,7 @@ SteamCMD stores its own library data (manifests, depots, workshop cache) in `/ho /home/steam/.local/share/Steam/steamapps/common/ ``` -Using a distinct mount (e.g. `/data`) along with `+force_install_dir /data` keeps app files seperate from the Steam library cache. +Using a distinct mount (e.g. `/data`) along with `+force_install_dir /data` keeps app files separate from the Steam library cache. ### Bind Mount Example