Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# September 2026

- [fixed] **The Docker image builds again** — the Dockerfile set `GAMEND_CONTENT_APP_VERSION=1.0.0` for the whole build, and gamend's `mix.exs` takes that variable as its own package version, so gamend_core and gamend_web compiled as 1.0.0 and the `>= 1.0.1266` floor rejected them ("Unchecked dependencies ... got 1.0.0"). The image no longer sets it; set it at runtime (`.env`) to change the version the API spec reports.
- [changed] **Elixir 1.20 required** — the root `mix.exs` and both plugins ask for `~> 1.20`, as gamend does; the Dockerfile and CI already built on 1.20 / OTP 29. A `.tool-versions` with gamend's pins (`elixir 1.20`, `erlang 29.0.2`) is added, so `asdf install` sets them up.
- [added] **gamend's `.credo.exs`** — `credo --strict` runs gamend's checks instead of Credo's defaults, and covers `modules/plugins/*/lib/` too.
- [added] **Static assets are served compressed** — `config/prod.exs` turns on `gzip_static` and `brotli_static`, and `assets.deploy` ends with `bin/compress-static` (gamend's), which writes the `.br` files when `brotli` is installed and skips them otherwise.
Expand Down
6 changes: 4 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@
ARG GAMEND_CONTENT_PLUGINS_DIR=modules/plugins
ENV GAMEND_CONTENT_PLUGINS_DIR=${GAMEND_CONTENT_PLUGINS_DIR}

ARG GAMEND_CONTENT_APP_VERSION=1.0.0
ENV GAMEND_CONTENT_APP_VERSION=${GAMEND_CONTENT_APP_VERSION}
# No GAMEND_CONTENT_APP_VERSION here, as an ARG or an ENV: gamend's own mix.exs
# reads it as the engine's package version, so exporting it while the deps
# compile builds gamend_core/gamend_web as that version, and mix.exs's
# @gamend_min floor then rejects them. Set it at runtime (.env) instead.

# Fetch top-level deps first for better layer caching.
COPY mix.exs mix.lock ./
Expand Down Expand Up @@ -59,7 +61,7 @@
# On container start, (re)build every plugin under GAMEND_CONTENT_PLUGINS_DIR before
# serving. This is incremental — a no-op when nothing changed — and picks up code
# changes when a plugin's lib/ is bind-mounted for live editing (see docker-compose).
CMD set -e; \

Check warning on line 64 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker build

JSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals

JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals More info: https://docs.docker.com/go/dockerfile/rule/json-args-recommended/

Check warning on line 64 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker build

JSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals

JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals More info: https://docs.docker.com/go/dockerfile/rule/json-args-recommended/
for plugin in "${GAMEND_CONTENT_PLUGINS_DIR}"/*/; do \
[ -f "${plugin}mix.exs" ] || continue; \
echo "Rebuilding plugin ${plugin}"; \
Expand Down
Loading