mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +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>
190 lines
10 KiB
TOML
190 lines
10 KiB
TOML
[package]
|
|
name = "windmill-api"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
|
|
[lib]
|
|
name = "windmill_api"
|
|
path = "src/lib.rs"
|
|
|
|
[features]
|
|
default = []
|
|
private = ["windmill-audit/private", "windmill-common/private", "windmill-api-auth/private", "windmill-store/private", "windmill-api-users/private", "windmill-api-workspaces/private", "windmill-api-groups/private", "windmill-api-configs/private", "windmill-api-settings/private", "windmill-api-assets/private", "windmill-api-agent-workers?/private", "windmill-trigger-kafka?/private", "windmill-trigger-postgres?/private", "windmill-trigger-mqtt?/private", "windmill-trigger-amqp?/private", "windmill-trigger-websocket?/private", "windmill-trigger-nats?/private", "windmill-trigger-sqs?/private", "windmill-trigger-gcp?/private", "windmill-trigger-azure?/private", "windmill-trigger-email?/private", "windmill-git-sync/private", "windmill-autoscaling?/private", "windmill-object-store/private"]
|
|
enterprise = ["windmill-queue/enterprise", "windmill-audit/enterprise", "windmill-git-sync/enterprise", "windmill-common/enterprise", "windmill-worker?/enterprise", "windmill-api-auth/enterprise", "windmill-store/enterprise", "windmill-api-jobs/enterprise", "windmill-api-scripts/enterprise", "windmill-api-flows/enterprise", "windmill-api-users/enterprise", "windmill-api-workspaces/enterprise", "windmill-api-groups/enterprise", "windmill-api-configs/enterprise", "windmill-api-settings/enterprise", "windmill-api-schedule/enterprise", "windmill-api-agent-workers?/enterprise", "windmill-trigger/enterprise", "windmill-trigger-kafka?/enterprise", "windmill-trigger-postgres?/enterprise", "windmill-trigger-mqtt?/enterprise", "windmill-trigger-amqp?/enterprise", "windmill-trigger-websocket?/enterprise", "windmill-trigger-email?/enterprise", "windmill-trigger-nats?/enterprise", "windmill-trigger-sqs?/enterprise", "windmill-trigger-gcp?/enterprise", "windmill-trigger-azure?/enterprise", "windmill-trigger-http?/enterprise", "windmill-native-triggers?/enterprise", "dep:windmill-autoscaling", "windmill-autoscaling/enterprise", "license"]
|
|
stripe = []
|
|
run_inline = ["dep:windmill-worker", "windmill-api-configs/run_inline"]
|
|
agent_worker_server = ["dep:windmill-worker", "dep:windmill-api-agent-workers"]
|
|
enterprise_saml = ["dep:samael", "dep:libxml"]
|
|
benchmark = []
|
|
embedding = ["windmill-api-embeddings/embedding"]
|
|
parquet = ["dep:datafusion", "windmill-common/parquet", "windmill-object-store/parquet", "windmill-worker?/parquet", "windmill-api-users/parquet", "windmill-api-settings/parquet", "windmill-api-workspaces/parquet", "dep:aws-sigv4", "dep:aws-sdk-config"]
|
|
prometheus = ["windmill-common/prometheus", "windmill-queue/prometheus", "dep:prometheus", "windmill-worker?/prometheus", "windmill-api-scripts/prometheus"]
|
|
openidconnect = ["dep:openidconnect", "windmill-common/openidconnect", "windmill-store/openidconnect"]
|
|
tantivy = ["dep:windmill-indexer"]
|
|
kafka = ["dep:windmill-trigger-kafka", "windmill-store/kafka"]
|
|
kafka-gssapi = ["kafka", "windmill-trigger-kafka/kafka-gssapi"]
|
|
nats = ["dep:windmill-trigger-nats", "windmill-store/nats"]
|
|
websocket = ["dep:windmill-trigger-websocket"]
|
|
smtp = ["instance_smtp", "dep:mail-parser", "dep:openssl", "dep:windmill-trigger-email"]
|
|
# Outbound instance-SMTP email (the send_email_with_instance_smtp endpoint and
|
|
# critical alerts) without the inbound email trigger's openssl/mail-parser deps.
|
|
# `smtp` is the full trigger + endpoint; `instance_smtp` is the endpoint only.
|
|
instance_smtp = ["windmill-common/smtp"]
|
|
license = ["dep:rsa", "windmill-api-settings/license"]
|
|
zip = ["dep:async_zip"]
|
|
oauth2 = ["dep:windmill-oauth", "windmill-store/oauth2"]
|
|
http_trigger = ["dep:matchit", "dep:windmill-trigger-http", "windmill-store/http_trigger", "dep:windmill-api-openapi"]
|
|
static_frontend = ["dep:rust-embed"]
|
|
postgres_trigger = ["dep:windmill-trigger-postgres", "windmill-store/postgres_trigger"]
|
|
mqtt_trigger = ["dep:windmill-trigger-mqtt", "windmill-store/mqtt_trigger"]
|
|
amqp_trigger = ["dep:windmill-trigger-amqp", "windmill-store/amqp_trigger"]
|
|
native_trigger = ["dep:windmill-native-triggers", "windmill-native-triggers/native_trigger", "dep:strum", "oauth2"]
|
|
sqs_trigger = ["dep:windmill-trigger-sqs", "windmill-store/sqs_trigger"]
|
|
gcp_trigger = ["dep:windmill-trigger-gcp", "windmill-store/gcp_trigger"]
|
|
azure_trigger = ["dep:windmill-trigger-azure", "windmill-store/azure_trigger"]
|
|
cloud = ["windmill-common/cloud", "windmill-api-auth/cloud", "windmill-store/cloud", "windmill-api-workspaces/cloud"]
|
|
mcp = ["dep:windmill-mcp", "windmill-mcp/server", "windmill-mcp/auth", "windmill-api-auth/mcp", "windmill-store/mcp"]
|
|
bedrock = ["windmill-ai/bedrock"]
|
|
python = ["windmill-dep-map/python", "dep:windmill-parser-py", "dep:windmill-parser-py-imports", "windmill-api-scripts/python", "windmill-api-configs/python", "windmill-api-agent-workers?/python", "windmill-trigger/python", "windmill-common/python"]
|
|
no_auth = ["windmill-api-auth/no_auth", "windmill-store/no_auth", "windmill-api-users/no_auth"]
|
|
quickjs = ["windmill-jseval/quickjs", "windmill-queue/quickjs"]
|
|
|
|
[dependencies]
|
|
windmill-ai = { workspace = true, default-features = false }
|
|
windmill-mcp = { workspace = true, optional = true }
|
|
windmill-api-auth.workspace = true
|
|
windmill-api-scripts.workspace = true
|
|
windmill-api-flows.workspace = true
|
|
windmill-api-users.workspace = true
|
|
windmill-api-workspaces.workspace = true
|
|
windmill-api-groups.workspace = true
|
|
windmill-api-sse.workspace = true
|
|
windmill-api-jobs.workspace = true
|
|
windmill-trigger.workspace = true
|
|
windmill-store.workspace = true
|
|
windmill-queue.workspace = true
|
|
windmill-common = { workspace = true, default-features = false }
|
|
windmill-types.workspace = true
|
|
windmill-object-store.workspace = true
|
|
windmill-audit.workspace = true
|
|
windmill-parser.workspace = true
|
|
windmill-parser-sql.workspace = true
|
|
windmill-parser-sql-asset.workspace = true
|
|
windmill-parser-ts.workspace = true
|
|
windmill-parser-py = { workspace = true, optional = true }
|
|
windmill-parser-py-imports = { workspace = true, optional = true }
|
|
windmill-git-sync.workspace = true
|
|
windmill-indexer = { workspace = true, optional = true }
|
|
windmill-autoscaling = { workspace = true, optional = true }
|
|
windmill-worker = { workspace = true, optional = true }
|
|
windmill-worker-volumes.workspace = true
|
|
windmill-dep-map.workspace = true
|
|
tokio.workspace = true
|
|
tokio-stream.workspace = true
|
|
anyhow.workspace = true
|
|
argon2.workspace = true
|
|
axum.workspace = true
|
|
futures.workspace = true
|
|
git-version.workspace = true
|
|
tower.workspace = true
|
|
tower-cookies.workspace = true
|
|
tower-http.workspace = true
|
|
hyper.workspace = true
|
|
itertools.workspace = true
|
|
reqwest.workspace = true
|
|
serde.workspace = true
|
|
sqlx.workspace = true
|
|
windmill-oauth = { workspace = true, optional = true }
|
|
tracing.workspace = true
|
|
sql-builder.workspace = true
|
|
serde_json.workspace = true
|
|
chrono.workspace = true
|
|
chrono-tz.workspace = true
|
|
hex.workspace = true
|
|
base64.workspace = true
|
|
base32.workspace = true
|
|
serde_urlencoded.workspace = true
|
|
serde_yml.workspace = true
|
|
cron.workspace = true
|
|
mime_guess.workspace = true
|
|
rust-embed = { workspace = true, optional = true }
|
|
tracing-subscriber.workspace = true
|
|
quick_cache.workspace = true
|
|
rand.workspace = true
|
|
ed25519-dalek.workspace = true
|
|
time.workspace = true
|
|
native-tls.workspace = true
|
|
tokio-native-tls.workspace = true
|
|
openssl = { workspace = true, optional = true }
|
|
mail-parser = { workspace = true, features = ["serde_support"], optional = true }
|
|
magic-crypt.workspace = true
|
|
tempfile.workspace = true
|
|
tokio-util.workspace = true
|
|
astral-tokio-tar.workspace = true
|
|
tokio-postgres.workspace = true
|
|
postgres-native-tls.workspace = true
|
|
hmac.workspace = true
|
|
cookie.workspace = true
|
|
sha2.workspace = true
|
|
urlencoding.workspace = true
|
|
lazy_static.workspace = true
|
|
prometheus = { workspace = true, optional = true }
|
|
async_zip = { workspace = true, optional = true }
|
|
regex.workspace = true
|
|
bytes.workspace = true
|
|
url.workspace = true
|
|
samael = { workspace = true, optional = true }
|
|
libxml = { workspace = true, optional = true }
|
|
async-recursion.workspace = true
|
|
rsa = { workspace = true, optional = true}
|
|
uuid.workspace = true
|
|
datafusion = { workspace = true, optional = true}
|
|
openidconnect = { workspace = true, optional = true}
|
|
jsonwebtoken = { workspace = true }
|
|
matchit = { workspace = true, optional = true }
|
|
windmill-trigger-kafka = { workspace = true, optional = true }
|
|
windmill-trigger-postgres = { workspace = true, optional = true }
|
|
windmill-trigger-mqtt = { workspace = true, optional = true }
|
|
windmill-trigger-amqp = { workspace = true, optional = true }
|
|
windmill-trigger-websocket = { workspace = true, optional = true }
|
|
windmill-trigger-email = { workspace = true, optional = true }
|
|
windmill-trigger-nats = { workspace = true, optional = true }
|
|
windmill-trigger-sqs = { workspace = true, optional = true }
|
|
windmill-trigger-gcp = { workspace = true, optional = true }
|
|
windmill-trigger-azure = { workspace = true, optional = true }
|
|
windmill-trigger-http = { workspace = true, optional = true }
|
|
windmill-native-triggers = { workspace = true, optional = true }
|
|
windmill-alerting.workspace = true
|
|
windmill-api-agent-workers = { workspace = true, optional = true }
|
|
windmill-api-assets.workspace = true
|
|
windmill-api-configs = { workspace = true }
|
|
windmill-api-debug.workspace = true
|
|
windmill-api-embeddings.workspace = true
|
|
windmill-api-flow-conversations.workspace = true
|
|
windmill-api-inputs.workspace = true
|
|
windmill-api-npm-proxy.workspace = true
|
|
windmill-api-openapi = { workspace = true, optional = true }
|
|
windmill-api-schedule.workspace = true
|
|
windmill-api-settings = { workspace = true }
|
|
windmill-api-workers.workspace = true
|
|
const_format.workspace = true
|
|
pin-project.workspace = true
|
|
http.workspace = true
|
|
indexmap.workspace = true
|
|
async-stream.workspace = true
|
|
ulid.workspace = true
|
|
rustls = { workspace = true }
|
|
|
|
aws-sigv4 = { workspace = true, optional = true }
|
|
aws-sdk-config = { workspace = true, optional = true }
|
|
async-trait.workspace = true
|
|
eventsource-stream.workspace = true
|
|
windmill-jseval.workspace = true
|
|
tar.workspace = true
|
|
flate2.workspace = true
|
|
strum = { workspace = true, optional = true }
|
|
dashmap.workspace = true
|
|
|
|
[build-dependencies]
|