Files
windmill/docs/enterprise.md
T
Ruben Fiszel dce247c6d2 feat(pipeline): write-audit-publish for materialization data tests (#9911)
* feat(pipeline): write-audit-publish for materialization data tests (EE)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: EE worktree E0583 troubleshooting + duckdb feature check row

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: clarify EE symlink example (absolute target, EE repo layout)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(pipeline): move bootstrap DDL inside guarded WAP transaction

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(pipeline): move WAP guard SQL builder into EE, OSS keeps placement only

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: bump ee-repo-ref to EE branch rebased on EE main

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* style: reword test comment as current invariant per AGENTS.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: bump ee-repo-ref (EE module doc update)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(pipeline): OSS emits typed materialize plan, EE owns WAP transform

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: make rewrite assertion build-aware; refresh oss module doc

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: update ee-repo-ref to 7be0bad1a6d6b5c3a107c0a2cd4bf003c36ec34c

This commit updates the EE repository reference after PR #644 was merged in windmill-ee-private.

Previous ee-repo-ref: 63cabae75329429f647e01083936d70f8197dc9e

New ee-repo-ref: 7be0bad1a6d6b5c3a107c0a2cd4bf003c36ec34c

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-07-04 17:19:49 +02:00

66 lines
3.1 KiB
Markdown

# Enterprise (EE) Development
## File Conventions
- Enterprise files use the `*_ee.rs` suffix
- Source lives in `windmill-ee-private` (sibling repo), symlinked into each crate's `src/`
- `_ee.rs` files are gitignored in the main windmill repo — tracked only in `windmill-ee-private`
- Use feature flags: `#[cfg(feature = "enterprise")]` for enterprise logic
- The `private` feature flag gates compilation of `*_ee.rs` files
- The `license` feature flag gates features that require a valid license key at runtime
- Isolate enterprise code in separate modules
## Finding the EE Repo
- Standard location: `~/windmill-ee-private`
- Worktree location: `~/windmill-ee-private__worktrees/<branch-name>/`
## Detecting EE Changes
The `*_ee.rs` files in the windmill repo are symlinks — changes won't appear in `git diff` of the windmill repo. Check the EE repo directly: `git -C <ee-path> status --short`
## EE PR Workflow (MUST DO whenever the change has an EE companion PR)
If your work requires any change in `windmill-ee-private` (modifying `*_ee.rs`
files, adding new ones, adjusting EE-only modules, etc.) — i.e. you need to
open a companion PR on `windmill-ee-private` — then the windmill (OSS) PR
counts as an EE PR even when its own `git diff` only touches
`backend/ee-repo-ref.txt`. The symlinked `*_ee.rs` files won't appear in the
OSS diff, but the OSS build pulls them in via the EE ref, so reviewers need
to know.
1. **Prefix the windmill PR title** with `[ee]`: `[ee] <type>: <description>`
2. **Create a matching branch** in `windmill-ee-private` (same branch name)
3. **Commit and push** the `_ee.rs` changes in that branch
4. **Create a companion PR** on `windmill-ee-private` with a link to the windmill PR (no `[ee]` prefix on this one)
5. **Update `ee-repo-ref.txt`**: Run `bash write_latest_ee_ref.sh` from `backend/`
- **Verify** it wrote the correct commit hash from your branch, not from main (the script may fall back to `~/windmill-ee-private` on main)
- If wrong, manually write the correct hash
6. **Commit `ee-repo-ref.txt`** in the windmill repo so CI picks up the correct EE ref
## Validation
```bash
# EE code (always include private to compile *_ee.rs files)
cargo check --features enterprise,private
# EE code that also requires license validation
cargo check --features enterprise,private,license
```
## Troubleshooting
**`E0583: file not found for module <x>_ee` on `cargo check --features enterprise,private`**:
the EE worktree is behind the OSS code it must satisfy. Fast-forward it to EE
`origin/main` — EE worktrees are shallow clones, so run `git fetch --unshallow origin`
first or the merge fails with "refusing to merge unrelated histories". After the
fast-forward, any `*_ee.rs` file that is *new* since the worktree was created still
needs its OSS symlink made by hand (worktree setup only links files that existed then).
The EE repo has no `backend/` prefix — crates sit at its root. Use an absolute target
(a relative one would resolve against the link's directory, not your cwd):
```bash
# from the windmill repo root
ln -s ~/windmill-ee-private/<crate>/src/<x>_ee.rs backend/<crate>/src/<x>_ee.rs
```