Repository navigation
Build changed packages on pull requests with the release builder's container - #388
Closed
spencerbull wants to merge 1 commit into
Closed
spencerbull wants to merge 1 commit into
spencerbull wants to merge 1 commit into
Conversation
…ntainer A package could reach master with nothing but self-tests having run, and the first time its dependencies were resolved inside the channel's container was the release build. claude-desktop (omacom#348) was reviewed on bare makepkg, which never resolves dependencies on a machine that already has them, and then failed its first rc release build. A plan job diffs pkgbuilds/ against the base and asks package_builds_for_mirror which mirrors each changed package ships to, so the policy stays in one helper. A matrix job then runs bin/build per mirror for x86_64, the same command and container the release builder uses. Package names are validated and passed through env rather than interpolated into a script, because a pull request chooses its own directory names. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 package can reach master with only the self-tests having run, so the first time its dependencies are resolved inside the channel's container is the release build. claude-desktop (#348) was reviewed on bare
makepkgon a machine that already had every dependency installed, which provespackage()and the artifact and nothing about resolution, and then failed its firstrcrelease build on "Could not resolve all dependencies" while the same commit shipped to edge and stable. Whether that failure was the package or the builder could only be answered by running the real thing, and nothing had.This adds a workflow with two jobs.
plandiffspkgbuilds/against the base and askspackage_builds_for_mirror— the same helper the release builder uses — which mirrors each changed package ships to, so ring and channel policy stays in one place: edge always, rc and stable forrelease_ring: fast, pinned packages to edge only.buildthen runsbin/build --package … --mirror … --arch x86_64per mirror as a matrix, the same command and container the release builder runs. A pull request chooses its own directory names, so names are validated against^[a-z0-9@._+-]+$and handed to the build step throughenv, never interpolated into a script. With nothing changed underpkgbuilds/, the plan is empty and the build job is skipped in seconds, so the check is always present.workflow_dispatchtakes an explicit package list for rebuilding on demand.x86_64 only: an emulated aarch64 build of a half-gigabyte Electron tree is not a check anyone would wait for, and #171 covers native ARM runners. The proof is a run of this workflow on a fork against a touched claude-desktop, where edge, rc and stable each built in six to seven minutes on
ubuntu-latest: https://github.com/spencerbull/omarchy-pkgs/actions/runs/34531142335🤖 Generated by Fable 5 in Claude Code.