Universal project task runner. Tab-completes (almost) everything.
2.3K
The runner and run binaries, packaged for COPY --from.
runner is a universal project task runner. It detects the project, finds its tasks, and completes them through one command shape, whatever the toolchain underneath.
This image is a file carrier, not a service. Copy the binaries into a build stage:
COPY --from=kjanat/runner:0.26.2 /run /usr/local/bin/run
COPY --from=kjanat/runner:0.26.2 /runner /usr/local/bin/runner
Same image on GHCR, if you prefer to pull from there:
COPY --from=ghcr.io/kjanat/runner:0.26.2 /run /usr/local/bin/run
The binaries are musl-static, so one tag serves Alpine and Debian stages alike. Nothing else is required in the target stage.
It also runs directly, though that is the secondary use:
docker run --rm kjanat/runner:0.26.2 --version
docker run --rm --entrypoint /run -v "${PWD}:/w" kjanat/runner build
Without -v/--volume, the container sees no project.
Only --version or --help are meaningful without a mount.
Projects whose package scripts call run break inside build containers. The
alternative is downloading an installer on every cache bust, which needs curl
and network access in the build stage and pins per Dockerfile instead of per
tag. A published image makes the binaries a content-addressed, cacheable build
artifact.
FROM scratch, holding exactly two files:
| path | what |
|---|---|
/runner | the full CLI |
/run | alias for runner run |
ENTRYPOINT is /runner.
Semver tags track releases: 0.26.2, 0.26, and latest. Prereleases never
take latest.
Platforms: linux/amd64, linux/arm64.
Binaries come from the same build as the GitHub release and the npm platform packages, so a given version is byte-identical across channels.
npm, crates.io, AUR, and a shell installer are described in the README.
MIT © Kaj Kowalski
Content type
Image
Digest
sha256:6ee8d54d4…
Size
5 MB
Last updated
9 days ago
docker pull kjanat/runner