Build a revision once, not once per repository - #175
Merged
Conversation
A push to master here fires the announcement, and autobuilds describes that revision, builds the lock through this repository's own reusable workflow, and publishes what comes out. Since the hand-written matrix went, the build this workflow runs on such a push is the same lock, the same ten legs and the same code -- done twice, at the same time, in two repositories. It was worth having when the two were different paths, because two paths give two signals. They are one path now, so the second run is only cost: four full builds were in flight at once this afternoon, half of them copies. The build stays on every pull request, which is where it is the signal that decides whether something merges. On master the signal is the autobuilds run, and that one also says whether the revision is releasable, which this one never could.
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.
A push to master here fires
dispatch-build.yml, andautobuildsthen describes that revision, builds the lock through this repository's ownbuild-sdk.yml, and publishes what comes out.Since #173 removed the hand-written matrix, the build this workflow runs on that same push is the same lock, the same ten legs, the same code. Twice, at the same time, in two repositories.
That was worth having while the two were different paths — two paths give two signals, and the gap between them is exactly what #173 was about. They are one path now, so the second run is only cost. Four full builds were in flight at once this afternoon:
buildscriptsmasterBuild93a4d9a23autobuildsBuild SDK snapshots(announced)93a4d9a23buildscripts#174Buildbuildscripts#170BuildHalf of that is a copy of the other half.
What changes
Only a push to master. Every pull request still builds — that is where the build is the signal that decides whether something merges, and it is the only place this workflow's build ever was one. A push to a branch with no pull request open still builds too.
On master the signal moves to the autobuilds run, which is strictly the better one: it applies the required-host policy and says whether the revision is releasable, which this workflow could never do.
package-testsneedsbuild, so it follows it. Everything that reaches master reaches it through a pull request that ran both. The exception is the pin bot, which pushes to master directly — and a pin bump changes no packaging script, whilechecksstill runs on every push either way.Test
tests/ci/test-single-matrix.shgains the question, evaluated rather than matched as text — a small reader for the subset of the expression language a job condition uses, then:Against
master'sbuild.ymlit says so:All 9 CI tests and 6 protocol tests pass;
actionlintis clean.AI tools were used in preparing this PR (Claude Opus 5, Anthropic).