mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-20 16:02:19 +00:00
dce247c6d2
* 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>
66 lines
3.1 KiB
Markdown
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
|
|
```
|