Skip to content

ci: seperate workflows and versions for extension and surge#367

Merged
SuperCoolPencil merged 13 commits intomainfrom
seperate-extension
Apr 13, 2026
Merged

ci: seperate workflows and versions for extension and surge#367
SuperCoolPencil merged 13 commits intomainfrom
seperate-extension

Conversation

@SuperCoolPencil
Copy link
Copy Markdown
Member

@SuperCoolPencil SuperCoolPencil commented Apr 13, 2026

Greptile Summary

This PR separates the monolithic CI workflow into distinct pipelines for the core Go binary and the browser extension, adds a new reusable extension-checks.yml called by extension.yml, introduces a dedicated integration.yml, renames build.yml/lint.yml to core-* variants with paths-ignore: extension/**, removes extension zip artifacts from GoReleaser (handled by the new extension release job), and removes several unrelated workflows and tooling scripts.

  • core-build.yml's push.branches trigger is missing paths-ignore: extension/** — extension-only merges to main will needlessly spin up the full 3-OS Go test matrix, inconsistent with core-lint.yml which correctly excludes extension changes on both triggers.
  • close-stale-prs.yml, flaky-tests.yml, analyze.py, and benchmark.py are silently deleted without explanation, bundling unrelated removals into a workflow-separation PR.

Confidence Score: 5/5

Safe to merge — all remaining findings are P2 style/efficiency suggestions with no blocking correctness issues

The structural workflow changes are sound: reusable extension-checks, release job properly guarded with if: startsWith(ext-v), build correctly gated on checks, and GoReleaser decoupled from extension artifacts. The two flagged items are a minor paths-ignore inconsistency on push-to-main and bundled unrelated deletions — neither blocks correct CI behaviour.

.github/workflows/core-build.yml — missing paths-ignore on the push.branches trigger

Important Files Changed

Filename Overview
.github/workflows/extension.yml Refactored to call reusable extension-checks.yml, added release job (guarded by ext-v* if condition), build matrix extended to include edge; paths filter on the push block still applies to tag pushes (previously flagged)
.github/workflows/extension-checks.yml New reusable workflow (workflow_call) extracting lint, type-check, and unit test jobs for the extension; correctly uses contents: read permissions
.github/workflows/core-build.yml Renamed from build.yml; added if-guard on release job to exclude ext-v* tags; pull_request trigger gains paths-ignore: extension/**, but push.branches trigger is missing the same paths-ignore
.github/workflows/core-lint.yml Renamed from lint.yml; paths-ignore: extension/** correctly added to both push and pull_request triggers
.github/workflows/integration.yml New dedicated integration workflow extracted from the old extension.yml; covers both extension and Go backend path filters; integration tests are well-structured
.github/workflows/core-binary-size-compare.yml Renamed; pull-requests: write permission correctly removed since comments are posted by core-binary-size-comment.yml via workflow_run; paths-ignore: extension/** added
.goreleaser.yaml Extension zip artifacts removed from GoReleaser extra_files (now handled by the separate extension release workflow); hook renamed to package-fonts.sh
.github/workflows/benchmark.yml Deleted along with benchmark.py and analyze.py; removal is intentional but unrelated to the stated PR scope
.github/workflows/close-stale-prs.yml Deleted; removal is unrelated to workflow separation and bundles an unrelated change into this PR
analyze.py 1241-line diagnostic log analyzer deleted; removal is unrelated to the stated workflow-separation goal

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Push / PR] -->|ext-v* tag| B[extension.yml]
    A -->|main branch push or PR\nextension/** changes| B
    A -->|workflow_dispatch| B
    A -->|main branch push or PR\nnon-extension changes| C[core-build.yml]
    A -->|v* tag| C

    B --> D[checks job\ncalls extension-checks.yml]
    D --> E[lint]
    D --> F[type-check]
    D --> G[test]
    E & F & G --> H[build matrix\nchrome / firefox / edge]
    H --> I{startsWith\next-v?}
    I -->|yes| J[release job\nsoftprops/action-gh-release]
    I -->|no| K[artifacts uploaded only]

    C --> L[test matrix\nubuntu / macos / windows]
    L --> M{startsWith\nrefs/tags/v?}
    M -->|yes| N[GoReleaser release]
    M -->|no| O[build check only]

    P[extension/** or .go changes] --> Q[integration.yml\nExtension ↔ Backend tests]
Loading

Comments Outside Diff (1)

  1. .goreleaser.yaml, line 19 (link)

    P0 Broken before.hooks path — core release will fail

    scripts/package-release-assets.sh was renamed to scripts/package-fonts.sh in this PR, but the before.hooks entry here was not updated. GoReleaser will try to execute the old path and fail immediately, so every v* tag push will produce a broken release run.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: .goreleaser.yaml
    Line: 19
    
    Comment:
    **Broken `before.hooks` path — core release will fail**
    
    `scripts/package-release-assets.sh` was renamed to `scripts/package-fonts.sh` in this PR, but the `before.hooks` entry here was not updated. GoReleaser will try to execute the old path and fail immediately, so every `v*` tag push will produce a broken release run.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: .github/workflows/core-build.yml
Line: 5-11

Comment:
**Missing `paths-ignore` on `push.branches` trigger**

`paths-ignore: extension/**` was added for `pull_request` but not for `push.branches: [main]`. When an extension-only PR is merged to `main`, this workflow will still spin up the full 3-OS Go test matrix unnecessarily. `core-lint.yml` was updated consistently on both triggers — the same fix should apply here.

```suggestion
  push:
    branches:
      - main
    paths-ignore:
      - "extension/**"
    tags:
      - "v*"
      - "!ext-v*"
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: .github/workflows/close-stale-prs.yml
Line: 1

Comment:
**Unrelated deletions bundled with workflow-separation changes**

`close-stale-prs.yml`, `flaky-tests.yml`, `analyze.py`, and `benchmark.py` (along with `benchmark.yml`) are all removed in this PR, but none of these are related to separating extension and surge CI pipelines. Mixing functional removals (stale-PR automation, flaky-test detection, diagnostic tooling) with a structural refactor makes the diff harder to review and harder to revert cleanly if any part needs to be rolled back.

**Rule Used:** What: Flag commits that bundle unnecessary changes... ([source](https://app.greptile.com/review/custom-context?memory=74a28159-60fc-4201-a661-331594ebaf90))

How can I resolve this? If you propose a fix, please make it concise.

Reviews (6): Last reviewed commit: "chore: update workflow concurrency setti..." | Re-trigger Greptile

Context used:

  • Rule used - What: Flag commits that bundle unnecessary changes... (source)

Comment thread .github/workflows/extension-ci.yml Outdated
Comment thread .github/workflows/extension-checks.yml
Comment thread .github/workflows/core-build.yml
Comment thread internal/tui/constants.go
Comment thread .github/workflows/extension-checks.yml Fixed
Comment thread .github/workflows/extension-checks.yml Fixed
Comment thread .github/workflows/extension-checks.yml Fixed
Comment thread .github/workflows/extension.yml
Comment thread .github/workflows/extension.yml
@SuperCoolPencil SuperCoolPencil merged commit efe0575 into main Apr 13, 2026
23 checks passed
@SuperCoolPencil SuperCoolPencil deleted the seperate-extension branch April 13, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants