Repository navigation
Sign the first-party dependency copies packed into the Tools packages - #4959
Conversation
IceRpc.Protobuf.Tools and IceRpc.Slice.Tools pack the bin folders of their generators and build telemetry plug-ins into tools/, including the copy-local copies of first-party assemblies such as IceRpc.dll. The signing catalog only listed each project's assembly in its own bin folder, so these copies shipped unsigned. Search all of src for each project's assembly instead. Fixes #4949
There was a problem hiding this comment.
🟢 Approval recommended
The workflow now signs all first-party assemblies included in the Tools packages.
Pull request overview
Updates release signing to cover first-party assembly copies included in Tools packages.
Changes:
- Searches all
srcbuild output folders for project assemblies. - Signs copy-local dependencies before packaging.
- Preserves the existing signing and
dotnet pack --no-buildflow.
File summaries
| File | Description |
|---|---|
.github/workflows/build-packages.yml |
Expands signing discovery to include copied assemblies. |
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.
bernardnormier
left a comment
There was a problem hiding this comment.
The fix is right. I reproduced the catalog on a local Release build: the wider search adds exactly 43 entries, all
copy-local copies of first-party assemblies, including the 7 that dotnet pack puts into the Tools packages, and it
picks up no reference assembly.
Please drop the ai-audit label: it stays on the issue, not on the PR.
Two things this PR doesn't cover, for separate issues:
|
for |
Co-authored-by: Bernard Normier <bernardnormier@users.noreply.github.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…#4959) Fixes #4949 The release workflow signed, for each project under `src`, only the assembly named after the project in that project's own `bin` folder. `IceRpc.Protobuf.Tools` and `IceRpc.Slice.Tools` pack the `bin` folders of their generators and build telemetry plug-ins into `tools/`, and those folders also hold copy-local copies of other first-party assemblies. The catalog never listed these copies, so the published Tools packages shipped them unsigned. The 0.6.0 packages on nuget.org have 7 of them (`Get-AuthenticodeSignature` reports `NotSigned`): - `IceRpc.Slice.Tools`: `tools/IceRpc.dll`, `tools/IceRpc.Slice.dll`, `tools/ZeroC.Slice.Codec.dll`, `tools/ZeroC.Slice.Symbols.dll` - `IceRpc.Protobuf.Tools`: `tools/IceRpc.dll`, `tools/IceRpc.Protobuf.dll`, `tools/ZeroC.Slice.Codec.dll` This PR searches all of `src` for each project's assembly, so every copy under a `bin/Release/net*` folder is signed where it is. That is the smaller of the two fixes proposed in the issue, and it also covers any copies the Tools payloads pick up later. The catalog grows from 24 to 67 files. The 36 new entries that no package includes cost some extra signatures. For scale, signing took 51s in the 0.6.0 release job, which finished in 3m20s against a 10-minute timeout. Verified locally the same way as #4942: after a Release build, I ran each version of the "Collect Files to Sign" script as written in the workflow, appended a marker to every catalog file to stand in for signing, ran `dotnet pack --no-build`, and checked every first-party dll in the resulting packages: - before: 23 marked, 7 unmarked (the 7 copies above) - after: 30 marked, 0 unmarked The "Collect Files to Sign" step is the same on `0.6.x`, so this commit cherry-picks cleanly. ## What's Changed entry None — release packaging fix: the first-party assemblies bundled in the Tools packages are now signed like the rest of the package. (cherry picked from commit e4f4d14)
Fixes #4949
The release workflow signed, for each project under
src, only the assembly named after the project in that project's ownbinfolder.IceRpc.Protobuf.ToolsandIceRpc.Slice.Toolspack thebinfolders of their generators and build telemetry plug-ins intotools/, and those folders also hold copy-local copies of other first-party assemblies. The catalog never listed these copies, so the published Tools packages shipped them unsigned. The 0.6.0 packages on nuget.org have 7 of them (Get-AuthenticodeSignaturereportsNotSigned):IceRpc.Slice.Tools:tools/IceRpc.dll,tools/IceRpc.Slice.dll,tools/ZeroC.Slice.Codec.dll,tools/ZeroC.Slice.Symbols.dllIceRpc.Protobuf.Tools:tools/IceRpc.dll,tools/IceRpc.Protobuf.dll,tools/ZeroC.Slice.Codec.dllThis PR searches all of
srcfor each project's assembly, so every copy under abin/Release/net*folder is signed where it is. That is the smaller of the two fixes proposed in the issue, and it also covers any copies the Tools payloads pick up later. The catalog grows from 24 to 67 files. The 36 new entries that no package includes cost some extra signatures. For scale, signing took 51s in the 0.6.0 release job, which finished in 3m20s against a 10-minute timeout.Verified locally the same way as #4942: after a Release build, I ran each version of the "Collect Files to Sign" script as written in the workflow, appended a marker to every catalog file to stand in for signing, ran
dotnet pack --no-build, and checked every first-party dll in the resulting packages:The "Collect Files to Sign" step is the same on
0.6.x, so this commit cherry-picks cleanly.What's Changed entry
None — release packaging fix: the first-party assemblies bundled in the Tools packages are now signed like the rest of the package.