feat(coordinator): add extension seam#3532
Conversation
Squash all changes from feat/coordinator-extension-seam onto latest main: introduces a CoordinatorExtension seam/API, parameterizes the coordinator image/jar/artifact name in compose and the reusable e2e workflow, and derives the e2e monorepo checkout ref from the workflow_ref for cross-repo calls. Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
e3d4677 to
3ce8baf
Compare
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR adds an extension seam for the Kotlin coordinator so downstream distributions can plug in additional long-running services and JSON-RPC methods, and updates local Docker + CI E2E wiring to parameterize coordinator image/jar/artifact naming and to support cross-repo reusable workflow calls.
Changes:
- Introduces
coordinator:extensions-apiwithCoordinatorExtensionFactory/CoordinatorExtension/CoordinatorContext, and wiresCoordinatorApp+Apito merge extension JSON-RPC handlers (with core-method clash detection). - Parameterizes coordinator Docker image name and launched JAR in compose via
LINEA_COORDINATOR_IMAGE_NAMEandLINEA_COORDINATOR_JAR(mapped toCOORDINATOR_JAR). - Refactors reusable E2E workflow to use a composite action, derive monorepo checkout ref from
workflow_reffor cross-repo calls, and pass through coordinator image/jar/artifact inputs.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
settings.gradle |
Adds the new coordinator:extensions-api Gradle module to the build. |
docker/compose-spec-l2-services.yml |
Parameterizes coordinator image name and JAR selection via env vars. |
coordinator/extensions-api/src/main/kotlin/linea/coordinator/extensions/CoordinatorExtension.kt |
Defines the extension seam API (context, extension, factory with NOOP default). |
coordinator/extensions-api/build.gradle |
Declares the extension API module and its allowed dependencies. |
coordinator/app/src/main/kotlin/linea/coordinator/app/CoordinatorApp.kt |
Resolves extensions early, starts/stops extension services, and passes extra JSON-RPC handlers to Api. |
coordinator/app/src/main/kotlin/linea/coordinator/api/Api.kt |
Merges extension JSON-RPC handlers into the router and fails fast on core-method clashes. |
coordinator/app/build.gradle |
Adds dependency on :coordinator:extensions-api. |
.github/workflows/reusable-run-e2e-tests.yml |
Moves E2E logic into a composite action; adds inputs for coordinator image/jar/artifact and configurable runner. |
.github/actions/setup-nodejs/action.yml |
Adds working-directory support for node/pnpm setup and caching paths. |
.github/actions/run-e2e-tests/action.yml |
Adds a composite action encapsulating E2E environment setup, artifact image loading, and test execution. |
| @@ -144,153 +129,23 @@ jobs: | |||
| with: | |||
| repository: LFDT-Lineth/lineth-monorepo | |||
There was a problem hiding this comment.
If we move it to the inputs, can we delete this file completely and use .github/actions/run-e2e-tests/action.yml instead?
There was a problem hiding this comment.
You mean removing .github/workflows/reusable-run-e2e-tests.yml ?
That would loose the ability of running the e2e manually. Usefull sometimes for debugging ...
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Summary
feat/coordinator-extension-seaminto a single commit rebased onto latestmainCoordinatorExtensionseam/APIdocker-composeand the reusable e2e workflowworkflow_reffor cross-repo callsTest plan
Note
Medium Risk
Touches coordinator lifecycle and JSON-RPC routing (startup order and handler merge), plus CI/docker paths that gate e2e; defaults preserve OSS behavior but misconfigured enterprise image/JAR env vars could break local or cross-repo e2e runs.
Overview
Adds a coordinator extension seam so enterprise builds can plug in extra long-running services and JSON-RPC methods on shared Vertx, metrics, and DB. New
coordinator:extensions-apidefinesCoordinatorContext,CoordinatorExtension, andCoordinatorExtensionFactory(default NOOP);CoordinatorAppwires factory-created extensions into startup/shutdown and merges handlers intoApiwith a clash guard on core method names.Docker / e2e now parameterize the coordinator via
LINEA_COORDINATOR_IMAGE_NAME,LINEA_COORDINATOR_JAR, and configurable artifact name prefix. Reusable e2e logic moves into composite action run-e2e-tests (artifact load, tag env,make retryfor stack bring-up); setup-nodejs gainsworking-directory. Makefile adds a portableretrytarget (perl alarm) used by CI env startup.E2e image loading no longer falls back to pulling
developwhen an artifact is missing—missing artifacts are skipped and tags default todeveloponly when unset.Reviewed by Cursor Bugbot for commit 6a428f3. Bugbot is set up for automated code reviews on this repo. Configure here.