# The image behind the Gitea Actions label `game-maker-ci`. It is built on the host and kept # local (the runner has `force_pull: false`), so a change here needs a rebuild: # # DOCKER_BUILDKIT=0 docker build --network git_default -t game-maker-ci:latest tools/ci # # Both flags are needed on stein2: DNS is dead in Docker's default bridge network, and Buildkit # cannot join a named network. FROM node:22-bookworm # chromium + the Vulkan drivers: the e2e harness starts chromium with --use-angle=vulkan and has # no software fallback. The render device itself comes from the runner's container.options; # without it chromium falls back to llvmpipe and gets WebGL 1.0 only. # xvfb serves the other GPU path, GAME_MAKER_BROWSER=wsl (tools/lib/browser.mjs): under WSL2 the # GPU is /dev/dxg behind Mesa's d3d12 driver, which headless chromium cannot reach, an X11 one can. # php-cli serves api/index.php, which every tool loads and saves its project through. # ffmpeg converts uploaded videos (#402), through tools/video-worker.php like the container # game-maker-video on stein2 does. # The fonts are the host's set on purpose: the checks measure text widths to find click points, # so a different set moves them. RUN apt-get update && apt-get install -y --no-install-recommends \ chromium mesa-vulkan-drivers libvulkan1 \ xvfb \ php-cli php-mbstring \ ffmpeg \ fonts-dejavu-core fonts-droid-fallback fonts-noto-color-emoji fonts-noto-mono \ fonts-texgyre fonts-urw-base35 \ && rm -rf /var/lib/apt/lists/*