Align prerelease dry-run signing requirements

Keep macOS notarization mandatory for every release candidate while requiring Windows Authenticode only for stable promotion, matching the publish workflow and RC4 release packet.
This commit is contained in:
rcourtman
2026-07-21 09:17:39 +01:00
parent 4f6179368a
commit ea664843ba
3 changed files with 11 additions and 5 deletions
+1 -1
View File
@@ -69,7 +69,7 @@ jobs:
with:
version: ${{ inputs.version }}
require_macos_signing: true
require_windows_signing: true
require_windows_signing: ${{ !contains(inputs.version, '-') }}
dry-run:
name: Preflight Release Checks (No Publish)
@@ -376,9 +376,15 @@ TLS floor in the dynamic config.
to per-entry archive streaming.
A manually dispatched release rehearsal must activate the same signed
candidate build whenever its required `version` input is non-empty and must
require the same macOS notarization and Windows Authenticode lanes as a
publish run. A cheap signing-configuration job must report every missing
repository secret before either platform runner is allocated.
apply the same channel-specific native-signing policy as a publish run.
macOS notarization remains mandatory for both prerelease and stable
candidates. Windows Authenticode remains mandatory for stable candidates;
prerelease candidates may retain checksum and detached-signature
verification without Authenticode while the release packet explicitly
discloses the unknown-publisher warning and stable promotion remains
blocked. A cheap signing-configuration job must report every missing secret
for the platforms required by that candidate before either platform runner
is allocated.
macOS command-line agent notarization must fail closed unless
`notarytool --wait --output-format json` reports `Accepted`, then verify the
exact candidate bytes with strict `codesign`. Bare Mach-O command-line
@@ -487,7 +487,7 @@ class ReleasePromotionPolicyTest(unittest.TestCase):
self.assertIn("build_release_candidate:", workflow)
self.assertIn("if: ${{ inputs.version != '' }}", workflow)
self.assertIn("require_macos_signing: true", workflow)
self.assertIn("require_windows_signing: true", workflow)
self.assertIn("require_windows_signing: ${{ !contains(inputs.version, '-') }}", workflow)
self.assertNotIn("if: ${{ github.event_name == 'workflow_dispatch' }}", workflow)
self.assertIn("record_rc_to_ga_rehearsal.py --run-id ${{ github.run_id }}", workflow)
self.assertIn("rc-to-ga-promotion-readiness-rehearsal-<record-date>.md", workflow)