Daggerって知ってる?
dagger とは?
Section titled “dagger とは?”- CI/CD パイプラインや DevOps ワークフローをコードで定義できるフレームワーク
- Docker をベースに 全ての実行をコンテナ上で行う
- Python, Go, TypeScript に対応
コード
@functiondef run(self, dir: dagger.Directory, db: dagger.Service) -> dagger.Service: return ( dag.container() .from_("alpine:latest") .with_service_binding("db", db) .with_mounted_directory("/app", dir) .with_workdir("/app") .as_service(args=["go", "run", "main.go"]) )
メリット | 内容 |
---|---|
コードでパイプライン管理 | yml ではなく、プログラミング言語で柔軟にパイプラインを組める。if 文やループも自由。 |
ローカル実行可能 | 手元の PC でも CI と同じ処理を試せる。クラウドの待ち時間なし |
コンテナベース | すべて Docker コンテナ上で完結するため、環境差異が起きにくい |
マルチプラットフォーム | Windows/Mac/Linux 対応 |
GitHub Actions との連携も簡単 | Dagger プログラムを呼び出すだけで GitHub Actions の workflow にも組み込める |
スケーラビリティ | どんどん規模が大きくなってもコードで管理できるから破綻しにくい |
- Dagger は「CI/CD をコードで書き、手元で動かし、クラウドにも流せる」ツール
- 既存の GitHub Actions が肥大化している
- 複数リポジトリで同じビルド処理を共通化したい
- テスト実行やデプロイをもっと楽にコード管理したい