? Wiederholbare Builds - Schreiben Sie einmal Builds und führen Sie sie überall aus - auf Ihrem Laptop, Fernbedienung und in jedem CI.
❤️ Super einfach - sofort erkennbare Syntax - wie Dockerfile und Makefile hatten ein Baby.
? Kompatibel mit jeder Sprache, jedem Rahmen- und Build -Tool - wenn es auf Linux ausgeführt wird, läuft es auf irdisch.
? Ideal für Monorepos und Polyrepos - organisieren Sie Ihre Build -Logik jedoch am sinnvollsten für Ihr Projekt.
? Schnelle Builds - Build Caching und Parallele Execution macht Builds automatisch schnell.
♻️ Wiederverwendung, wiederholen Sie nicht - schreiben Sie nie wieder denselben Code in mehreren Builds.
? Idlers ist ein vielseitiges, zugängliches CI/CD -Framework, das jede Pipeline in Containern ausführt und die Sie wiederholbare Builds erhalten, die Sie einmal schreiben und überall laufen. Es hat eine super einfache, sofort erkennbare Syntax, die leicht zu schreiben und zu verstehen ist - wie Dockerfile und Makefile hatten ein Baby. Und es nutzt und erweitert beliebte Build -Tools, anstatt sie zu ersetzen, sodass Sie nicht alle Ihre Builds umschreiben müssen, egal welche Sprachen Sie verwenden.

Im irdischen Läufen alle Builds in Behältern und machen sie in sich geschlossen, isoliert, wiederholbar und tragbar. Dies ermöglicht eine schnellere Iteration an Build -Skripten und einfacher Debuggs, wenn etwas schief geht -kein git commit -m "try again" . Wenn Sie einen Build schreiben, wissen Sie, dass es richtig ausgeführt wird, egal wo es läuft - Ihr Laptop, der Laptop eines Kollegen oder einen CI. Sie müssen keine Sprach-spezifische Werkzeuge konfigurieren, zusätzliche Abhängigkeiten installieren oder Ihre Build-Skripte komplizieren, um sicherzustellen, dass sie mit unterschiedlichem OSS kompatibel sind. Ichy gibt Ihnen konsequente, wiederholbare Builds, unabhängig davon, wo sie laufen.
Die Syntax von IDGHY ist leicht zu schreiben und zu verstehen. Die meisten Ingenieure können eine Earth -Datei sofort ohne Vorkenntnisse irdisch lesen. Wir haben einige der besten Ideen von Dockerfiles und Makefiles in eine Spezifikation kombiniert - wie Dockerfile und Makefile hatten ein Baby.
Irdly arbeitet mit den Compilern zusammen und baut Tools, die Sie verwenden. Wenn es auf Linux läuft, läuft es irdisch. Und Sie müssen Ihre vorhandenen Builds nicht umschreiben oder Ihr package.json , go.mod , build.gradle oder Cargo.toml -Dateien ersetzen. Sie können irdisch als Wrapper um Ihr vorhandenes Werkzeug verwenden und trotzdem die wiederholbaren Builds, die parallele Ausführung und das Aufbau von Caching erhalten.
Irdisches ist sowohl für Monorepos als auch für Polyrepos großartig. Sie können Ihre Build -Logik über mehrere Erdfiles teilen und tiefer in die Verzeichnisstruktur oder sogar in anderen Repositorys platzieren. Das Verweisen von Zielen aus anderen Erdfiles ist einfach, unabhängig davon, wo sie gespeichert sind. So können Sie Ihre Build -Logik organisieren, ist jedoch für Ihr Projekt am sinnvollsten.
Irdisch führt automatisch automatisch Build -Ziele aus und nutzt den Cache maximal. Das macht Builds schnell. IDGLY bietet auch leistungsstarke gemeinsame Caching -Fähigkeiten, die die Aufbauten häufig über ein Team oder in sandkäfigen Umgebungen wie irdischen Satelliten, Github -Aktionen oder Ihrem CI beschleunigen.
Wenn Ihr Build mehrere Schritte hat, wird irdisch:
Ich muss nie wieder den gleichen Code in mehreren Builds schreiben. Mit irdisch können Sie Ziele, Artefakte und Bilder über mehrere Erdfiles in anderen Repositories in einer einzigen Linie wiederverwenden. Das irdische Cache-bewusst ist, basierend auf den einzelnen Hashes jeder Datei, und hat Caching-Funktionen gemeinsam genutzt. So können Sie eine riesige und effiziente Build -Hierarchie erstellen, die nur die erforderlichen Mindestschritte ausführt.

