Skip to content

Use a larger runner for Windows#396

Open
CleanCut wants to merge 18 commits intomainfrom
cleancut/windows-larger-runner
Open

Use a larger runner for Windows#396
CleanCut wants to merge 18 commits intomainfrom
cleancut/windows-larger-runner

Conversation

@CleanCut
Copy link
Copy Markdown
Contributor

@CleanCut CleanCut commented Mar 27, 2026

  • Use a larger runner for Windows (configured with @jcelliott)
    • The larger runner doesn't have a separate D: drive like the free runner does, so stop using that
  • The actions-rust-lang/setup-rust-toolchain action was already calling Swatinem/rust-cache under-the-hood, and that was actually running, so make that explicit and set a couple flags to cache more
  • Our Swatinum/rust-cache step wasn't actually getting used, so remove that
    • Note: this was configured to only upload cache on main, but we were actually uploading on every build through setup-rust-toolchain (above). setup-rust-toolchain doesn't plumb-through that option, but it wasn't using that option anyway...so it's no change.
  • Use the lld linker that ships with Rust on Windows

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 27, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

CI workflow adjusted: Windows runner changed to windows-x64-8cpu-32ram-300ssd; Rust caching moved to actions-rust-lang/setup-rust-toolchain with caching enabled; test profiles for cargo nextest updated; Windows linker overridden to rust-lld.exe; crates/oxen-py now uses workspace-managed glob.

Changes

Cohort / File(s) Summary
CI workflow
​.github/workflows/ci_test.yml
Replaced windows-latest with windows-x64-8cpu-32ram-300ssd; removed explicit Swatinem/rust-cache step and enabled actions-rust-lang/setup-rust-toolchain caching (cache: true, cache-all-crates: true, cache-workspace-crates: true); unified cargo build --workspace; changed cargo nextest run --profile ci to --profile ci --cargo-profile dev; removed Windows-only TEMP/TMP overrides.
Cargo config
.cargo/config.toml
Added target-specific linker for x86_64-pc-windows-msvc set to rust-lld.exe.
Python/Rust workspace
crates/oxen-py/Cargo.toml
Switched glob build-dependency to workspace-managed (glob = { workspace = true }).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Speed up CI #167: Changes CI caching and test-runner steps — closely related to the workflow caching and test invocation adjustments.
  • Run rust unit tests with nextest #177: Introduced Nextest usage and related CI test profiles — related to the altered cargo nextest profile flags.
  • Oxen-AI/Oxen#562: Added explicit Rust caching in CI previously — related to replacing that step with setup-rust-toolchain's caching.

Suggested reviewers

  • jcelliott
  • gschoeni

Poem

🐰 I nudged the CI with a floppy ear,
Swapped a runner, told Rust to cache with cheer.
Pointed Windows at rust-lld with a hop,
Workspace glob now follows the top.
Hop, test, repeat — may green checks appear! 🚀

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Use a larger runner for Windows' directly corresponds to the primary change in the PR: migrating the Windows CI runner from windows-latest to windows-x64-8cpu-32ram-300ssd, which is the most significant operational change.
Description check ✅ Passed The description comprehensively covers all major changes in the changeset including the larger Windows runner, Rust caching configuration, linker changes, and D: drive removal, with clear explanations of the rationale.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cleancut/windows-larger-runner

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment on lines -149 to -151
env:
TEMP: ${{ matrix.platform == 'windows' && 'D:\a\_temp' || runner.temp }}
TMP: ${{ matrix.platform == 'windows' && 'D:\a\_temp' || runner.temp }}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know how this works. What was this for?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The standard windows-latest runner currently has a D: drive that is larger and faster that C:. This just configured env vars so that D: would be used for temp files for various build tools. The larger runner does not have a separate D: drive, apparently.

@CleanCut CleanCut force-pushed the cleancut/windows-larger-runner branch from 3b04e5e to 77fee76 Compare March 27, 2026 19:19
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/ci_test.yml (1)

213-214: Consider whether --profile test is the right choice for artifact reuse.

The workflow uses --profile test with the goal of reusing build artifacts between cargo build and later pytest tests (as noted in the merge conflict context). However, Cargo.toml does not define a custom [profile.test], so Cargo's built-in test profile is used—which enables test harness compilation (test = true).

While this works in practice (the codebase has no compile-time test gating), using the dev profile or defining an explicit [profile.test] in Cargo.toml would be clearer and more conventional. This would also align better with the stated goal of artifact reuse without relying on the built-in test profile.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci_test.yml around lines 213 - 214, The workflow currently
runs "maturin develop --profile test" which relies on Cargo's built-in test
profile; instead either change the workflow to use "maturin develop --profile
dev" so artifacts match "cargo build"/'dev' semantics, or explicitly add a
[profile.test] section to Cargo.toml to define the test profile you intend to
reuse; update the CI step that runs "maturin develop --profile test" (or add the
Cargo.toml [profile.test] entry) and ensure the pytest invocation "pytest -s
tests" continues to run against the produced artifacts.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/ci_test.yml:
- Around line 141-147: Resolve the Git merge conflict markers in the "Build oxen
rust project" step by removing the conflict lines (<<<<<<< HEAD, =======,
>>>>>>>) and keep the version that uses the test profile: ensure the run command
uses "cargo build --workspace --profile test" so the workflow remains valid YAML
and preserves the intended behavior of not rebuilding later; update the step's
run block (the "Build oxen rust project" run command) accordingly.

---

Nitpick comments:
In @.github/workflows/ci_test.yml:
- Around line 213-214: The workflow currently runs "maturin develop --profile
test" which relies on Cargo's built-in test profile; instead either change the
workflow to use "maturin develop --profile dev" so artifacts match "cargo
build"/'dev' semantics, or explicitly add a [profile.test] section to Cargo.toml
to define the test profile you intend to reuse; update the CI step that runs
"maturin develop --profile test" (or add the Cargo.toml [profile.test] entry)
and ensure the pytest invocation "pytest -s tests" continues to run against the
produced artifacts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1aef1bd1-4aec-45c9-b719-7301e2a56710

📥 Commits

Reviewing files that changed from the base of the PR and between 3b04e5e and 77fee76.

📒 Files selected for processing (1)
  • .github/workflows/ci_test.yml

@CleanCut CleanCut force-pushed the cleancut/windows-larger-runner branch from 2054d1b to 239b10d Compare March 27, 2026 19:51
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.

2 participants