ci(nightly): the prepared-app upload sends 32 artifact blocks at a time, not 5
Signing waits on prepare-nightly-variant-primary's end, and its last step uploads the prepared app (346 MB in run 41485637444). When the build job places the preparation on a dedicated nightly Mac, that upload ran at upload-artifact's default of 5 blocks at a time: 65-156 s, median 85 s, over 21 runs (41455121554 to 41488515134). On the same Macs, the 413 MB unsigned-app upload in build-nightly-app has sent 32 blocks at a time since #32343 and takes a median 53 s across 24 runs.
This PR puts the same ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: "32" anchor (*artifact-upload-concurrency) on "Upload prepared app for signing". The fallback leg prepare-nightly-variant uses that step by alias, so it gets the setting too. Artifact name, path, compression level 0, retention and step order are unchanged. A test in tests/test_nightly_stop_if_publish_doomed.py pins the setting on both legs. It fails without the workflow change and passes with it.
The change only matters when the preparation runs on a Mac. On the Linux overflow route the upload already takes 3 s (runs 41480007529, 41490937436 and 41492012856).
Performance
| metric | before | after | delta | harness or run link |
|---|---|---|---|---|
| "Upload prepared app for signing", Mac route (median of 21) | 85 s | ~45 s (expected: 346 MB at the ~7.8 MB/s the 32-block unsigned upload reaches on the same Macs) | ~-40 s | runs 41455121554-41488515134; 41485637444 took 126 s |
| same, Mac route (slowest of 21) | 156 s | ~60 s (expected) | ~-95 s | run 41478567483 |
| prepare-nightly-variant-primary job, Mac route (median of 21) | 202 s | ~162 s (expected) | ~-40 s | same runs |
| same, Linux overflow route | 45 s | 45 s | 0 | runs 41480007529, 41490937436, 41492012856 |
| Blacksmith minutes per day | unchanged | unchanged | 0 | no routing change |
The "after" numbers are estimates. The next nightly-next run whose preparation lands on a Mac measures them.
Tests
python3 -m unittest tests.test_nightly_stop_if_publish_doomed: fails without the workflow change (2 errors), passes with ittests.test_nightly_step_coverage,test_nightly_background_steps,test_nightly_workflow_size,test_nightly_trusted_routing,test_ci_nightly_off_blacksmith,tests/test_nightly_sign_shadow_workflow.py,tests/test_ci_self_hosted_guard.sh: pass
Agent session: agent session
š¤ Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith Ā· Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Speeds up the nightly prepared-app upload on Mac runners by sending 32 artifact blocks at a time instead of the default 5. Reuses the same *artifact-upload-concurrency anchor as the unsigned-app upload; the fallback leg prepare-nightly-variant shares the step by alias and inherits it too. Artifact name, path, compression level 0 and retention are unchanged.
Performance
- On a dedicated nightly Mac, the 346 MB upload drops from a median 85 s (65ā156 s across 21 runs) to an estimated ~45 s; the slowest run drops from 156 s to ~60 s.
- The Linux overflow route (3 s) and Blacksmith minutes are unaffected.
Tests
test_prepared_app_upload_sends_blocks_in_parallelpinsACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: "32"andcompression-level: 0on both legs and fails without the workflow change.