-
Notifications
You must be signed in to change notification settings - Fork 248
Description
For which library do you need help?
native-federation
Question
Hello,
We’re running into a version‑management challenge in a large micro‑frontend ecosystem built with Angular’s native federation. The ecosystem consists of:
• Quell Core – the source of truth https://github.com/rollthecloudinc/quell
• Spearhead distributions – host applications https://github.com/rollthecloudinc/spearhead
• SOLIDs – independent Angular MFEs loaded at runtime as plugins https://github.com/rollthecloudinc/solid
- Example of a solid: https://github.com/rollthecloudinc/solid-quill
All of these depend directly on Quell Core and share the same Angular and library versions. For compatibility, every Core release requires every SOLID and every distribution to be rebuilt using the exact same dependency versions. Today that process is entirely manual.
The Problem
- When Quell Core is updated, all SOLIDs and distributions must also update their dependency versions to match.
- SOLIDs need new versioned build folders (immutable per Core version).
- Distributions need new Git tags.
- Every build must publish to GitHub Pages or GitHub Packages.
- Maintaining this manually across many repos is error‑prone and doesn’t scale.
Proposed Solution
Use a GitHub‑native automated release workflow that triggers from Core:
- A new Quell Core release fires a repository_dispatch to dependent repos.
- A reusable GitHub Action updates dependency versions, rebuilds each repo, and publishes outputs.
- SOLIDs publish new versioned build folders (per‑Core immutable).
- Distributions publish new tagged releases.
- All shared library versions remain strictly aligned across the ecosystem.
┌─────────────────────┐
│ Quell Core │
│ (source of truth) │
└──────────┬──────────┘
│
│ New Core Release
▼
┌──────────────────────────┐
│ GitHub Action in Core │
│ triggers repo_dispatch │
└──────────┬──────────────┘
│
┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌──────────────┐ ┌────────────────┐
│ SOLID │ │ SOLID │ │ SOLID │
│ Plugin A │ │ Plugin B │ │ Plugin N │
└─────┬──────┘ └──────┬───────┘ └───────┬────────┘
│ │ │
│ Auto‑update deps │ Auto‑update deps │ Auto‑update deps
│ Rebuild │ Rebuild │ Rebuild
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Versioned │ │ Versioned │ │ Versioned │
│ Release Folder│ │ Release Folder│ │ Release Folder│
└──────────────┘ └──────────────┘ └──────────────┘
(Parallel)
▼
┌────────────────────────┐
│ Spearhead Distributions│
│ (docs, blog, etc.) │
└──────────┬─────────────┘
│
│ Auto‑update deps
│ Rebuild
▼
┌────────────────────────┐
│ Release Tag per Core │
│ (no folders needed) │
└────────────────────────┘
Flow summary
• Quell Core releases a new version.
• Core triggers dependent repos using GitHub’s repository_dispatch.
• Each SOLID rebuilds into a new versioned folder (immutable per Core version).
• Each distribution rebuilds and publishes a new Git tag.
• Shared dependency versions remain aligned automatically.
Does this sound like anything that has been thought through or built already?
Interested in more of the conversation available here: rollthecloudinc/hedge#381