Commit Graph
11 Commits
Author SHA1 Message Date
Shrinath Rao 25c4cdef58 fix(ci): report a lost ENT test runner as infra, not a spec failure (#15403) 2026-10-15 10:52:14 +00:00
Hengfei Yang 596c87b163 fix(ci): run the enterprise checks once a labelled PR is approved (#15381) 2026-10-15 06:36:03 +00:00
Shrinath Rao 516eda0a28 fix(ci): ent-e2e-gate builds against PR base line, not always main (#14411) 2026-09-11 02:00:25 +00:00
Hengfei Yang d28ba30da0 ci: rename the CI gate label from e2e to ready-for-ci (#14191) 2026-09-04 06:34:07 +00:00
Hengfei Yang d521e6bcf2 ci: draft PRs run no paid CI, even with the e2e label (#14140) 2026-09-03 05:11:09 +00:00
Hengfei Yang f03e7ef931 ci: report both enterprise gates on merge-queue commits (#14133) 2026-09-03 00:23:46 +00:00
Hengfei Yang f775283667 ci: gate paid CI on the e2e label and run the merge queue with unit tests only (#14126) 2026-09-02 18:43:53 +00:00
Shrinath RaoandClaude Opus 4.8 cf3681c5f0 ci: rename ENT e2e gate → Playwright E2E Crosscheck (#13411)
Gives the cross-repo enterprise-e2e gate a real name: **Playwright E2E
Crosscheck**.

Branding only — no behaviour change. Renames the workflow, the **check
name** (what shows on the PR), every sticky-comment header, and the
hidden comment marker. Filenames unchanged. The check isn't required
yet, so nothing in branch protection references the old name.

Note: the marker change means the *next* run on a PR that already has an
old `ent-e2e-gate` sticky comment will post a fresh one (the old one is
orphaned) — only affects a couple of in-flight test PRs. Companion:
o2-enterprise `ci/crosscheck-rename`.

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

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 11:35:38 +00:00
Shrinath RaoandClaude Opus 4.8 35e2a36fd2 ci: ENT e2e gate — sticky comment, sister-PR defer, failing-spec detail (#13394)
## In plain words

Improves how the ENT e2e gate **communicates** on an OSS PR — three
things you asked for:

1. **Comment on pass, not just fail** — but as **one sticky comment per
PR** that updates in place (🔄 running → ✅ passed / 🚫 failed), so it
never spams a fresh comment on every push.
2. **Say which specs failed** — the comment now lists the failing
enterprise spec files by name (via a `failed-specs` artifact from the
engine — companion PR o2-enterprise `ci/ent-gate-comments`), and
distinguishes an enterprise **build** failure from **spec** failures.
3. **Sister ENT PR/branch awareness** —
- **Open sister ENT PR** (same-named branch) → the gate **defers** to
that PR's own checks: it links the sister PR and does **not** build
here.
- **Sister branch only** (no PR) → build the enterprise binary **against
that branch** and name it in the comment.
   - **No ENT counterpart** → build against `main`.

## Comment states (single sticky comment)

| State | Shows |
|---|---|
| ⏭️ Deferred | "handled by sister ENT PR #X" + link |
| 🔄 Running | what it's building against + sister note + ENT run link |
| ✅ Passed | passed against this PR + sister note + link |
| 🚫 Needs Review | **list of failing spec files** + sister note + link |
| 🚫 Build failed | enterprise didn't compile + link |

## Notes
- Builds on the merged false-red fixes (#13373). Pure CI, no AI.
- Not a required check — informational until you decide to enforce.

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

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 06:48:28 +00:00
Shrinath RaoandClaude Opus 4.8 5478a2a3d7 ci: fix ENT e2e gate false failures (matching branch, stale run, cancelled) (#13373)
## In plain words

The ENT e2e gate has been posting **false "🚫 Needs Review" failures** on
real PRs. None of these were actual test failures — three separate bugs.
(An earlier fix on #13284 was lost when that PR was recreated as #13318
without the workflow change, so this re-applies them cleanly on their
own branch.)

## The three fixes

| # | Bug | Symptom | Fix |
|---|-----|---------|-----|
| 1 | Always built against ENT **`main`** | Cross-repo feature PRs (e.g.
Workflows v1) failed to **compile** — `cannot find function
add_workflow` — because the enterprise code lives on the matching ENT
branch, not main | Resolve a **same-named ENT branch** and build against
it if it exists, else `main` (mirrors ENT's own `playwright.yml`) |
| 2 | Correlation grabbed **stale runs** | Gate "completed" in ~3s
reporting a **hours-old** run's failure for the same PR | Stamp dispatch
time; only accept a run **created at/after** it, newest first |
| 3 | `cancelled` treated as failure | A newer push superseded a run
(engine `cancel-in-progress`) → false "specs failed" comment | Treat
`cancelled`/`skipped`/empty as **neutral** — defer to the newer run,
don't comment or fail |

Only a genuine `failure`/`timed_out` now posts a comment or fails the
gate.

## Notes
- Pure CI, no AI. `ent-e2e-gate.yml` only.
- Not a required check, so this doesn't block anything — it just stops
the false-red noise.

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 12:51:58 +00:00
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