ci(signpath): integrate production Windows signing - #1423
Conversation
Codex ReviewVerdict: needs changes [P1] Bake the publisher into updater metadata.github/workflows/build.yml:310 Impact: Stable builds can produce Authenticode-valid installers whose app-update.yml omits publisherName, so auto-updates skip publisher verification. Recommendation: Use the platform-level win.publisherName override and add a check that generated updater metadata contains it. Summary: The Windows build passes the publisher through electron-builder’s signing-tool options, but updater verification reads the platform-level publisher setting. |
|
SignPath no-publish dry-run passed end to end: https://github.com/aipoch/open-science/actions/runs/32228509136 Verified in the run:
The first Windows E2E attempt hit an unrelated Windows temp-file |
Problem
The Windows release build currently emits an unsigned NSIS setup executable. The manual SignPath
test workflow proves that SignPath can sign the outer installer, but stable Release jobs do not yet
finalize the installer through the production policy. Signing also changes installer bytes, which
invalidates electron-builder's original
latest.ymlhash/size and blockmap.Proposed change
complete Windows build artifact before package smoke.
latest.ymlSHA-512/size from the signed installer.signed-Windows certification evidence before publication.
SIGNPATH_WINDOWS_PUBLISHER_NAMEinto the packaged updater configuration throughelectron-builder's
win.signtoolOptions.publisherNameoption.cannot collide with or publish unsigned bytes.
signpath-test.ymlwith the Foundation self-signed test certificate.Scope and non-goals
*-win-x64-setup.exe.micromamba.exeandmicromamba-compat.exeremain unchanged and retain theirexisting archive/binary digest verification.
Acceptance criteria and validation
Final evidence after the last material edit:
vitest run scripts/windows-release-workflows.test.ts-> passed.vitest run scripts/refresh-windows-release-metadata.test.ts-> passed.vitest run scripts/ci/release-certification-evidence.test.ts-> passed.vitest run scripts/electron-builder-config.test.ts-> passed.npm ci --dry-run --ignore-scripts --omit=optional --no-audit --no-fund-> passed (existing peerwarnings only).
unchanged
build.ymlscript lines.git diff --check origin/main...HEADpassed.app-builder-lib@26.15.3.Per maintainer direction, the full local
npm testsuite was not run; exact-head PR CI is theauthority for the complete portable and platform lanes.
Review focus
SIGNPATH_WINDOWS_PUBLISHER_NAME.or temporary-artifact cleanup fails.
latest.ymland gzip blockmap.Uncovered risks
release-signingpolicy and production certificate are not exercised by this PR. They must beactive in SignPath before the next tag.
SIGNPATH_WINDOWS_PUBLISHER_NAMEmust exactly match the production certificate Subject.test-signingwill be attached after the PR is opened.