Repository navigation
Run the CI build steps through the Makefile targets - #591
Conversation
7ab4b1c to
4dd22b9
Compare
4dd22b9 to
916ba4b
Compare
|
@hannesa2 one call worth your eye before this leaves draft: the TODO beside the "Run tests" step. Left as it stands, CI keeps running Swapping |
There was a problem hiding this comment.
Pull request overview
Updates the PR build workflow to invoke the existing Makefile targets for dependency setup, testing, archiving, and packaging so CI and local developer builds run the same commands and avoid workflow/Makefile drift.
Changes:
- Replace inline dependency bootstrapping with
make deps. - Replace inline xcodebuild test invocations with
make unit-testandmake all-tests(including result bundle wiring). - Replace inline archive/export/DMG/ZIP packaging commands with
make archiveandmake package-signed, keeping signing/notarization/upload steps as CI concerns.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
916ba4b to
6607cc2
Compare
Call the targets that already define these commands, so that the workflow and a developer's machine run the same thing rather than two copies of it. - Replace the dependency, test, archive and packaging commands with the targets that hold them - Keep the wider test step as it stands, repeated unit tests and all, with a note about narrowing it later - Leave the certificate, notarization and upload steps alone, being the runner's business and not runnable locally A command defined once cannot drift from itself, and a mistake in a target now fails the build that depends on it.
6607cc2 to
87a2b34
Compare
Call the targets that already define these commands, so that the
workflow and a developer's machine run the same thing rather than two
copies of it that drift apart.
the targets that hold them
the runner's business and not runnable locally
The targets these steps call came from #590, now merged, so this is a
single commit against master.
Where CI attaches to the target graph
The same picture as #590, which explains the targets themselves. What
matters here is which nodes the workflow now enters at.
Before:
After, with the three targets #590 adds shaded:
This PR points five steps at
deps,unit-test,all-tests,archiveandpackage-signed. None of them is an aggregate: CI enterslow in the graph every time, while a person keeps using the targets
above them,
pre-build,testanddmg-signed. That is whydepsand
package-signedhad to be split out of their parents at all. CIhas checked the submodules out through its own step and builds the
archive in another, so a step calling
pre-buildwould redo thecheckout and a step calling
dmg-signedwould archive a second timeper architecture.
The duplicate test run is kept, deliberately
CI's "Run tests" step passes no
-only-testing, and the scheme testsevery target, so it runs
GitXTestsa second time after the "Run unittests" step has already run them. This change keeps that exactly as it
is, calling
make all-tests, which is the target written to match it.make ui-testnarrows the run toGitXUITests, which is all thescreenshots need, and would drop the repeat. That is a change to what
CI does rather than to how it says it, so it is left alone here and
marked with a TODO beside the step. Say the word and it is a one-word
edit.
Test plan:
make deps,make unit-test ARCH=arm64andmake archiverunning on therunners
make all-tests ARCH=arm64 RESULT_BUNDLE=<path>is green locally andwrites the bundle, running the unit suites and
GitXScreenshotTestsmake -nfor every converted step reproduces the command that stepruns today, with the same paths
not run on a fork PR and are verified by reading and by
make -nonly