* 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>
3.1 KiB
Enterprise (EE) Development
File Conventions
- Enterprise files use the
*_ee.rssuffix - Source lives in
windmill-ee-private(sibling repo), symlinked into each crate'ssrc/ _ee.rsfiles are gitignored in the main windmill repo — tracked only inwindmill-ee-private- Use feature flags:
#[cfg(feature = "enterprise")]for enterprise logic - The
privatefeature flag gates compilation of*_ee.rsfiles - The
licensefeature 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.
- Prefix the windmill PR title with
[ee]:[ee] <type>: <description> - Create a matching branch in
windmill-ee-private(same branch name) - Commit and push the
_ee.rschanges in that branch - Create a companion PR on
windmill-ee-privatewith a link to the windmill PR (no[ee]prefix on this one) - Update
ee-repo-ref.txt: Runbash write_latest_ee_ref.shfrombackend/- Verify it wrote the correct commit hash from your branch, not from main (the script may fall back to
~/windmill-ee-privateon main) - If wrong, manually write the correct hash
- Verify it wrote the correct commit hash from your branch, not from main (the script may fall back to
- Commit
ee-repo-ref.txtin the windmill repo so CI picks up the correct EE ref
Validation
# 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):
# from the windmill repo root
ln -s ~/windmill-ee-private/<crate>/src/<x>_ee.rs backend/<crate>/src/<x>_ee.rs