For developers
Hermetic Builds
Understand reproducible builds, explicit inputs, and the hidden dependencies that make CI results unreliable.
Start with a lesson that meets you where you are.
Try questions to check what you understand.
Sign in to keep your practice progress together.
Your learning path
18 of 48 topics have lessons available today. Choose any available lesson.
- 01
Fundamentals of Hermetic Builds
Read the lesson, then try the practice.
- 02
What is Hermeticity?
Read the lesson, then try the practice.
- 03
The 'Works on My Machine' Problem
Read the lesson, then try the practice.
- 04
Common Non-Hermetic Patterns
Read the lesson, then try the practice.
- 05
Inputs, Outputs, and Dependencies
Read the lesson, then try the practice.
- 06
Reproducibility vs Determinism
Read the lesson, then try the practice.
- 07
Determinism in Build Systems
Read the lesson, then try the practice.
- 08
Hermetic Build Tools Ecosystem
Read the lesson, then try the practice.
- 09
Bazel Mental Model
Read the lesson, then try the practice.
- 10
BUILD Files and Targets
Read the lesson, then try the practice.
- 11
Sandboxed Execution
Read the lesson, then try the practice.
- 12
Nix Mental Model
Read the lesson, then try the practice.
- 13
Derivations and Nix Store
Read the lesson, then try the practice.
- 14
Nix Language Basics
Read the lesson, then try the practice.
- 15
When to Choose Nix vs Bazel
Read the lesson, then try the practice.
- 16
Hermetic Builds in Production
Read the lesson, then try the practice.
- 17
Hermetic CI/CD Pipelines
Read the lesson, then try the practice.
- 18
Why Docker Alone Isn't Hermetic
Read the lesson, then try the practice.
Topics without lessons yet
These are part of the outline. Lessons are not available for them yet.
- Definition and Core Concept
- Benefits and Trade-offs
- Network Dependencies
- Timestamp and Clock Dependencies
- Global System State
- Undeclared File System Dependencies
- Declaring All Inputs
- Source Files and Dependencies
- Build Tools and Compilers
- Pinning Dependencies
- Content-Addressable Storage
- Hash Functions and Integrity
- Build Cache Mechanics
- What is Reproducibility?
- Bit-for-Bit Reproducibility
- Security Implications
- Non-Deterministic Sources
- Fixing Non-Determinism
- Remote Build Execution
- Containerized Build Environments
- Caching Strategies in CI
- Docker's Hidden Dependencies
- Making Docker Builds Hermetic
- Advanced Hermetic Patterns
- Handling Generated Code
- Codegen as Build Inputs
- Schema Evolution
- Cross-Platform Hermeticity
- Platform-Specific Toolchains
- Cross-Compilation