Conversation
slicec.exe was uploaded to download.zeroc.com unsigned, and IceRpc.Slice.Tools bundles it as is. Sign it with Authenticode on the Windows build leg, before the artifact upload: always for non-nightly releases, and for nightly builds when the new authenticode_sign input is set. A follow-up step checks the signature, so a release build fails instead of publishing an unsigned binary.
There was a problem hiding this comment.
🔵 Needs a closer look
Release signing and publication gating depend on organization secrets and warrant final human review.
Pull request overview
Updates the release workflow to Authenticode-sign Windows slicec.exe before publication.
Changes:
- Adds configurable signing for releases and nightly builds.
- Verifies signatures before artifact upload.
- Blocks publication when required signing fails.
File summaries
| File | Summary |
|---|---|
.github/workflows/build-release.yml |
Adds signing policy, Azure Trusted Signing, verification, and release gating. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The release workflow uploads
slicec.exeto download.zeroc.com without an Authenticode signature, andIceRpc.Slice.Toolsbundles it unchanged. Thetools/windows-x64/slicec.exeinIceRpc.Slice.Tools0.6.0 on nuget.org isNotSigned, while the managed assemblies in the same package carry ZeroC's signature. This was found while fixing icerpc/icerpc-csharp#4949.This PR signs the Windows binary on the Windows build leg, before the artifact upload, with the same Trusted Signing account, certificate profile and action version as icerpc-csharp's
build-packages.yml:nightly): signing is mandatory.authenticode_signinput (defaultfalse) onworkflow_callandworkflow_dispatch. The scheduled nightly doesn't set it, so it stays unsigned. A manual nightly run can opt in.Get-AuthenticodeSignaturereportsValid, so a signing problem can't lead to an unsigned binary being uploaded. Theuploadjob needsbuild, so nothing is published in that case.The signing action is pinned to a commit SHA, as in icerpc-csharp, because it receives the signing credentials.
Before merging
The
AZURE_TENANT_ID,AZURE_CLIENT_IDandAZURE_CLIENT_SECRETsecrets are organization secrets that are not currently shared with this repository. An org admin needs to addicerpc/slicecto their selected repositories. Until then, a non-nightly release fails at the signing step. The scheduled nightly doesn't sign, so it isn't affected.Testing
actionlint1.7.12 reports no issues.trueforstableandRCwith any input value,falsefornightlyby default, andtruefornightlywithauthenticode_sign: true.slicec.exe.workflow_dispatchwithquality: nightlyandauthenticode_sign: trueexercises it without publishing a stable release.The workflow is the same on
0.4.x, so this commit cherry-picks cleanly and a 0.4.1 release would ship a signedslicec.exe.What's Changed
None - release pipeline change: the published Windows
slicecbinary is now Authenticode-signed; the compiler itself is unchanged.