Repository navigation
perf(ci): fewer plumbing jobs, routed by matrix-mode (csharp-ci, scala-ci) - #42
Merged
Merged
Conversation
… route plumbing jobs by matrix-mode
…ke PR comment non-fatal
monsieurleberre
marked this pull request as ready for review
September 29, 2026 10:58
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4d14c2a364
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
With
CI_MATRIX_MODE=cheapthe heavy legs run on["self-hosted","hetzner"], butcsharp-ci/scala-cistill runnormalize matrix,coverage-output,matrix-outputandmatrix-commenton hard-codedubuntu-latest. Each takes ~6 s and is billed as a full minute; they are now the bulk of the remaining billed minutes (~40/day for canton-dotnet-sdk-internal alone, itsjvm-helper-cicall isscala-ci).What
csharp-ci,scala-ci):matrix-outputandmatrix-commentare folded intocoverage-output. Plumbing jobs per run: 4 -> 2 (normalize matrix,coverage-output). The build matrix cannot be computed without a job, sonormalize matrixstays.plumbing-runner(label or JSON array, default empty). Empty follows the existing switch:matrix-mode/CI_MATRIX_MODE==cheapandgithub.event.repository.private == true->["self-hosted","hetzner"]; anything else ->ubuntu-latest(today's behaviour). Public repos never reach self-hosted (same guarantee ascheapmatrix, fail-safe when the field is absent).csharp-ci'spackjob uses the same selection.scripts/render_matrix_comment.pygets an optional runner-name arg so the merged job (whose display name is no longer unique perartifact-prefix) can still find itself when csharp and scala run in one caller run. Tests added (65 pass).Job inventory (hard-coded GitHub-hosted, before -> after)
Not touched:
build-and-test(matrix runner),go-ci/terraform-ci(alreadyruns-oninput),update-badges(see below),csharp-publish-public(release path, deliberately hosted), this repo's ownbuild-and-test.yamlresolve runner(self-lint only).Compat argument
coverage/matrix-statusunchanged (now sourced fromcoverage-output). Secrets unchanged.coverage-outputkept, becausepeacefulstudio/canton-ledger-api-csharp-internalrequirescsharp-ci / coverage-outputondev.matrix-output/matrix-comment (<prefix>)disappear; I found no ruleset or branch protection requiring them (checked all consumer repos I can read;gate-style aggregators useneedson the call).coverage-outputruns on!cancelled()(wassuccess()); after a failed shard it now succeeds with emptycoverage(the call still fails throughbuild-and-test), and skipped/success both satisfy required checks. Coverage-missing error is raised after both outputs are written somatrix-statusis still emitted. PR comment: same header, same conditions, now the last steps ofcoverage-output; if it fails it fails the job (as before it failed the call).actions: read+pull-requests: write; callers already had to grant these (the oldmatrix-commentrequested them unconditionally).CI_MATRIX_MODE=cheap(ormatrix-mode: cheap) now get plumbing on Hetzner automatically. Escape hatch:plumbing-runner: ubuntu-latest.Consumers (all pin
@v2moving tag)csharp-ci: bosun, budget, canton-dotnet-sdk-internal, canton-dotnet-sdk-mini-demo-{internal,public}, canton-ledger-api-csharp-{internal,public}, canton-localnet{,-internal,-public}, daml-codegen-csharp-{internal,public}, dotnet-extensions-internal, nuget-skills. scala-ci: canton-dotnet-sdk-internal (as
jvm-helper-ci), daml-codegen-csharp-{internal,public}. (Found via local checkouts + code search; search index can lag.)Not verified live
actionlint is clean and unit tests pass, but nothing exercises
runs-onexpression / the merged job on real runners yet. Per CONTRIBUTING, please integration-test via a draft PR in a consumer pointing at this branch (e.g. canton-dotnet-sdk-internalcsharp-ci/scala-ci@perf/plumbing-jobs-on-cheap-runner) before releasing.Release (owner runs; not done here)
Intended version: v2.5.0 (additive input). Floating
v2must move (consumers pin@v2):(Move CHANGELOG
[Unreleased]to[2.5.0]in the release commit as usual.)