【アースリー】

Earthly とは?

公開:
💡 環境差異という魔物を封じ込める、コンテナ製のビルド装置
📌 このページのポイント
Earthly — コンテナ隔離ビルドフロー Earthfile +build コンパイル +test テスト実行 +docker イメージ作成 コンテナ隔離 各ターゲットはDockerコンテナ内で実行 → ローカル / CI で同じ結果 キャッシュを共有してリビルドを高速化 GitHub Actions / CircleCI などから earthly +target で呼び出し可能
Earthlyのビルドターゲット連鎖とコンテナ隔離のイメージ
ひよこ ひよこ
Earthlyって名前のツール、何をするものなの?
ペンギン先生 ペンギン先生
DockerfileとMakefileを合体させたようなビルド自動化ツールだよ。`Earthfile`というファイルに`+build`や`+test`というターゲットを書いていくんだ。
ひよこ ひよこ
Makefileみたいなものなんだね!でも何が違うの?
ペンギン先生 ペンギン先生
一番の違いはコンテナの中でビルドを実行することだよ。だからローカルPCでもCIサーバーでも同じ結果になるんだ。「自分のPCでは動いたのに…」という問題が起きにくくなるよ。
ひよこ ひよこ
それは嬉しいね!どんなふうに書くの?
ペンギン先生 ペンギン先生
たとえば`+build`ターゲットでアプリをビルドして、`+test`でテストを実行して、`+docker`でDockerイメージを作る、という流れを`Earthfile`に記述するんだよ。ターゲット同士は依存関係を持てるんだ。
ひよこ ひよこ
ビルドが遅い問題はどうなの?
ペンギン先生 ペンギン先生
キャッシュ機能があるから、変更のないステップはスキップされるよ。ローカルのキャッシュをCIと共有することもできるから、CI上でも高速に動くんだ。
ひよこ ひよこ
GitHub ActionsとかのCIとは一緒に使えるの?
ペンギン先生 ペンギン先生
もちろん。CIのYAMLから`earthly +test`というコマンドを呼び出すだけでいいんだよ。ビルドロジックをEarthfileに集約できるから、CIの設定がシンプルになるね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Earthly」って出てきたら「コンテナで再現性を保証するビルドツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Earthly」 = (地球上のどこでも同じ)再現可能なビルド
💬 「地球上のどこでも同じビルドを」という思想から名付けられているよ。コンテナを使うから環境差異が起きにくいんだよ。
← 用語集にもどる