Browse Source

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
main
Daniel Gibbs 2 months ago
parent
commit
3cce621220
Failed to extract signature
  1. 50
      .github/workflows/action-docker-publish.yml
  2. 64
      Dockerfile.ubuntu-2604
  3. 15
      README.md

50
.github/workflows/action-docker-publish.yml

@ -10,6 +10,54 @@ on:
- cron: "0 1 * * 6" - cron: "0 1 * * 6"
jobs: 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: build-ubuntu-2404:
name: Build Ubuntu 24.04 name: Build Ubuntu 24.04
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -158,7 +206,7 @@ jobs:
package-cleanup: package-cleanup:
name: Cleanup Old GitHub Packages 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 runs-on: ubuntu-latest
steps: steps:
- name: Delete Package Versions - name: Delete Package Versions

64
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 <[email protected]>" \
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"]

15
README.md

@ -15,12 +15,13 @@ SteamCMD is a command-line version of the Steam client. It allows you to downloa
## Tags ## Tags
| Tag(s) | Ubuntu Release | Standard Support Ends\* | Notes | | Tag(s) | Ubuntu Release | Standard Support Ends\* | Notes |
| ------------------ | --------------------------- | ----------------------- | ---------------------------------- | | ------------------ | -------------------------------- | ----------------------- | ---------------------------------- |
| `latest`, `ubuntu` | 24.04 LTS (Noble) | April 2029 | Current LTS | | `latest`, `ubuntu` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS |
| `ubuntu-24.04` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS | | `ubuntu-26.04` | 26.04 LTS (Resolute Raccoon) | April 2031 | Upcoming LTS |
| `ubuntu-22.04` | 22.04 LTS (Jammy Jackalope) | April 2027 | Previous LTS | | `ubuntu-24.04` | 24.04 LTS (Noble Numbat) | April 2029 | Current LTS |
| `ubuntu-20.04` | 20.04 LTS (Focal Fossa) | April 2025 | Legacy (receives security updates) | | `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. \*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/<AppName> /home/steam/.local/share/Steam/steamapps/common/<AppName>
``` ```
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 ### Bind Mount Example

Loading…
Cancel
Save