Repository navigation
Add a ci-dos image for building MS-DOS programs in Rust and C - #41
Merged
Merged
Conversation
… and C
- **Tier:** `ci-dos` builds on `ci-rust` and adds `rust-src`, the `i586-unknown-linux-gnu` and `wasm32-unknown-unknown` Rust targets, `gcc-multilib`, `mtools`, `dosfstools`, `patch`, `python3`, `libfl2` and Bun at the shared `BUN_VERSION` pin.
- **DOS toolchain:** DJGPP 12.2 (build-djgpp 3.4), DOSBox Staging 0.83 and CWSDPMI install under `DOS_TOOLCHAIN` (`/opt/dos-toolchain`, with `djgpp/`, `dosbox/` and `cwsdpmi/`), each download checked against a SHA-256 pinned as a Dockerfile `ARG`.
- **Smoke check:** a `ci-dos` profile checks the tools, the DJGPP compiler and archiver, DOSBox, the CWSDPMI file, the Rust components and targets, a 32-bit native C build, and that Node is absent.
**Why**
- The Lieutenant Fizz for DOS repository installs these tools on every CI run from sources that move. A shared tier pins them once for any Liminal HQ DOS project.
- Built locally for `linux/amd64` (3.07 GB unpacked); the smoke check passes, and the Lieutenant Fizz for DOS repository's `tools/check.sh` passes inside it ("All checks passed", 800 checkpoints identical to the web build's wasm).
- `linux/amd64` only: DJGPP's Linux build and DOSBox Staging's release are x86-64 builds.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Adds `ci-dos` (`ghcr.io/liminal-hq/ci-dos`, target `ci-dos`, `linux/amd64`) to the `publish-images` matrix, so it gets the same smoke check, tags (`latest`, `sha-*`, the dated tag) and publish summary as the other images. - Not run: the publish workflow in Actions. A new package is private on its first publish and needs the visibility and repository link described in the runbook. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Adds `ci-dos` to the README, the layout reference (published images, tier tree, platform table), the implementation spec (image set, stages, platform policy, consumer guidance) and the publish and rollback runbook (families, targets, smoke checks, leanness and environment values). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ScottMorris
added a commit
to ScottMorris/lieutenant-fizz-dos
that referenced
this pull request
Oct 21, 2026
**What** - `ci.yml` and `release.yml` run their jobs in `ghcr.io/liminal-hq/ci-dos`, named by digest (`sha256:93d129b5…`, the `20261021-40e14e5` publish). - The image's definition, its tag script and its publish workflow (`.github/images/dos-build/`, `image.yml`) are removed from this repository, along with the `image` job in each workflow. - `docs/ARCHITECTURE.md`, `AGENTS.md` and `CLAUDE.md` describe the shared image and how the digest is updated. **Why** - The image holds no game-specific tools, so it belongs with the other shared images in `liminal-hq/.github`, where it is published as the `ci-dos` tier (liminal-hq/.github#41). A workflow in this repository could not create a package in the organization either. - A digest means a run never changes under the project, and no job waits on an image build. - The same `tools/setup.sh` links the image's toolchain as `vendor/`, so no script changed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ghcr.io/liminal-hq/ci-dos, a CI tier onci-rustfor building MS-DOS programs in Rust and C: DJGPP 12.2, DOSBox Staging 0.83 and CWSDPMI underDOS_TOOLCHAIN(/opt/dos-toolchain),rust-srcwith thei586-unknown-linux-gnuandwasm32-unknown-unknowntargets,gcc-multilib,mtools,dosfstools,patch,python3,libfl2and Bun at the shared pin.ARG.ci-dosjoins the single-platformpublish-imagesmatrix (linux/amd64), with the same smoke check, tags and summary as the other images.ci-doschecks the tools, the DJGPP compiler and archiver, DOSBox, the CWSDPMI file, the Rust components and targets, a 32-bit native C build, and that Node is absent.Documentation
ci-dos.Known limitations
linux/amd64only; DJGPP's Linux build and DOSBox Staging's release are x86-64.ScottMorris/lieutenant-fizz-dos) will run its CI and release in this image once it is published.Test plan
docker build -f docker/ci/Dockerfile --target ci-dos .builds locally (3.07 GB unpacked)bash docker/ci/smoke-check.sh ci-dos <image>passestools/setup.sh --no-clone && tools/check.shends with "All checks passed" (800 checkpoints identical to the web build's wasm)ci-dostarget was built, and only forlinux/amd64