Skip to content

feat: verifiable production builds (reproducible-build pipeline)#959

Open
EightRice wants to merge 3 commits into
masterfrom
feat/reproducible-builds
Open

feat: verifiable production builds (reproducible-build pipeline)#959
EightRice wants to merge 3 commits into
masterfrom
feat/reproducible-builds

Conversation

@EightRice

Copy link
Copy Markdown
Collaborator

What

First executed phase of the decentralized-distribution direction — running in parallel with the Netlify deployment, which is unchanged.

  • distribution/Dockerfile.build — builder pinned by image digest (node 22.12.0 per .nvmrc); SOURCE_DATE_EPOCH from the commit; canonical public env; deterministic tar + sha256 fingerprint
  • distribution/build.sh — builds only committed code (git archive is the docker context)
  • distribution/verify.sh — rebuilds any ref and compares against a published hash
  • distribution/env.build — canonical PUBLIC production env (values extracted from the live bundle; no secrets by design)
  • .github/workflows/reproducible-build.yml — on v* tags: build, rebuild from scratch, fail unless fingerprints match, publish artifact + hash + manifest on the GitHub Release

Verified

Two builds (warm cache, then --no-cache cold rebuild) produced identical fingerprints:

9b8358f5451c174c24c7e5885cfedaac6f2fd49c1c97daf5392cdef25c0f12a4

Why

Users run the served bundle, not the source. Reproducibility makes "the deployed app matches the public source" independently checkable — the foundation for content-addressed mirrors and an on-chain release registry (next phases).

… artifact)

distribution/ provides a reproducible build pipeline as the first phase
of decentralized distribution — parallel to, not replacing, the existing
Netlify deployment:

- Dockerfile.build: builder pinned by image digest (node 22.12.0 per
  .nvmrc), SOURCE_DATE_EPOCH from the commit, canonical public env baked
  from env.build, deterministic tar + sha256 fingerprint (BUILDHASH)
- build.sh: builds ONLY committed code (git archive as docker context)
- verify.sh: rebuilds a ref and compares against a published hash
- env.build: the canonical PUBLIC production env (no secrets by design)
Tagged releases build in the pinned environment, rebuild from scratch,
fail unless both fingerprints match, then publish the artifact,
BUILDHASH.txt, and per-file manifest on the GitHub Release.
@netlify

netlify Bot commented Jul 16, 2026

Copy link
Copy Markdown

Deploy Preview for tezos-homebase ready!

Name Link
🔨 Latest commit 48cb13e
🔍 Latest deploy log https://app.netlify.com/projects/tezos-homebase/deploys/6a58db74393db300087875cb
😎 Deploy Preview https://deploy-preview-959--tezos-homebase.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 25 (🔴 down 1 from production)
Accessibility: 91 (no change from production)
Best Practices: 83 (no change from production)
SEO: 92 (no change from production)
PWA: 70 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant