build: improve build reproducibility#8549
Merged
jsha merged 3 commits intoletsencrypt:mainfrom Feb 10, 2026
Merged
Conversation
3c88210 to
36ce0a5
Compare
- Add -trimpath to Go builds - Use commit timestamp for BuildTime ldflags - Set SOURCE_DATE_EPOCH for build tools - Normalize timestamps in .deb packages - Add reproducible tar options (--mtime, --owner, --group, --sort) - Use commit timestamp for container image label
36ce0a5 to
dd51d5b
Compare
beautifulentropy
approved these changes
Jan 23, 2026
aarongable
approved these changes
Feb 4, 2026
Contributor
aarongable
left a comment
There was a problem hiding this comment.
LGTM but I'd love to have @jsha's eyes on this too.
jsha
approved these changes
Feb 10, 2026
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.
Remove sources of non-determinism in the build process.
Changes
-trimpathto Go builds (strips file paths from binaries)BuildTimeldflags instead of$(date -u)$(date +%s)SOURCE_DATE_EPOCHenvironment variable.debpackages--mtime,--owner,--group,--sort)What this achieves
Builds on the same OS/toolchain now produce identical artifacts. Verified by running try-release twice on the same commit—both produced identical SHA256 checksums.
What this does NOT address
Full reproducibility across different build environments would additionally require:
This PR addresses the low-hanging fruit; cross-environment reproducibility is out of scope.
Files Modified
Containerfiletools/container-build.shtools/make-deb.shtest/ct-test-srv/Dockerfile