Skip to content

v0.10.1: drop Windows from release matrix; simplify Dockerfile - #45

Merged
guyte149 merged 1 commit into
masterfrom
fix/release-drop-windows-simplify-dockerfile
May 5, 2026
Merged

v0.10.1: drop Windows from release matrix; simplify Dockerfile#45
guyte149 merged 1 commit into
masterfrom
fix/release-drop-windows-simplify-dockerfile

Conversation

@guyte149

@guyte149 guyte149 commented May 5, 2026

Copy link
Copy Markdown
Owner

Summary

Two release-pipeline fixes shaken out by the first v0.10.0 tag run.

Drop Windows from the release matrix

x86_64-pc-windows-msvc failed to build:

error[E0432]: unresolved import `tokio::net::UnixListener`
error[E0599]: no method named `set_mode` found for struct `Permissions`
   --> src/server/admin.rs:85:11

src/server/admin.rs uses tokio::net::UnixListener and POSIX Permissions::set_mode unconditionally — both Unix-only. This is a real product limitation, not a workflow tweak: properly supporting Windows means #[cfg(unix)]-gating the entire admin API module (or backing it with a Windows named pipe). Out of scope here. README updated to call out the limitation explicitly.

Simplify the Dockerfile

The multi-arch GHCR job failed with:

buildx failed: failed to compute cache key: "/usr/local/bin/rusnel": not found

Root cause: the previous Dockerfile used BuildKit cache mounts on target/ plus a cross-compile path for arm64. The cache mount was unmounted before the multi-stage COPY --from=builder could resolve the binary, so the cache key calculation found nothing.

Replaced with a plain cargo build --release under buildx + QEMU emulation. Each arch goes through the same build path; the cost is slower arm64 builds (a few minutes under QEMU) and the benefit is a Dockerfile that actually works and that any contributor can reproduce locally with one command. Final image is `gcr.io/distroless/cc-debian12:nonroot` (~30 MB, runs unprivileged).

Notes

  • v0.10.0 release stays as it is — its 5 successful binaries (Linux x86_64 gnu/musl, aarch64-musl, both macOS arches) are already attached to the existing GitHub Release. After this merges I'll tag `v0.10.1` to re-run the workflow with the fixes.
  • Version bumped 0.10.0 → 0.10.1 (patch — release-infra fix only).

Made with Cursor

Two release-pipeline fixes shaken out by the first `v0.10.0` tag:

- The Windows job failed because the library doesn't compile on
  `x86_64-pc-windows-msvc`: `src/server/admin.rs` uses
  `tokio::net::UnixListener` and POSIX `Permissions::set_mode`
  unconditionally. Drop the target from the matrix until the admin
  API is `#[cfg(unix)]`-gated. README updated to match.

- The Docker job failed with "failed to compute cache key:
  /usr/local/bin/rusnel: not found". The previous Dockerfile used
  BuildKit cache mounts on `target/` plus a cross-compile path for
  arm64; the cache mount got unmounted before the multi-stage
  `COPY --from=builder` could resolve the binary. Replace with a
  plain `cargo build --release` under buildx + QEMU emulation, using
  `gcr.io/distroless/cc-debian12:nonroot` as the runtime base. Slower
  arm64 build (a few minutes under QEMU) in exchange for a
  Dockerfile that actually works.

Co-authored-by: Cursor <cursoragent@cursor.com>
@guyte149
guyte149 merged commit 08f9311 into master May 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant