Skip to content

Releases: heyvaldemar/blackmesa-server-docker-compose

v1.2.0

Choose a tag to compare

@heyvaldemar heyvaldemar released this 22 Sep 14:09

Added

  • BLACKMESA_SERVER_TIMEZONE: the game gets the household clock too. Every timestamp this server writes — a ban, a join, the crash it leaves behind — is read next to a log line from somewhere else, and two clocks turn that into arithmetic. Six of this fleet's eleven game templates already carried the setting and this one did not. It defaults to UTC, which is now a choice rather than an accident, and the image carries the whole tz database so any zone name works. Measured against the pinned image: unset gives UTC, set gives the zone asked for.

Upgrading

git pull (or ./update.sh), then docker compose up -d. Nothing changes unless you set the new variable: the default is UTC, which is what the container did before.

Full history in CHANGELOG.md.

v1.1.0

Choose a tag to compare

@heyvaldemar heyvaldemar released this 07 Sep 20:38

Added

  • update.sh: move between release tags on purpose. It updates to the latest release (a combination this repository's CI has booted and smoke-tested), refuses to cross a major version unattended, refuses to run over local changes, and names any new required variable before anything has moved. --dry-run says what would happen.

Upgrading

git pull (or ./update.sh). Nothing running changes: this release adds or extends the update script and touches no image pin.

Full history in CHANGELOG.md.

v1.0.0

Choose a tag to compare

@heyvaldemar heyvaldemar released this 07 Sep 02:34

Added

  • A Black Mesa deathmatch server, image pinned by digest as an
    interpolation default, so git pull delivers the build this repository has
    tested and .env overrides survive it. The tag is latest because upstream
    publishes no version numbers: the digest is the version.
  • A health check that matches the game exactly rather than as a substring.
    Two commands run in the container: srcds_linux, the game, and srcds_run,
    its restart wrapper. A substring search is satisfied by either, so the game
    can crash and leave the wrapper standing while the container reports
    healthy. tests/e2e-healthcheck.sh proves the distinction against a real
    container, with no game download.
  • A map that cannot drift. Time and frag limits of zero and a one-entry
    rotation mounted at both paths srcds may read it from, because one copy in
    the wrong place is a rotation that silently does not exist.
  • Free-for-all pinned in server.cfg. The image's own cfg ships
    mp_teamplay 1, which flipped a running server into team mode mid-session.
  • A log that is flushed per line and stays one file. The engine buffers
    and flushes only on close, so a quiet server reports zero bytes while people
    are talking; and server.cfg is exec'd at every map load, so a second
    log on opened a fresh file each time — 141 in one day.
  • The published port equal to the port the server binds, and measured
    limits
    : a deathmatch server peaked at 865 MB, and the 3 GB ceiling exists
    so a leak here cannot get some other container OOM-killed in its place.
  • Deployment Verification CI: shell and workflow linting, a Trivy scan of
    the pinned image, a daily freshness check on the pin, and the health-check
    suite. It deliberately does not boot the game: the image is 16 GB
    compressed, and a test that pretends a runner can hold it never runs.

Upgrading

First release: nothing to upgrade from. git clone, copy .env.example to .env, and docker compose up -d.

Full history in CHANGELOG.md.