Irdisches soll sowohl auf Ihrer Entwicklungsmaschine als auch in CI verwendet werden. Es läuft auf Ihrer CI/CD -Plattform (wie Jenkins, Circle CI, Github -Aktionen und Gitlab CI/CD). Ichy bietet die Vorteile eines modernen Build -Automatisierungssystems, wo immer es läuft - wie z. B. Zwischenspeichern und Parallelität. Es handelt sich um eine Klebstoffschicht zwischen sprachspezifischem Build-Werkzeug (wie Maven, Gradle, NPM, PIP, GO Build) und CI, der wie ein Wrapper um Ihre Build-Toolierung und Build-Logik arbeitet, die die Ausführung aus den Umgebungen isoliert, die sie betreiben.
Kurz gesagt: Behälter , Schichtdaching und komplexe Build -Diagramme !
Irdische Ausführungen in Containern, in denen die Ausführung isoliert ist. Die Abhängigkeiten des Builds sind ausdrücklich in der Build-Definition festgelegt, wodurch der Build autark wird.
Wir verwenden ein zielbasiertes System, um den Benutzern die Aufschlüsselung komplexer Builds in wiederverwendbare Teile zu unterstützen. Nichts wird zwischen anderen Zielen als klar erklärte Abhängigkeiten geteilt. Nichts geteilt bedeutet keine unerwarteten Rassenbedingungen. Tatsächlich wird der Build nach Möglichkeit parallel ausgeführt, ohne dass der Benutzer sich um Sperren oder unerwartete Umgebungsinteraktionen kümmert.
Beachten Sie Erdfiles könnten den mehrstufigen Builds der Dockerfile sehr ähnlich erscheinen. Tatsächlich wird die gleiche Technologie darunter verwendet. Ein wesentlicher Unterschied besteht jedoch darin, dass irdisch als Allzweck-Build-System ausgelegt ist, nicht nur als Docker-Bildspezifikation. Lesen Sie mehr darüber, wie irdisch sich von Dockerfiles unterscheidet.
Siehe Installationsanweisungen.
Um aus der Quelle zu erstellen, überprüfen Sie die beitragende Seite.
Hier sind einige Ressourcen, um Sie mit irdischem Einstieg zu erlangen
Siehe auch die vollständige Dokumentation.
Referenzseiten
# Earthfile
VERSION 0.8
FROM golang:1.15-alpine3.13
RUN apk --update --no-cache add git
WORKDIR /go-example
all :
BUILD +lint
BUILD +docker
build :
COPY main.go .
RUN go build -o build/go-example main.go
SAVE ARTIFACT build/go-example AS LOCAL build/go-example
lint :
RUN go get golang.org/x/lint/golint
COPY main.go .
RUN golint -set_exit_status ./...
docker :
COPY +build/go-example .
ENTRYPOINT [ "/go-example/go-example" ]
SAVE IMAGE go-example:latest // main.go
package main
import "fmt"
func main () {
fmt . Println ( "hello world" )
} Rufen Sie den Build mit earthly +all auf.

Beispiele für andere Sprachen sind in den Beispielen DIR verfügbar.
Wenn möglich, führt irdisch automatisch Ziele parallel aus.

Reduzieren Sie die Bauzeiten in CI durch gemeinsames Remote -Zwischenspeichern.

Erstellen Sie parallel für mehrere Plattformen.
VERSION 0.8
all :
BUILD
--platform = linux/amd64
--platform = linux/arm64
--platform = linux/arm/v7
--platform = linux/arm/v6
+build
build :
FROM alpine:3.18
CMD [ "uname" , "-m" ]
SAVE IMAGE multiplatform-image Sie müssen Ihr Team nicht bitten, protoc , eine bestimmte Version von Python, Java 1.6 oder .NET Core -Ökosystem zu installieren. Installieren Sie einmal in Ihrer Earth -Datei und es funktioniert für alle. Oder noch besser, Sie können einfach das reichhaltige Docker Hub -Ökosystem verwenden.
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-exampleSiehe vollständige Beispielcode.
Irdisches kann verwendet werden, um Ziele aus anderen Verzeichnissen oder sogar Repositories zu verweisen und zu erstellen. Wenn wir beispielsweise ein Beispielziel aus dem github.com/earthly/earthly Repository erstellen wollten, könnten wir ausgeben
# Try it yourself! No need to clone.
earthly github.com/earthly/earthly/examples/go:main+docker
# Run the resulting image.
docker run --rm earthly/examples:go Verwenden Sie + , um auf andere Ziele zu verweisen und komplexe Build-Abhängigkeiten zu erstellen.

