Dagger:把软件交付这件事变得可编程、可重复、可观测

做软件交付的人,大概都经历过这样的场景:CI 脚本写得像面条一样缠在一起,本地能跑、上服务器就挂,部署一次要盯半个小时日志。Dagger 就是冲着这些痛点来的。

正文顶部截图

四个关键词

Dagger 对自己的定位很明确:让软件交付变得可编程、本地优先、可重复、可观测。

可编程。Shell 脚本和私有 YAML 方案统治 CI/CD 领域太久了。Dagger 给了一套完整的执行引擎和系统 API,8 种语言的 SDK,一个交互式 REPL,还有不断增长的模块生态。写流水线像写普通代码一样自然。

本地优先。在 Dagger 上写好一个自动化任务,拿到任何地方都能跑。笔记本、CI 服务器、云端基础设施,结果完全一致。唯一的依赖是容器运行时。

可重复。所有工具跑在容器里,由沙箱化的函数编排。宿主机依赖被显式声明和严格类型化。每次构建增量执行,改了哪个文件就只重跑相关的操作。

可观测。每次操作都生成完整的 OpenTelemetry 追踪数据,在终端或网页上直接可视化。排查问题不用再翻几百行日志找线索。

README区域截图

设计上的一些细节

系统 API 是跨语言的,统一操作容器、文件系统、密钥、Git 仓库、网络隧道等基础设施。每个操作的返回值都有类型、可组合。

8 个语言的 SDK(Go、Python、TypeScript、PHP、Java、.NET、Elixir、Rust)都是从 API schema 自动生成的,类型安全和编辑器补全都是原生支持。

自定义对象类型可以跨 SDK 语言边界和模块边界传递,不涉及序列化。类型通过内容寻址,天然防冲突。

增量执行靠内容寻址缓存,操作按输入键控。改一个文件只有受影响的操作重跑,缓存在本地和 CI 之间自动共享。

上手成本

安装只需要一行 brew,前提是有容器运行时。Linux 原生跑,macOS 和 Windows 靠 Docker Desktop 或者类似产品。

官方有完整的文档快速入门,社区在 Discord 和 GitHub Discussions 活跃。

如果你对 CI/CD 的现状不满,想找一种更工程化的方式来做软件交付,Dagger 值得看看。

的现状不满,想找一种更工程化的方式来做软件交付,Dagger 值得看看。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