Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
# so .package.resolved changes with the Xcode major version. Use the same Xcode as local
# builds and releases. GitHub marks this image as a preview until a macos-27 label exists.
runs-on: xcode-27
# A green run takes 6 to 11 minutes, and a cold App build takes 11 to 17. The test
# A green run takes 6 to 11 minutes, and a cold App build takes 11 to 22. The test
# watchdog stops a hung test run sooner; this limit stops anything else that hangs. Without
# it the default is 6 hours, so a stuck run had to be cancelled by hand.
timeout-minutes: 45
Expand Down
19 changes: 14 additions & 5 deletions docs-ai/016-dev-build-and-ci-workflow/012-lighter-build-job.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,24 @@ The hosted runner varies a lot. Compare several samples, not two runs.
| Case | `build` job samples |
| --- | --- |
| Interface change, before this work | 11:50 (one sample) |
| Interface change, with this work | 8:49, 10:41, 9:52, 9:08 |
| Cold App build, with this work | 17:04, 10:36 |
| Body change, before this work | 8:44 (one sample) |
| Body change, with main's new caches | 5:36, 6:47 |
| Interface change, with main's new caches | 9:20, 8:41 |
| Interface change, trial with the package and CLI caches of the pull request | 8:49, 10:41, 9:52, 9:08 |
| Version change, with main's new caches | 8:55 (one sample) |
| Cold App build | 10:36, 17:04, 21:40 |

The 21:40 sample also had no CLI cache and restored the 1467 MB package entry.

## Open questions

- A body-only change on the runner, after main saves the new entries, has no sample yet.
- A change to the App interface recompiles all of `ProwlTests`. A split of the App into modules
is the remaining way to avoid this. It has not been measured.
is the remaining way to avoid this. In the last 30 days, most changed App files were in
`App/Sources/Features`, so the split helps only if each feature has its own test target. It has
not been measured.
- A larger hosted runner may reduce the runner's variation. It costs money per minute and has not
been measured.

## Refs

PR #1024 (trial, not merged).
PR #1026; trials #1024 and #1027 (not merged).
Loading