mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-23 00:00:33 +00:00
8310e46b19
windmill-trigger-amqp does not compile on Windows: tokio-reactor-trait only implements reactor_trait::Reactor for its Tokio type under #[cfg(unix)]. This broke two Windows CI jobs since the amqp trigger landed (#10230): the ee_windows worker build (via the amqp_trigger feature) and, because the crate is a default workspace member, the backend-test-windows job (`cargo test --all` compiles every member regardless of features). The amqp trigger is a server-only feature never run on Windows workers, so the fix is to stop compiling it on Windows rather than port its reactor. Worker binary (ee_windows): replace the ce_core+ee_core bundle (every trigger + all server-only features) with a worker-only worker_windows_core. A non-agent worker still runs the full windmill-api on localhost for its own operations (main.rs run_server, under `if !is_agent`) and jobs call back into it via the wmill client, so keep every feature the worker's own runtime path or its jobs touch, and drop the rest. Kept: languages, parquet, quickjs, enterprise/license, prometheus, otel, jemalloc, AI-agent execution (windmill-worker/mcp + windmill-store/mcp client and OAuth-MCP refresh, windmill-worker/bedrock for direct AWS Bedrock), OIDC Vault secrets (openidconnect), instance-SMTP email — critical alerts and the error-handler send endpoint (windmill-api/instance_smtp), OAuth refresh (oauth2 — reload_base_url_setting populates OAUTH_CLIENTS, get_value_internal refreshes tokens in the worker's internal API server), inline/preview runs (run_inline — jobs call /jobs/run_inline/*). Dropped: all *_trigger/kafka/nats/sqs listeners plus static_frontend, stripe, embedding, zip, the MCP gateway (windmill-api/mcp), the server Bedrock proxy route (windmill-api/bedrock), and cloud (runtime-gated on CLOUD_HOSTED, never true self-hosted). Split windmill-api's smtp feature: the send_email_with_instance_smtp endpoint (error-handler failure emails) only needs windmill-common's rustls sender, but the smtp feature also bundled the inbound email trigger's openssl + mail-parser + windmill-trigger-email. Add instance_smtp = ["windmill-common/smtp"] gating just the endpoint; smtp now includes it. The worker uses instance_smtp, avoiding openssl (which broke the ee_windows check step) and the email-trigger crate. backend-test-windows: the Windows binary is worker-only, so test the crates a worker runs (windmill-worker/-common/-queue) via -p instead of `cargo test --all`. --all compiled every workspace member regardless of features — pulling in the amqp crate (which does not build on Windows) and linking the whole windmill-api integration-test suite, whose combined size overran the runner disk (LNK1180). Also unset the setup-rust-toolchain default RUSTFLAGS=-D warnings for this job so cross-platform dead-code (cfg(unix)-only helpers unused on Windows) does not fail the run; hygiene stays enforced on the Linux CI and the build_windows_worker_ release build. Full-workspace coverage runs on the Linux CI. Also drop the redundant `mkdir frontend/build` from the Windows worker workflows and stub openapi-deref.json alongside the .yaml to avoid embedding ~2.5MB of openapi spec the worker never serves. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
87 lines
2.9 KiB
YAML
87 lines
2.9 KiB
YAML
name: Build windows executable for this branch
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
SQLX_OFFLINE: true
|
|
DISABLE_EMBEDDING: true
|
|
RUST_LOG: info
|
|
|
|
jobs:
|
|
cargo_build_windows:
|
|
runs-on: blacksmith-16vcpu-windows-2025
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Read EE repo commit hash
|
|
shell: pwsh
|
|
run: |
|
|
$ee_repo_ref = Get-Content .\backend\ee-repo-ref.txt
|
|
echo "ee_repo_ref=$ee_repo_ref" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
- name: Checkout windmill-ee-private repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: windmill-labs/windmill-ee-private
|
|
path: ./windmill-ee-private
|
|
ref: ${{ env.ee_repo_ref }}
|
|
token: ${{ secrets.WINDMILL_EE_PRIVATE_ACCESS }}
|
|
fetch-depth: 0
|
|
|
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
with:
|
|
cache-workspaces: backend
|
|
toolchain: 1.97.0
|
|
|
|
- name: Substitute EE code
|
|
shell: bash
|
|
run: |
|
|
./backend/substitute_ee_code.sh --copy --dir ./windmill-ee-private
|
|
|
|
- name: Cargo check (fail fast on warnings)
|
|
timeout-minutes: 60
|
|
env:
|
|
RUSTFLAGS: "-D warnings"
|
|
run: |
|
|
cd backend
|
|
# Stub the openapi specs to empty: they are compiled in via an ungated
|
|
# include_str! but a worker binary never serves them, so this avoids
|
|
# embedding ~2.5MB of spec.
|
|
New-Item -Path . -Name "windmill-api/openapi-deref.yaml" -ItemType "File" -Force
|
|
New-Item -Path . -Name "windmill-api/openapi-deref.json" -ItemType "File" -Force
|
|
cargo check --features=ee_windows
|
|
|
|
- name: Cargo build dynamic libraries windows
|
|
timeout-minutes: 180
|
|
run: |
|
|
cd backend/windmill-duckdb-ffi-internal
|
|
cargo build --release -p windmill_duckdb_ffi_internal
|
|
|
|
- name: Cargo build binary windows
|
|
timeout-minutes: 180
|
|
run: |
|
|
vcpkg.exe install openssl-windows:x64-windows
|
|
vcpkg.exe install openssl:x64-windows-static
|
|
vcpkg.exe integrate install
|
|
$env:VCPKGRS_DYNAMIC=1
|
|
$env:OPENSSL_DIR="${Env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows-static"
|
|
cd backend
|
|
cargo build --release --features=ee_windows
|
|
- name: Rename binary with corresponding architecture
|
|
run: |
|
|
Rename-Item -Path ".\backend\target\release\windmill.exe" -NewName "windmill-ee.exe"
|
|
|
|
- name: Upload binary artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: windmill-ee-binary
|
|
path: ./backend/target/release/windmill-ee.exe
|
|
|
|
- name: Upload dynamic libraries artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: windmill_duckdb_ffi_internal.dll
|
|
path: ./backend/windmill-duckdb-ffi-internal/target/release/windmill_duckdb_ffi_internal.dll
|