A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries
  • Dockerfile 59%
  • Shell 25.5%
  • Just 15%
  • Rust 0.5%
Find a file
2026-04-20 14:46:14 +02:00
.forgejo/workflows Merge pull request 'Update dependency rust to v1.95.0' (#26) from renovate/rust-1.x into next 2026-04-17 10:16:38 +02: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 fix(ci): Fix Renovate LLVM config 2026-04-17 09:59:07 +02:00
Dockerfile Update dependency xwin to v0.9.0 2026-04-20 08:16:38 +00:00
Justfile fix(ci): Fix Renovate LLVM config 2026-04-17 09:59:07 +02: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.