dagger

dagger / dagger

一个自动化引擎,用于构建、测试和交付任何代码库,支持本地、CI 或云端直接运行。

Go 开发工具 基础设施 CI/CD 自动化 容器化

为什么值得看

编辑点评

Dagger 将 CI/CD 流水线封装为可编程的 Go 代码,让开发者用统一的接口编写工作流,同时无缝复用现有容器和工具链。它解决了传统 Pipeline 难以调试和维护的问题,适合需要跨环境一致执行复杂构建与部署的团队。注意其概念有一定学习成本,且对已有简单 CI 的团队可能收益不明显。

Star 趋势

近 7 日
  • Star 总数16,256
  • 今日新增+3
  • 7 日增速0%
  • Fork924

同类项目

同场景 · 开发工具 / 基础设施

项目文档

来自 GitHub README · main 分支

Dagger: a better way to ship

Dagger is a platform for automating software delivery. It can build, test and ship any codebase, reliably and at scale.

Dagger runs locally, in your CI server, or directly in the cloud.

brew install dagger/tap/dagger

Why Dagger?

Dagger makes your software delivery programmable, local-first, repeatable and observable.

Programmable. Shell scripts and proprietary YAML are no longer acceptable for automating software delivery. Dagger provides: a complete execution engine and system API; SDKs for 8 languages; an interactive REPL; a rich ecosystem of reusable modules; and more.

Local-first. Once you automate a task with Dagger, it will reliably run on any supported system: your laptop, AI sandbox, CI server, or dedicated cloud infrastructure. The only dependency is a container runtime like Docker.

Repeatable. Tools run in containers, orchestrated by sandboxed functions. Host dependencies are explicit and strictly typed. Intermediate artifacts are built just-in-time. Every operation is incremental by default, with advanced cache control. Whether it's a test report, a build or a deployment, Dagger gives you an output you can trust.

Observable. Every operation emits a full OpenTelemetry trace, enriched by granular logs and metrics. Visualize the trace in directly in the terminal, or in a web view. Debug complex workflows immediately instead of guessing what went wrong from a wall of text logs.

Features

System API. A cross-language API for orchestrating containers, filesystems, secrets, git repositories, network tunnels, and more. Every operation is typed and composable.

SDKs in 8 languages. Native SDKs for Go, Python, TypeScript, PHP, Java, .NET, Elixir and Rust. Each SDK is generated from the API schema, so you get idiomatic code with full type safety and editor support.

Typed artifacts. Define custom object types with encapsulated state and functions. Types are content-addressed and can be passed across SDK language boundaries and module boundaries without serialization.

Incremental execution. Every operation is keyed by its inputs. Change one file and only the affected operations re-run. Caching is content-addressed and works automatically across local runs and CI.

Runs anywhere. The only requirement is a Linux container runtime. Runs natively on Linux, or via Docker Desktop and similar products on macOS and Windows. Local and CI behavior are identical.

Built-in tracing. Every operation emits OpenTelemetry spans. The CLI includes a live TUI; traces can also be exported to Jaeger, Honeycomb, or any OTel-compatible backend.

Getting started

Community

Contributing

See CONTRIBUTING.md.

文档抓取自 GitHub 仓库 README,版权归原作者所有;已过滤徽章等噪音并经安全消毒后展示。