Mason: A declarative build tool on top of Dagger
a year ago
- #devops
- #dagger
- #build-tools
- Mason is a declarative build tool built on top of Dagger to simplify and scale its usage.
- Dagger's current form poses challenges like boilerplate code and non-trivial CLI usage, making it hard to deploy at scale.
- Mason aims for a simple, consistent CLI UX across projects, similar to Maven's 'mvn package' simplicity.
- It provides a declarative configuration approach, inspired by GoReleaser and Kubernetes, for projects with similar needs but different parameters.
- Mason leverages Dagger's Interactive Shell to generate scripts based on configuration files, simplifying module orchestration.
- The tool introduces a two-phase plan/apply design: generating scripts in the first phase and executing them in the second.
- Mason benefits from Dagger's built-in features like caching, plugin system via modules, sandboxed execution, and TUI.
- Adopting Mason requires transitioning from local Dagger modules to YAML configs and consolidating CI calls, but retains Dagger's core functionalities.
- In corporate settings, Mason simplifies project 'daggerization' with YAML files, offering maintainability and consistent developer UX across projects.
- Future enhancements may include reporting features and deeper integration with Dagger, positioning Mason as a potential 'Docker Compose' for Dagger.