* 「Dagger でポータブルな CI/CD パイプラインを作る」というテーマでお話させていただきます。 * よろしくお願いいたします。
* まず自己紹介です。 * 佐藤光輝と申します。 * 株式会社スリーシェイク Sreake 事業部で SRE エンジニアとして様々なお客様の技術支援をさせていただいております。 * ソロモン諸島検定 1 級を保持しています。 * GitHub・Twitter・Zenn のアカウントはこちらです。 (25s) 0:25
* アジェンダです。 * まず最初に Dagger について簡単にご紹介いたします。 * 次に実際に Go SDK を使って簡単な CI/CD パイプラインを構築する例をご紹介いたします。 * その後 Dagger を使って嬉しいところについてお話した後、最後にまとめです。 (20s) 0:45
* まず Dagger についてです。
* Dagger は Docker の創始者である Solomon Hykes 氏らが中心となって開発されています。 * Dagger とは、「コンテナ内で実行されるパイプラインを構築するプログラマブルな CI/CD エンジン」です。 * パイプラインはコンテナ内で実行されるため、実行環境に依存しないポータブルな CI/CD パイプラインを構築することができます。 * 例えばローカルマシンはもちろん、 GitHub Actions や CircleCI などといった CI ランナー、なんだったら Kubernetes 上でも動く CI/CD パイプラインを作ることが可能です。 * まさに「ポータブル」です。 (40s) 1:25
* Dagger ではいくつかの SDK が公開されています。 * 現時点では CUE SDK 、 Go SDK 、 Python SDK 、 Node.js SDK が公開されています。 * もともとは CUE SDK のみだったのですが、今年の 10 月から 11 月にかけて立て続けに Go・Python・Node.js SDK が公開されました。 * 今回は Go SDK の使い方をこの後ご紹介いたします。 * ちなみに記載していませんが GraphQL API や CLI も提供されています。 (30s) 1:55
* それでは実際に Dagger Go SDK を使って簡単な CI/CD パイプラインを構築する例をご紹介いたします。
* Dagger Go SDK のインストール手順ですが、 SDK 自体は普通の Go パッケージなので、 `go get` でインストールできます。 (15s) 2:10
* サンプルコードはこちらに置いてあります。 * 実際に簡単なパイプラインを書きながら解説していきます。 ( ここからライブコーディング ) (10s) 2:20 (2m30s) 4:50
* Dagger を使っていて嬉しいところについてです。
* もちろん他にもあるとは思いますが、「実行環境に依存しない」、「ローカルでも実行できる」、「普段使い慣れた言語で CI/CD パイプラインを構築できる」というのが特に Dagger を使っていて嬉しいところかなと思います。 (20s) 5:10
* まず実行環境に依存しないというところです。 * Docker コンテナが動かせるところならどこでも実行できるので、パイプラインを構築するときに実行環境がローカルなのか、 GitHub Actions なのか、 CircleCI なのかなどを気にする必要が無いというのが嬉しいところかなと思います。 * 汎用的な module を用意しておいて、プロジェクトごとに使っている CI ランナーが異なっていても気にせずに使い回す、みたいな用途も考えられるかと思います。 (30s) 5:40
* 実行環境に依存しないというのとかぶるところではあるんですが、やはりローカルでも実行できるというのが結構有り難いかなと思います。 * これは多分 CI/CD あるあるだと思うのですが、パイプラインの動作確認のためにコミット・プッシュして、コケて、直して、またコケて、みたいなことは経験ある方いらっしゃるんじゃないかなと思います。 * ローカルで CI/CD パイプラインを実行できることでそういった手間が無くなるので開発体験としてかなり良いのではないかなと思います。 * こういった悲しみのコミットログも生み出さなくて済みます。 (35s) 6:15
* あとはもう普段使い慣れた言語で CI/CD パイプラインを構築できるというところですが、楽しいです。 * 僕は Go 言語が好きなのですが、好きな言語でゴリゴリ CI/CD パイプラインを構築できるのが新鮮で楽しかったです。 * あとはその言語の機能だったりエコシステムをフル活用できるので、より柔軟な CI/CD パイプラインの構築が可能となります。 (25s) 6:40
* まとめです。
* めちゃくちゃ良いです。 * CUE 以外の SDK はまだ Technical Preview なんですが、触ってみた感じ CI/CD で最低限必要な機能は大体揃っているんじゃないかなと思います。 * Dagger のリポジトリとか覗いてみるとわかるんですが、開発もめちゃくちゃ活発なので今後が楽しみです。 * とにかく開発体験めちゃくちゃ良くて楽しいので、是非使ってみていただけましたらと思います。 (25s) 7:05
* 最後におまけです。 * スライドはここに置いてあります。 * 発表に使用したツールに関してですが、このスライドは Marp という、マークダウンをスライドに変換するツールを使って作成しています。 * ライブコーディングに関しては cLive というツールを使用して自動化しました。 * この辺りのツールも結構面白いので機会があれば使ってみてください。 (20s) 7:25
* 発表は以上となります。 * ご清聴ありがとうございました。