Files
openobserve/.github/workflows
Shrinath RaoandClaude Opus 4.8 90d3c8eceb ci: gate OSS PRs on enterprise e2e tests before merge (#13242)
## In plain words

Our website code and UI tests live here (openobserve), but the triggers
that run the **enterprise** e2e tests live in the separate o2-enterprise
repo. So when a PR here changes the website or tests, we don't find out
it broke an *enterprise-only* test until it randomly surfaces in some
later enterprise PR.

This adds a **gate**: if a PR touches the website (`web/`) or UI tests
(`tests/ui-testing/`), it must run the enterprise-only e2e tests
**before it can merge** — so a breakage is caught on the PR that caused
it, not days later somewhere else.

## What happens on a PR

| PR changes | What the gate does |
|---|---|
| Nothing in `web/` or `tests/ui-testing/` | ✅ Passes instantly — never
gets in the way of unrelated PRs |
| Website/tests **+** `skip-ent-e2e` label | ✅ Passes — a deliberate,
on-the-record opt-out |
| Website/tests, but **no** `e2e` label | ❌ Fails with "add the `e2e`
label to run enterprise tests" — so it can't be skipped by accident |
| Website/tests **+** `e2e` label | Runs the enterprise tests over in
o2-enterprise, waits for the result, and passes/fails with them. On
failure it posts a "🚫 Needs Review" comment linking the run |

The check always runs and reports a result on every PR (so unrelated PRs
are never left hanging), and it's the check you mark **"required"** in
branch protection to actually block a merge.

## How it works (technical)

- Companion engine: **o2-enterprise PR
https://github.com/openobserve/o2-enterprise/pull/2199**
(`oss-pr-ent-gate.yml`). This workflow dispatches it, polls it to
completion, and mirrors its pass/fail as this check.
- "Enterprise-only tests" are **auto-computed, not a hand-kept list** —
the engine diffs the two repos' Playwright test matrices (whatever the
enterprise side runs that openobserve doesn't). ~15 specs today.
- **Pure CI — no AI/LLM.** Deterministic dispatch + poll + comment.
- Fork PRs pass with a notice (the token/branch isn't available to
forks).

## Turn it on (one-time)

- Make **`ent-e2e-gate`** a required status check on `main` in branch
protection — the switch that actually enforces the block.
- `secrets.ORG_ADMIN_TOKEN` — already present (the docgen / e2e-council
callers use it).
- `vars.ENT_GATE_REF` — set to `ci/ent-e2e-gate` until the companion
engine PR merges, then change to `main`.
- `vars.ENT_E2E_GATE_DISABLED = 'true'` — kill switch (gate passes
without running anything).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 10:40:19 +00:00
..
2026-06-02 03:58:01 +00:00