定義(Definitions)
どの時点のビルドを再現できるのか
ソースコードとビルド環境とビルド手順を完全に同じにすれば、再現性のある ビルドを実現できます。 誰でも、ビット単位で完全に同一の、まるで複製したかのようなアーティファクトを作成できるのです。
アーティファクトの作者や配布者は、ビルド環境に関する性質やビルド手順、ソースコードと同様に、再現性のあるアーティファクトに対する期待値を定義します。 アーティファクトはビルド結果に期待する出力の一部なのです。
言葉の意味
ソースコード ソースコードアーカイブ、あるいは、バージョン管理システムから取得した特定のバージョンのソースコードのこと。
ビルド環境に関する性質 依存対象とそのバージョン、ビルド設定フラグ、環境変数(ロケールなど、ビルドシステムが使用できる情報のみ)を含む場合が多いようです。 少ないほうがよいです。
アーティファクト 実行可能ファイル、配布パッケージ、ファイルシステムイメージなどを含みます。 ビルドのログ(ファイル)や関連する出力は含めない場合が多いようです。
アーティファクトの再現性を 保証する のはビット単位で比較した結果が一致することです。 普通なら安全な暗号学的ハッシュ関数で比較します。
作者や配布者 一連のアーティファクトに再現性があることを主張する団体(関係者)です。 上流プロジェクトの作者や、ディストリビューションのメンテナ、任意の配布団体になるでしょう。
Introduction
- 定義(Definitions)
- History
- やってみる(Buy-in)
- 計画する(Making plans)
- Academic publications
Achieve deterministic builds
- SOURCE_DATE_EPOCH
- 確実なビルドシステム(Deterministic build systems)
- 揮発性のある入力データは消える場合がある(Volatile inputs can disappear)
- 入力データの順序を固定する(Stable order for inputs)
- 値を初期化する(Value initialization)
- バージョン情報(Version information)
- タイムスタンプ(Timestamps)
- タイムゾーン(Timezones)
- ロケール(Locales)
- アーカイブのメタデータ(Archive metadata)
- 出力データの順序を固定する(Stable order for outputs)
- 無作為性(Randomness)
- ビルド時のファイルシステムパス(Build path)
- システムイメージ(System images)
- JVM
Define a build environment
- ビルド環境に含む要素(What's in a build environment?)
- ビルド環境を記録する(Recording the build environment)
- ビルド環境の定義における戦略(Definition strategies)
- Proprietary operating systems
Distribute the environment
Verification
Specifications
Follow us on Twitter @ReproBuilds, Mastodon @reproducible_builds@fosstodon.org & Reddit and please consider making a donation. • Content licensed under CC BY-SA 4.0, style licensed under MIT. Templates and styles based on the Tor Styleguide. Logos and trademarks belong to their respective owners. • Patches welcome via our Git repository (instructions) or via our mailing list. • Full contact info