dagger/dagger
GitHub: dagger/dagger
一个可编程的软件交付自动化引擎,用代码替代 Shell 脚本和 YAML 来构建、测试和交付任意代码库。
Stars: 15753 | Forks: 863
## Dagger:更优的交付方式
Dagger 是一个用于自动化软件交付的平台。它能够可靠、大规模地构建、测试和交付任何代码库。
Dagger 可以在本地、CI 服务器中运行,或者直接在云端运行。
```
brew install dagger/tap/dagger
```
## 为什么选择 Dagger?
Dagger 使您的软件交付变得*可编程*、*本地优先*、*可重复*且*可观测*。
**可编程**。对于自动化软件交付而言,Shell 脚本和专有的 YAML 已不再适用。Dagger 提供:一个完整的执行引擎和系统 API;支持 8 种语言的 SDK;一个交互式 REPL;一个由可复用模块组成的丰富生态系统;以及更多其他功能。
**本地优先**。一旦您使用 Dagger 自动化了一项任务,它就可以在任何支持的系统上可靠地运行:您的笔记本电脑、AI 沙盒、CI 服务器或专用的云基础设施。唯一的依赖是一个类似 Docker 的容器运行时。
**可重复**。工具运行在容器中,由沙盒化的函数进行编排。主机依赖是显式且严格类型化的。中间构件采用即时构建。每一个操作默认都是增量的,并配有高级的缓存控制。无论是测试报告、构建还是部署,Dagger 都能为您提供值得信赖的输出。
**可观测**。每一个操作都会生成完整的 OpenTelemetry 链路追踪,并辅以详细的日志和指标。您可以直接在终端或 Web 视图中可视化该链路。您可以立即调试复杂的工作流,而不必在满屏的文本日志中盲目猜测出了什么问题。
## 功能特性
**系统 API**。一个跨语言的 API,用于编排容器、文件系统、密钥、Git 仓库、网络隧道等。每一个操作都是类型化且可组合的。
**支持 8 种语言的 SDK**。原生支持 Go、Python、TypeScript、PHP、Java、.NET、Elixir 和 Rust 的 SDK。每个 SDK 均由 API schema 生成,因此您能获得具有完整类型安全和编辑器支持的惯用代码。
**类型化构件**。定义具有封装状态和函数的自定义对象类型。类型采用内容寻址,可以在无需序列化的情况下跨 SDK 语言边界和模块边界进行传递。
**增量执行**。每一个操作都由其输入作为键进行标识。只需更改一个文件,就会仅重新运行受影响的操作。缓存采用内容寻址机制,并在本地运行和 CI 之间自动生效。
**随处运行**。唯一的要求是一个 Linux 容器运行时。原生运行在 Linux 上,或者通过 Docker Desktop 及类似产品运行在 macOS 和 Windows 上。本地和 CI 的行为完全一致。
**内置链路追踪**。每一个操作都会生成 OpenTelemetry span。CLI 包含一个实时的 TUI;链路追踪也可以导出到 Jaeger、Honeycomb 或任何兼容 OTel 的后端。
## 快速入门
- [文档](https://docs.dagger.io)
- [快速入门](https://docs.dagger.io/quickstart)
## 社区
- [Discord](https://discord.gg/dagger-io)
- [GitHub Discussions](https://github.com/dagger/dagger/discussions)
## 贡献
请参阅 [CONTRIBUTING.md](https://github.com/dagger/dagger/blob/main/CONTRIBUTING.md)。
标签:API集成, Dagger, Docker, EVTX分析, GET参数, Go, JS文件枚举, OpenTelemetry, OpenVAS, PHP, Python, Ruby工具, Rust, TypeScript, 代码部署, 可观测性, 可视化界面, 可重复性, 多人体追踪, 多语言SDK, 安全插件, 安全防御评估, 容器编排, 容器运行时, 开源, 开源框架, 持续交付, 持续集成, 无后门, 日志, 日志审计, 本地开发, 沙箱, 用户代理, 系统API, 缓存控制, 网络流量审计, 自动化引擎, 自动化构建, 请求拦截, 软件交付, 逆向工具, 遥测, 链路追踪