Earthly 开源项目教程
1. 项目介绍
Earthly 是一个简单易用的构建框架,旨在提供快速、可重复的构建过程,并且具有与 Dockerfile 和 Makefile 类似的语法。它通过在容器中运行构建,确保构建过程的隔离性和可移植性。Earthly 适用于各种编程语言和框架,支持单体仓库(monorepos)和多仓库(polyrepos),并且能够自动并行执行构建步骤,从而提高构建速度。
2. 项目快速启动
安装 Earthly
首先,你需要安装 Earthly。以下是安装命令:
sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/latest/download/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
创建 Earthfile
在你的项目根目录下创建一个名为 Earthfile
的文件,并添加以下内容:
VERSION 0.8
FROM golang:1.15-alpine3.13
WORKDIR /proto-example
proto:
FROM namely/protoc-all:1.29_4
COPY api/proto /defs
RUN --entrypoint -- -f api/proto -l go
SAVE ARTIFACT /gen/pb-go /pb AS LOCAL pb
build:
COPY go.mod go.sum ./
RUN go mod download
COPY +proto/pb pb
COPY main.go ./
RUN go build -o build/proto-example main.go
SAVE ARTIFACT build/proto-example
运行构建
在终端中运行以下命令来执行构建:
earthly +build
3. 应用案例和最佳实践
应用案例
Earthly 可以用于各种编程语言和框架的构建过程。例如,你可以使用 Earthly 来构建 Go 项目、Python 项目、Java 项目等。以下是一个简单的 Go 项目构建示例:
VERSION 0.8
FROM golang:1.15-alpine3.13
WORKDIR /app
build:
COPY go.mod go.sum ./
RUN go mod download
COPY main.go ./
RUN go build -o app main.go
SAVE ARTIFACT app AS LOCAL app
最佳实践
- 模块化构建:将复杂的构建过程分解为多个小的、可重用的目标(targets),以便于管理和维护。
- 缓存利用:充分利用 Earthly 的缓存机制,减少重复构建的时间。
- 跨项目引用:通过 Earthly 的引用机制,可以在不同的项目之间共享构建目标和工件。
4. 典型生态项目
Earthly 可以与多种 CI/CD 工具集成,如 Jenkins、CircleCI、GitHub Actions 和 GitLab CI/CD。以下是一些典型的生态项目:
- GitHub Actions:Earthly 可以作为 GitHub Actions 的工作流步骤,提供一致的构建环境。
- Jenkins:通过 Jenkins Pipeline,可以使用 Earthly 来执行构建任务。
- CircleCI:在 CircleCI 配置文件中调用 Earthly 命令,实现可重复的构建过程。
通过这些集成,Earthly 能够为你的 CI/CD 流程提供强大的支持,确保构建过程的可靠性和可重复性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考