-
Couldn't load subscription status.
- Fork 11
Add experimental Windows CI build support #1506
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Cargo.toml
Outdated
| # Platform-specific metrics-exporter-prometheus dependencies | ||
| # Unix platforms (Linux, macOS) get both HTTP and UDS listeners | ||
| # Windows gets only HTTP listener (no Unix Domain Sockets) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This note looks misplaced
Cargo.toml
Outdated
| [target.'cfg(unix)'.workspace.dependencies] | ||
| metrics-exporter-prometheus = { version = "0.15", default-features = false, features = [ | ||
| "http-listener", | ||
| "uds-listener", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need the uds listener in practice?
ci/windows/build.ps1
Outdated
|
|
||
| Write-Host "Building release binary for Windows..." | ||
| # Build with default features (platform-specific deps handled in Cargo.toml) | ||
| cargo build --locked --release --features default |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop the --features default bit here? Presumably that's the default behavior
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this looks good. Left a couple of comments on nits. I suspect there are a few more dependencies and lading modules that will need flagging off before the build succeeds. (I'm mostly thinking about nix and the observer module.)
120393d to
f4f5aa2
Compare
This adds experimental Windows support to lading with opt-in CI builds triggered by the 'build-windows' label on PRs. The implementation includes comprehensive cross-platform compatibility fixes and Windows-specific adaptations throughout the codebase. ## Key Changes **CI Infrastructure:** - New Windows build workflow with PowerShell scripts (check, test, build) - Protobuf installation support for Windows runners - Opt-in builds via 'build-windows' label (experimental feature) **Cross-Platform Compatibility:** - Fixed metrics-exporter-prometheus dependency for Windows builds - Added conditional compilation for platform-specific code - Windows-compatible process monitoring using sysinfo crate - Platform-specific PID tracking and process tree management **Test Infrastructure:** - Converted integration tests from Unix sockets to TCP for Windows compatibility - Skip Unix-specific sheepdog integration tests on Windows - Updated ducks/sheepdog test configurations for cross-platform use **Build System:** - Updated workspace dependencies for Windows compatibility - Fixed unused code warnings specific to Windows builds - Improved error handling for platform-specific features ## Testing Status - ✅ Compilation and basic functionality verified on Windows - ✅ Core build, check, and test workflows functional -⚠️ UDP generators have known issues on Windows (documented) -⚠️ Some Unix-specific features disabled on Windows This establishes the foundation for Windows support while maintaining full compatibility with existing Unix/Linux deployments. The Windows support is marked experimental pending further testing and validation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
55a4c22 to
819518c
Compare
Updates all Windows PowerShell CI scripts to match their Linux bash counterparts exactly, ensuring consistent behavior across platforms: - check.ps1: Use --all-features (was --features default) - clippy.ps1: Use --all-features, remove --locked, --all-targets, and -D warnings - test.ps1: Use --all-features (was --features default) - build.ps1: Remove --locked flag (cleaner release build) This works correctly now that we have platform-specific conditional dependencies in Cargo.toml - --all-features only activates features available for the target platform. The scripts now have semantic parity with Linux CI behavior. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
|
After this gets rebased I'm still willing to test, if you would tell me the commands to do so! |
Summary
Test plan
This is experimental/alpha Windows support - kept separate from main CI pipeline.
🤖 Generated with Claude Code