ci(nightly): the prepared-app upload sends 32 artifact blocks at a time, not 5

Merged
TE
4d ago
+12-0

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

metricbeforeafterdeltaharness 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 sruns 41455121554-41488515134; 41485637444 took 126 s
same, Mac route (slowest of 21)156 s~60 s (expected)~-95 srun 41478567483
prepare-nightly-variant-primary job, Mac route (median of 21)202 s~162 s (expected)~-40 ssame runs
same, Linux overflow route45 s45 s0runs 41480007529, 41490937436, 41492012856
Blacksmith minutes per dayunchangedunchanged0no 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 it
  • tests.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
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_parallel pins ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: "32" and compression-level: 0 on both legs and fails without the workflow change.