ci: concurrency groups, e2e sharding, React Doctor cache fix, branch cache cleanup#2377
Conversation
|
@claude review |
|
Claude finished @malinskibeniamin's task in 2m 54s —— View job Code Review
Overall this is a solid, well-reasoned CI optimization. A few findings below, mostly minor.
|
| Area | Status |
|---|---|
| Concurrency groups | ✓ Correct and well-applied |
| E2E sharding | ✓ Works — be aware of per-variant Docker overhead |
| React Doctor cache fix | ✓ Correct fix; note the permanent key divergence |
| Flaky test fix | ✓ Correct |
| Cache cleanup workflow | Minor: add per_page: 100, consider Blacksmith runner |
repository-dispatch dispatch race |
Low-risk edge case, informational only |
- Add concurrency groups with cancel-in-progress to repository-dispatch and frontend-react-doctor workflows to prevent redundant CI runs when pushing rapidly to the same branch - Shard Playwright e2e tests from single 16vCPU job to 2x8vCPU shards, halving wall time while maintaining same total compute - Add BLACKSMITH_AUDIT.md documenting 30-day CI analysis across redpanda-data org with findings and recommendations Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The `hasText: '100'` filter matched both the quota name cell (which contains "100" as part of the random timestamp suffix) and the actual value cell, causing a strict mode violation. Using regex `/^100$/` ensures only cells with exact text content "100" are matched. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stale prefix-matched node_modules cache causes knip (inside react-doctor) to fail with "Package subpath './mini' is not defined by exports in zod/package.json" when bun.lock changes. The stale node_modules has top-level zod@3.x but knip needs nested zod@4.x. Fix: only cache ~/.bun/install/cache (package download cache), not node_modules. bun install rebuilds node_modules from scratch each time, ensuring correct nested dependency structures. Minimal perf impact since downloaded packages are still cached. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Automatically prunes GitHub Actions caches when branches are deleted. Console repo has 51 cache entries (8.4 GB), many from stale merged branches. This prevents cache bloat from accumulating. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- cleanup-branch-cache: use blacksmith-2vcpu-ubuntu-2404 for consistency with rest of repo - cleanup-branch-cache: add per_page: 100 to getActionsCacheList to be explicit about pagination limit - frontend-verify: use unquoted shard format [1/2, 2/2] for consistency with test-integration matrix Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
00c7923 to
33fb769
Compare
|
@claude review |
|
Claude finished @malinskibeniamin's task in 1m 30s —— View job Code Review
All three items flagged in the previous review have been addressed. Here's the full verification pass. Previous feedback — resolved ✓
Remaining informational notes (no action required)
Pre-existing artifact naming issue ( Docker double-build: covered in the previous review — still a known tradeoff of per-variant sharding. The Playwright test-time reduction is the dominant gain.
|
|
@claude review |
|
Claude finished @malinskibeniamin's task in 52s —— View job Code Review
This is a third pass over the same PR. All previously raised issues remain addressed — no regressions introduced by the latest commits. Full verification
Notes carried from previous reviews (informational, no action needed)
Docker double-build: each CI shard pre-builds the backend image independently. Known tradeoff; Playwright execution time saving still dominates. No new issues found. This is clean and ready to merge. |
The shard value (1/2) contains a slash which produces awkward artifact paths. Use job-index (0-based integer) like the e2e-test job does. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GitHub auto-evicts caches after 7 days of no access and has a 10 GB per-repo limit. Console's 8.4 GB cache is not large enough to warrant a custom cleanup workflow. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
repository-dispatchandfrontend-react-doctorworkflowsquota-display.spec.tstest (exact regex match)node_modules)cleanup-branch-cacheworkflow to prune caches on branch deletionContext
30-day Blacksmith CI analysis across
redpanda-dataorg. Companion PR with cloudv2 changes: redpanda-data/cloudv2#25518Changes
Concurrency groups
Added
cancel-in-progress: truetorepository-dispatch.ymlandfrontend-react-doctor.yml. When a new push arrives on the same branch, in-flight runs cancel instead of completing on superseded commits.E2E sharding (
frontend-verify.yml)Uses Playwright
--shardflag. Scales to 4+ shards as test count grows.Flaky test fix (
quota-display.spec.ts)hasText: '100'substring-matched both the quota name cell (containing "100" in timestamp) and the value cell → strict mode violation. Fixed with regex/^100$/.React Doctor cache fix (
frontend-react-doctor.yml)Stale prefix-matched
node_modulescache causedknip(inside react-doctor) to resolve wrongzodversion. Removednode_modulesfrom cache path — only cache~/.bun/install/cache.Cache cleanup (
cleanup-branch-cache.yml)Automatically deletes GitHub Actions caches when branches are deleted. Console has 51 cache entries (8.4 GB), many from stale merged branches. Uses Blacksmith runner for consistency,
per_page: 100for explicit pagination.Test plan
🤖 Generated with Claude Code