Deterministic/reproducible packaging for `Compress-PSResource`
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 45/100
Research direction
Begin at the Compress-PSResource entry point and trace package generation, including timestamps, PSMDCP naming, .rels, and [Content_Types].xml ordering. Done means default output is reproducible and -Timestamp applies to all packaged files, with deterministic names and XML ordering.
Written by the indexing model from the issue text.
Description
Summary of the new feature / enhancement
Deterministic/reproducible builds are an undeniably important feature for auditability and security. Currently, Compress-PSResource doesn't provide support for that, and it should.
Currently, I post-process my packages to ensure fully reproducible output, which takes significant time in a build.
Proposed technical implementation details (optional)
There are a few sources of non-determinism I have observed in Compress-PSResource:
- The timestamps of files in the zipped package.
- The PSMDCP file name is non-deterministic. Consequently, the
.relsfile content is non-deterministic. - The
[Content_Types].xmlcontent, notably the order of children, is non-deterministic. (? I remember observing this but couldn't give a stable reproduction at the moment.)
Suggestion.
- Make
Compress-PSResourcedeterministic by default. PSMDCP name can be a hash of non-.relsnon-.psmdcpfiles, and[Content_Types].xmlchildren should be sorted. - Provide a new parameter
-Timestamp. When this parameter is set, all files in the package should use this timestamp.
- Dominant language
- C#
- Stars
- 576
- Forks
- 114
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 7
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PowerShell/PSResourceGet
-
Create parent directories only after the containment check in InstallHelper.TryExtractToDirectory Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PowerShell/PSResourceGet#2056 ·
-
feature_request
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PowerShell/PSResourceGet#2013 · 3 comments ·
-
Needs-Triage
Difficulty 3/5 1-2 days Newbie friendliness 68/100
PowerShell/PSResourceGet#2055 ·
-
Needs-Triage
Difficulty 3/5 1-2 days Newbie friendliness 72/100
PowerShell/PSResourceGet#2054 ·
-
(dsc): Export ignores `--input` filter for `Repository` and `PSResourceList` on DSC 3.3.* or above OpenNeeds-Triage
Difficulty 3/5 1-2 days Newbie friendliness 72/100
PowerShell/PSResourceGet#2053 ·
All issues in PowerShell/PSResourceGet
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100