Skip to content

Spike: decouple frontend from default backend build and split CI triggers by surface area - #687

Open
conorheffron with Copilot wants to merge 3 commits into
mainfrom
copilot/move-frontend-code-repo
Open

Spike: decouple frontend from default backend build and split CI triggers by surface area#687
conorheffron with Copilot wants to merge 3 commits into
mainfrom
copilot/move-frontend-code-repo

Conversation

Copilot AI commented May 23, 2026

Copy link
Copy Markdown
Contributor

The repository currently couples UI and server changes in build/deployment flow, increasing unnecessary rebuild scope and slowing isolated delivery. This change spikes a split-friendly model: backend pipelines run independently by default, while frontend packaging remains explicitly opt-in.

  • Build decoupling (Maven)

    • Moved frontend build/bundling (frontend-maven-plugin + static copy step) behind an explicit Maven profile.
    • Backend packaging is now backend-only by default; legacy bundled artifact behavior is preserved via a flag.
  • CI/CD trigger separation

    • Updated maven.yml to ignore frontend-only and frontend-workflow-only changes.
    • Updated node.js.yml to trigger only on frontend/workflow changes.
    • Result: backend and frontend pipelines execute on their own change domains instead of both running for every change.
  • Operational guidance for split-repo transition

    • README now documents:
      • backend-only default packaging
      • opt-in bundled mode for compatibility
      • version-coordination guidance to reduce frontend/backend deploy skew risk
<profile>
  <id>bundle-frontend</id>
  <activation>
    <property>
      <name>bundleFrontend</name>
      <value>true</value>
    </property>
  </activation>
  <!-- frontend build + static asset copy plugins -->
</profile>

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • ads.mozilla.org
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileOYjyzN (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileWG6Q5y (dns block)
  • detectportal.firefox.com
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileOYjyzN (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileWG6Q5y (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)
  • firefox.settings.services.mozilla.com
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileOYjyzN (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileWG6Q5y (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)
  • incoming.telemetry.mozilla.org
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileOYjyzN (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileWG6Q5y (dns block)
  • ironoc.net
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)
  • support.mozilla.org
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileOYjyzN (dns block)
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette --headless --disable-gpu --window-size=1920,1080 -no-remote -profile /tmp/rust_mozprofileWG6Q5y (dns block)
  • www.ironoc.net
    • Triggering command: /usr/lib/firefox/firefox /usr/lib/firefox/firefox --marionette -headless -no-remote -profile /tmp/rust_mozprofile1YV8wj (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Agent-Logs-Url: https://github.com/conorheffron/ironoc/sessions/511e7536-9bb8-42d7-9fef-a6b40123f032

Co-authored-by: conorheffron <8218626+conorheffron@users.noreply.github.com>
Copilot AI changed the title [WIP] Spike: Move frontend code to separate repository and CI/CD process Spike: decouple frontend from default backend build and split CI triggers by surface area May 23, 2026
Copilot AI requested a review from conorheffron May 23, 2026 19:29
@conorheffron
conorheffron requested a review from Copilot May 24, 2026 14:36
@conorheffron conorheffron added ci-infra CI / CD infra tasks dependencies Pull requests that update a dependency file ui-frontend java-be Java / Server Side Tasks labels May 24, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR spikes a split-friendly build/CI model by making backend Maven packaging backend-only by default, while keeping the legacy “bundled frontend into backend artifact” flow available via an explicit opt-in flag. It also updates GitHub Actions triggers so frontend and backend workflows run only when their respective surfaces change.

Changes:

  • Move frontend build + static asset copy Maven plugins behind a bundle-frontend profile activated via -DbundleFrontend=true.
  • Split CI triggers: maven.yml ignores frontend-only/workflow-only changes; node.js.yml runs only for frontend/workflow changes.
  • Update README with new backend-only default build guidance and split-coordination notes.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
README.md Documents backend-only default packaging, opt-in bundled mode, and CI split guidance.
pom.xml Moves frontend build/copy plugins into an opt-in Maven profile.
.github/workflows/node.js.yml Restricts Node CI triggers to frontend and relevant workflow file changes.
.github/workflows/maven.yml Prevents Maven CI from running on frontend-only and frontend-workflow-only changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
Comment on lines +239 to 242
### Build server side (backend only), along with Java Code Coverage report.
```shell
./mvnw clean package -U
```
@conorheffron
conorheffron marked this pull request as ready for review June 7, 2026 06:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-infra CI / CD infra tasks dependencies Pull requests that update a dependency file java-be Java / Server Side Tasks ui-frontend

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

Spike: Move frontend code to separate repository & CI/CD pipeline process

3 participants