A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries
Find a file
2025-11-19 10:44:53 +01:00
.forgejo/workflows Merge pull request 'Mention examples and limit workflow runs to sensible paths' (#5) from feat/docs into master 2025-11-14 17:05:03 +01:00
examples Mention the examples in the README 2025-11-14 16:52:04 +01:00
scripts Include the customized runner exec script 2025-11-17 09:17:19 +01:00
test/hello-world Create rust-xwin image 2025-11-14 14:42:55 +01:00
.dockerignore Create rust-xwin image 2025-11-14 14:42:55 +01:00
.gitignore Create rust-xwin image 2025-11-14 14:42:55 +01:00
.renovaterc Migrate config .renovaterc 2025-11-17 10:03:03 +00:00
Dockerfile Create rust-xwin image 2025-11-14 14:42:55 +01:00
Justfile Include the customized runner exec script 2025-11-17 09:17:19 +01:00
LICENSE Initial commit 2025-11-12 16:50:49 +01:00
README.md Include the customized runner exec script 2025-11-17 09:17:19 +01:00

rust-xwin

A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries.

The image is based on the official Rust images, provides Jake-Shadle/xwin to download Windows libraries, and sets up LLVM, Rust and Wine such that most builds should run with minimal additional setup required.

Please check out the examples/.

Version number

The image tag builds a version number consisting of two parts:

  • the Rust version
  • the LLVM version

The Windows SDK manifest version and the version of xwin may occasionally be updated as well, but are not reflected in the image tags. Therefore, existing tags may sometimes be updated, but these updates shouldn't affect projects using the image to build.

Development

Building the image locally with just Docker works as usual.

The Forgejo Actions workflows utilize BuildKit to build the image, and Docker to test the image. A runner needs a buildkit label, which expects to provide the BuildKit and Docker cli tools, and access to their respective daemons (via preconfigured environment variables).

For running the workflows locally, the runner already injects the local Docker daemon socket, and the script scripts/forgejo-runner-exec wraps the forgejo-runner exec call to provide a BuildKit daemon.