コンテンツにスキップ

Daggerって知ってる?

Author: Murata
  • CI/CD パイプラインや DevOps ワークフローをコードで定義できるフレームワーク
  • Docker をベースに 全ての実行をコンテナ上で行う
  • Python, Go, TypeScript に対応

コード

@function
def 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 が肥大化している
  • 複数リポジトリで同じビルド処理を共通化したい
  • テスト実行やデプロイをもっと楽にコード管理したい