Beispiele
Gleiches Verzeichnis (gleiche Earthfile)
BUILD +some-target
FROM +some-target
COPY +some-target/my-artifact ./Andere Verzeichnisse
BUILD ./some/local/path+some-target
FROM ./some/local/path+some-target
COPY ./some/local/path+some-target/my-artifact ./Andere Repositorys
BUILD github.com/someone/someproject:v1.2.3+some-target
FROM github.com/someone/someproject:v1.2.3+some-target
COPY github.com/someone/someproject:v1.2.3+some-target/my-artifact ./Geheimnisse werden nie in den Schichten eines Bildes gespeichert und stehen nur den Befehlen zur Verfügung, die sie benötigen.
earthly set /user/github/token ' shhh... ' release :
RUN --push --secret GITHUB_TOKEN = user/github/token github-release upload file.binDockerfiles wurden für die Angabe des Zusammenfalls von Docker-Bildern entwickelt, und dort stoppen Dockerfiles. Irdly nimmt einige wichtige Prinzipien von Dockerfiles (z. B. Schichtdachung), erweitert jedoch die Anwendungsfälle. Zum Beispiel kann irdisch regelmäßige Artefakte ausgeben, Einheiten und Integrationstests ausgeführt werden und mehrere Docker -Bilder gleichzeitig erstellen - alles außerhalb des Umfangs von Dockerfiles.
Es ist möglich, Dockerfiles in Kombination mit anderen Technologien (z. B. Makefiles oder Bash -Dateien) zu verwenden, um solche Anwendungsfälle zu lösen. Diese Kombinationen sind jedoch schwer parallel zu parallelisieren und es schwierig, die Repositorys zu skalieren, da ihnen ein robustes Importsystem fehlt, und oft variieren im Stil von einem Team zu einem anderen. Irdhry hat diese Einschränkungen nicht, da sie als allgemeines Aufbausystem konzipiert wurde.
Beispielsweise führt irdisch ein reichhaltigeres Ziel-, Artefakt- und Bildreferenzsystem ein, das eine bessere Wiederverwendung in komplexen Builds ermöglicht, die ein einzelnes großes Repository oder mehrere Repositorys überspannen. Da Dockerfiles nur ein Bild gleichzeitig beschreiben sollen, liegen solche Merkmale außerhalb des Anwendbarkeitsbereichs von Dockerfiles.
Schauen Sie sich die EarthFile Reference DOC -Seite an. Es hat alle Befehle dort und gibt an, welche Befehle die gleichen Befehle sind wie Dockerfile -Befehle und welche neu sind.
Ja! Sie können den Befehl FROM DOCKERFILE verwenden, um die Befehle in einer vorhandenen Dockerfile zu erben.
build :
FROM DOCKERFILE .
SAVE IMAGE some-image:latestSie können Ihre Dockerfiles auch optional auf irdisch vollständig portieren. Das Übersetzen von Dockerfiles in EarthFiles ist normalerweise eine Frage des Kopierens und der geringeren Anpassungen. Auf der Seite "Erste Schritte" finden Sie einige Beispiele für Earthfile.
Bazel ist ein von Google entwickeltes Build -Tool, um die Geschwindigkeit, Richtigkeit und Reproduzierbarkeit ihrer internen Monorepo -Codebasis zu optimieren. Der Hauptunterschied zwischen Basel und irdisch besteht darin, dass Basel ein Build-System ist, während irdisch ein allgemeines CI/CD-Framework ist. Eine ausführlichere Erklärung finden Sie in unseren FAQ.
Im Rahmen der Mozilla Public License Version 2.0 wird irdisch lizenziert. Siehe Lizenz.