Skip to content

Earthly

Earthly 重複性建置引擎

軟體分類 系統管理 / 開發運維 (DevOps)
軟體標籤
15941593225women1250
開發廠商 Earthly Technologies
Stars
0
Forks
0
License
POLYFORM SHIELD 1.0.0 (SOURCE AVAILABLE)
Version
vv0.8.15
Update
OS
ci/cd platforms

讓建置流程具備「容器級」的穩定性:無論在本機、GitHub Actions 還是 Jenkins,結果永遠一致

  • 環境完全隔離: 所有的建置步驟都在容器內執行,這意味著您不再需要擔心本機安裝的編譯器版本與 CI 環境不一致的問題。
  • 極速的平行化建置: Earthly 能自動識別建置步驟之間的依賴關係並平行執行不相干的任務,配合其強大的快取機制,大幅縮短建置循環時間。
  • 語法親切且強大: 使用類似 Dockerfile 的語法,但引入了 Makefile 的目標(Targets)與依賴概念,讓複雜的多階段建置變得清晰易懂。

主要功能、特點

  • 介紹: Earthly 是一個建置自動化系統,它允許您定義具備重複性(Reproducible)、可移植性與平行性的建置管道。它使用 Earthfile 來描述建置邏輯,並利用容器技術確保環境的一致性。

  • 特色服務:

    • 層級快取 (Layered Caching): 與 Docker 類似,Earthly 會快取每一個步驟的結果。如果代碼沒變,秒級完成建置不再是夢想。
    • 雲端共享快取 (Satellites): 2026 年版本強化了雲端原生特性,團隊成員之間可以共享建置快取,一人建置,全隊受益。
    • 跨平台原生支援: 支援交叉編譯(Cross-compilation),您可以輕鬆在 Mac M4 上建置適用於 Linux x86 伺服器的二進位檔案。
    • 內建導出機制: 可以輕鬆將建置產物導出為本地文件、Docker 鏡像或是推送到遠端倉庫。

建置工具對比表

特性項目MakefileDockerfileEarthlyBazel
環境隔離無 (依賴宿主機)高 (原生容器化)
語法難度中 (語法古老)低 (類 Docker 語法)極高 (Starlark)
重複性保證優 (環境+邏輯鎖定)
平行執行手動配置有限自動平行化自動平行化
快取機制基於檔案時間戳基於層智慧層級快取分散式精準快取

快速使用範例 (Earthfile)

這是一個簡單的 Go 專案建置範例,展示了 Earthly 如何管理依賴與編譯:

VERSION 0.8

build:
    FROM golang:1.23-alpine
    WORKDIR /src
    COPY go.mod go.sum ./
    RUN go mod download
    COPY . .
    RUN go build -o /bin/myapp main.go
    SAVE ARTIFACT /bin/myapp AS LOCAL ./build/myapp

docker:
    FROM alpine:latest
    COPY +build/myapp /usr/bin/myapp
    ENTRYPOINT ["/usr/bin/myapp"]
    SAVE IMAGE my-app:latest


只需執行 earthly +docker,無論在誰的電腦上,產出的鏡像都是完全相同的。

產品說明

Earthly 是軟體工程中的「一致性膠水」。在 開發運維 (DevOps) 的工具版圖中,它解決了 CI/CD 流程中最令人頭痛的環境不對等問題。它將建置邏輯從繁瑣的雲端平台配置(如複雜的 YAML 腳本)中抽離出來,回歸到代碼倉庫本身。其核心價值在於「開發者體驗的升級」——它賦予了開發者在本地完整模擬並除錯 CI 流程的能力。對於在 2026 年追求高品質交付、希望擺脫「建置地獄」的開發團隊來說,Earthly 是打造現代化軟體工廠的最佳利器。

![[https://192.168.30.195/wp-content/uploads/2026/02/Earthly_ui01_20260210.png]]![[https://192.168.30.195/wp-content/uploads/2026/02/Earthly_ui02_20260210.png]]


**Earthly** 讓您的建置流程如同代碼一般,既精準又可預測。

**既然 Earthly 已經入列您的工具箱,您是否需要我為您撰寫一份針對「Python 或 Node.js」專案的 Earthfile 模板,或是說明如何將 Earthly 整合進您的「GitHub Actions」中?**