Repository navigation
Give the Makefile a target for every build step CI runs - #590
Merged
Merged
Conversation
Cover the commands the workflow runs itself, so that each one has a single definition the two can share rather than two copies. - Split the dependency build out as `deps`, the half of `pre-build` that CI needs, having checked out the submodules already - Add `all-tests` for the wider test step CI runs today, and let both test targets write the result bundle it reads screenshots from - Add `package-signed`, exporting where CI wants the app and packing the zip it uploads, leaving `dmg-signed` as the archive plus that - Keep the packaging clear of the archive, so a caller that has archived already does not pay for a second one The header claimed these targets mirror the workflow, which had already stopped being true: the UI test target runs only the UI tests while CI runs the whole scheme. It now names which target matches which step, and which one to reach for otherwise.
Send the message to the terminal rather than handing it to tee as two more files to write. - Print the message on its own line, after the submission is logged tee takes every argument after the first as another output file, so the words meant for the log were creating files named after themselves and nothing was printed.
Write the signing options to the path the step already computes, and read them back from it. - Expand the variable when redirecting into it and when passing it to xcodebuild Both halves left the dollar sign off, so the options landed in a file named after the variable and the export read that same name back. It worked by accident, while the path meant to hold them went unused.
goneng
force-pushed
the
match-makefile-to-ci-steps
branch
from
August 23, 2026 23:22
59db785 to
77f5aa5
Compare
goneng
marked this pull request as ready for review
August 24, 2026 08:45
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.
Cover the commands the workflow runs itself, so that each one has a
single definition the Makefile and CI can share rather than two copies
that drift apart.
deps, the half ofpre-buildthat CI needs, having checked out the submodules already
all-testsfor the wider test step CI runs today, and let bothtest targets write the result bundle it reads screenshots from
package-signed, exporting where CI wants the app and packingthe zip it uploads, without archiving a second time to do it
Nothing calls these yet; this only makes the targets able to stand in.
Switching the workflow over is #591, so it can be weighed on its own.
What changes in the target graph
Before:
After, with the three new targets shaded:
Two of the three are extractions rather than new work:
depsandpackage-signedwere already there as inline recipe lines inside
pre-buildanddmg-signed.Naming them lets a caller attach below those parents, which is what CI needs,
having checked out the submodules through its own step and built the archive in another.
A CI step calling
dmg-signedwould archive a second time per architecture.package-signedhangs offdmg-signedby a dotted edge because it is not a prerequisite:the recipe calls it through
$(MAKE), so it cannot start before the archive has finishedeven under
make -j.all-testsis the odd one out, a sibling ofui-testrather than an extraction, andexists only because CI's test step runs the whole scheme.
The header claimed the targets already mirrored the workflow, which had stopped being true:
ui-testruns only the UI tests while CI's step runs the whole scheme.It now names which target matches which step, and which one to prefer otherwise.
Two unrelated mistakes in the workflow are fixed along the way, each in its own commit.
Both worked by accident, so neither changes what CI does:
holding their path, and read back under that same literal name
teeas two morefiles to write, so it created files named after itself and printed nothing
Test plan:
make unit-test ARCH=arm64is green, 42/42make all-tests ARCH=arm64 RESULT_BUNDLE=<path>is green and writes the bundle,running the unit suites and
GitXScreenshotTestsmake -nfordeps,archive,package-signedanddmg-signedreproduces the commands the matching CI steps run today, with CI's own paths,
and
package-signedruns xcodebuild once rather than archiving againchanges need signing secrets, so they are read rather than run