diff --git a/.github/workflows/fleet-e2e.yaml b/.github/workflows/fleet-e2e.yaml index ec96e403..66f37da2 100644 --- a/.github/workflows/fleet-e2e.yaml +++ b/.github/workflows/fleet-e2e.yaml @@ -251,7 +251,7 @@ jobs: PRIMARY_REPO="primary" DEPENDENTS="artifact-a artifact-b" HEAVY_REPO="4env" - REMAINDER="3env 2env single-env release-only no-env callbacks rollback-dispatch" + REMAINDER="3env 2env single-env release-only no-env callbacks rollback-dispatch monorepo" # ------------------------------------------------------------------- RAW="${REPOS_INPUT:-all}" @@ -503,7 +503,7 @@ jobs: echo "| primary | $R_PRIMARY |" echo "| dependents (artifact-a, artifact-b) | $R_DEPENDENTS |" echo "| 4env (heavy, alone) | $R_HEAVY |" - echo "| remainder (3env, 2env, single-env, release-only, no-env, callbacks, rollback-dispatch) | $R_REMAINDER |" + echo "| remainder (3env, 2env, single-env, release-only, no-env, callbacks, rollback-dispatch, monorepo) | $R_REMAINDER |" echo "" echo "> rc gate: this conclusion is the fleet validation signal for" echo "> the rc tag. The repin job re-stamped every example repo onto" diff --git a/.github/workflows/suite-bootstrap-pin.yaml b/.github/workflows/suite-bootstrap-pin.yaml index 0c3e1f86..8d5cbd2e 100644 --- a/.github/workflows/suite-bootstrap-pin.yaml +++ b/.github/workflows/suite-bootstrap-pin.yaml @@ -36,7 +36,7 @@ permissions: concurrency: # One bump at a time, and do not cancel an in-flight bump: each targets a - # specific release and pushes to eleven external repos, so a later release + # specific release and pushes to twelve external repos, so a later release # queues behind an earlier one rather than interrupting it mid-fan-out. group: suite-bootstrap-pin cancel-in-progress: false @@ -134,10 +134,10 @@ jobs: run: | set -euo pipefail - # The full roster of eleven example repos. Every repo whose suite + # The full roster of twelve example repos. Every repo whose suite # bootstraps a pinned cascade CLI belongs here; keep it in sync with # the fleet repin roster in fleet-e2e.yaml. - REPOS="primary artifact-a artifact-b 4env 3env 2env single-env release-only no-env callbacks rollback-dispatch" + REPOS="primary artifact-a artifact-b 4env 3env 2env single-env release-only no-env callbacks rollback-dispatch monorepo" # Repos whose main rejects a direct push (branch protection requires a # PR). These take the PR path up front. Any OTHER repo that diff --git a/.github/workflows/suite-rc-repin.yaml b/.github/workflows/suite-rc-repin.yaml index 3156ab16..c2c9d1f6 100644 --- a/.github/workflows/suite-rc-repin.yaml +++ b/.github/workflows/suite-rc-repin.yaml @@ -161,7 +161,7 @@ jobs: # push only if something changed. Every hand-written suite feature is # preserved: regeneration only rewrites the generated workflows, and # nothing else is touched. - REPOS="primary artifact-a artifact-b 4env 3env 2env single-env release-only no-env callbacks rollback-dispatch" + REPOS="primary artifact-a artifact-b 4env 3env 2env single-env release-only no-env callbacks rollback-dispatch monorepo" # Apply the repin mutation to the checkout in the current directory: # point cli_version at the rc, rewrite any other in-repo rc refs, then diff --git a/docs/src/content/docs/internals/release-orchestration.md b/docs/src/content/docs/internals/release-orchestration.md index 4b7d1f7a..0e85aaad 100644 --- a/docs/src/content/docs/internals/release-orchestration.md +++ b/docs/src/content/docs/internals/release-orchestration.md @@ -49,7 +49,7 @@ flowchart LR | `primary` | Runs first and must pass before its dependents start. | | `dependents` | `artifact-a` and `artifact-b` mutate the primary's shared external state, so they run only after the primary is green. The two run together, which is the lane that defines the fleet's peak of about two repositories. | | `heavy` | `4env` is the heaviest and most fragile repository, so it runs alone in its own job, sequenced after the dependents lane so the two never stack. | -| `remainder` | The light repositories (`3env`, `2env`, `single-env`, `release-only`, `no-env`, `callbacks`, `rollback-dispatch`) run in a matrix capped at two in flight via `max-parallel`, sequenced after the heavy lane. | +| `remainder` | The light repositories (`3env`, `2env`, `single-env`, `release-only`, `no-env`, `callbacks`, `rollback-dispatch`, `monorepo`) run in a matrix capped at two in flight via `max-parallel`, sequenced after the heavy lane. | | `aggregate` | The Fleet gate. It needs every lane, so a green gate means every selected repository passed. Auto-promote keys off this conclusion. | The fleet triggers on completion of the Release workflow for a release-candidate or diff --git a/docs/src/content/docs/internals/testing.md b/docs/src/content/docs/internals/testing.md index ba023c4a..82fbda22 100644 --- a/docs/src/content/docs/internals/testing.md +++ b/docs/src/content/docs/internals/testing.md @@ -60,6 +60,7 @@ The example repositories span the supported pipeline shapes, so each topology is | `cascade-example-primary` | Primary repository receiving external-update and notify handoffs from satellites | | `cascade-example-artifact-a`, `cascade-example-artifact-b` | Satellite repositories in an artifact-dependency graph that notify the primary | | `cascade-example-rollback-dispatch` | The automated rollback entry point, where a real `repository_dispatch` payload drives a rollback and the reverted state is read back | +| `cascade-example-monorepo` | One repository with several components, each versioned, promoted, hotfixed, and rolled back independently in its own namespace | The `no-environment` library shape is covered today in the act plus gitea harness; the other topologies above are validated in both layers. diff --git a/internal/release/fleet_rc_repin_wiring_test.go b/internal/release/fleet_rc_repin_wiring_test.go index eb8edecf..becdf3a1 100644 --- a/internal/release/fleet_rc_repin_wiring_test.go +++ b/internal/release/fleet_rc_repin_wiring_test.go @@ -117,6 +117,7 @@ func TestSuiteRCRepin_IsReusableAndCoversRoster(t *testing.T) { roster := []string{ "primary", "artifact-a", "artifact-b", "4env", "3env", "2env", "single-env", "release-only", "no-env", "callbacks", "rollback-dispatch", + "monorepo", } // Assert the roster appears as one whitespace-separated REPOS list so a // dropped repo is caught, not merely mentioned somewhere in a comment.