Release signing
Release signing (CI)¶
This repo’s release workflow (.github/workflows/release.yml) publishes Nuitka-built standalone executables for macOS/Windows/Linux.
- If signing secrets are not configured, builds are still produced and uploaded, but are unsigned / not notarized.
- If signing secrets are configured, CI will:
- macOS: codesign the produced
akc.binbinary at the root of the standalone bundle (Developer ID) and notarize a zip of that bundle withnotarytool - Windows: sign
akc.exeusingsigntool.exewith an RFC3161 timestamp
Checksums¶
Each uploaded archive has a sibling *.sha256 file, and CI also publishes a combined SHA256SUMS.txt asset for the release (covers all Nuitka archives).
Optional: Cosign bundles (sigstore)¶
CI can optionally create Cosign bundle files (*.sigstore.bundle.json) for each release archive (Cosign “sign-blob” bundles).
Enable one of the following:
- Keyless (recommended): set repository variable
COSIGN_KEYLESS=true. - Requires GitHub Actions OIDC (the workflow requests
id-token: write). - Key-based: create secrets
COSIGN_PRIVATE_KEY(and optionallyCOSIGN_PASSWORDif your key is encrypted).
GitHub Secrets¶
Create these secrets in GitHub: Settings → Secrets and variables → Actions → New repository secret.
macOS: Developer ID Application + notarization (notarytool API key)¶
APPLE_SIGNING_CERT_P12_BASE64- Base64 encoding of a
.p12containing your Developer ID Application certificate and private key. - Create from Keychain by exporting the certificate as
.p12, then:
base64 -i developer_id_application.p12 | pbcopy
APPLE_SIGNING_CERT_P12_PASSWORD-
The password you used when exporting the
.p12. -
APPLE_SIGNING_IDENTITY -
The codesign identity label, for example:
Developer ID Application: Your Org (TEAMID)
-
APPLE_NOTARYTOOL_KEY_ID -
App Store Connect API key id (e.g.
ABC123DEFG). -
APPLE_NOTARYTOOL_ISSUER_ID -
App Store Connect issuer id (UUID).
-
APPLE_NOTARYTOOL_PRIVATE_KEY_P8_BASE64 - Base64 encoding of the App Store Connect API key private key
AuthKey_<KEY_ID>.p8, for example:
base64 -i "AuthKey_${KEY_ID}.p8" | pbcopy
Windows: Authenticode signing (signtool)¶
WINDOWS_SIGNING_CERT_PFX_BASE64- Base64 encoding of a
.pfxcode signing certificate with private key:
certutil -encode -f codesign.pfx codesign.pfx.b64
-
Then paste the contents of
codesign.pfx.b64(without the BEGIN/END header lines) into the secret. -
WINDOWS_SIGNING_CERT_PFX_PASSWORD - The password for the
.pfx.
Notes and limitations¶
- Notarization format: CI notarizes a zip of the standalone bundle directory (as built by Nuitka). If you later switch distribution to
.pkg/.dmg, update notarization to submit that installer artifact instead. - Verification:
- macOS:
codesign --verifyis run in CI;spctloutput is logged as best-effort. - Windows:
signtool verify /pa /vis run in CI.