diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e18efe62a1..aa24b3d531 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -11,7 +11,9 @@ "Bash(earthly +earthly-linux-amd64:*)", "Bash(cat:*)", "Bash(ls:*)", - "Bash(git rev-parse:*)" + "Bash(git rev-parse:*)", + "WebFetch(domain:earthly.dev)", + "Bash(gh issue view:*)" ] } } diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml new file mode 100644 index 0000000000..7e4ba978cc --- /dev/null +++ b/.github/workflows/deploy-site.yml @@ -0,0 +1,40 @@ +name: Deploy Marketing Site + +on: + push: + branches: [marketing-site] # TODO: change back to main before merge + paths: + - 'www/**' + - '.github/workflows/deploy-site.yml' + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Setup Pages + uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: ./www + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 diff --git a/README.md b/README.md index 47d249663d..82485e7ca1 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ If you're interested in understanding why the community fork is happening, [this [![Join the chat on Slack](https://img.shields.io/badge/slack-join%20chat-red.svg)](https://earthbuild.dev/slack) [![Docs](https://img.shields.io/badge/docs-earthbuild.dev-blue)](https://docs.earthbuild.dev) [![Website](https://img.shields.io/badge/website-earthbuild.dev-blue)](https://earthbuild.dev) -[![Install EarthBuild](https://img.shields.io/github/v/release/earthbuild/earthbuild.svg?label=install&color=1f626c)](https://earthbuild.dev/get-earthbuild) +[![Install EarthBuild](https://img.shields.io/github/v/release/earthbuild/earthbuild.svg?label=install&color=1f626c)](https://www.earthbuild.dev/install.html) [![Docker Hub](https://img.shields.io/badge/docker%20hub-earthly-blue)](https://hub.docker.com/u/earthly) [![License MPL-2](https://img.shields.io/badge/license-MPL-blue.svg)](./LICENSE) @@ -45,7 +45,7 @@ If you're interested in understanding why the community fork is happening, [this 🌎 [EarthBuild](https://earthbuild.dev/) is a versatile, approachable CI/CD framework that runs every pipeline inside containers, giving you repeatable builds that you write once and run anywhere. It has a super simple, instantly recognizable syntax that is easy to write and understand – like Dockerfile and Makefile had a baby. And it leverages and augments popular build tools instead of replacing them, so you don't have to rewrite all your builds no matter what languages you use.
-
Get EarthBuild
+
Get EarthBuild
---------------------------------- @@ -113,7 +113,7 @@ We use a target-based system to help users break up complex builds into reusable

Installation

-See [installation instructions](https://earthbuild.dev/get-earthbuild). +See [installation instructions](https://www.earthbuild.dev/install.html). To build from source, check the [contributing page](./CONTRIBUTING.md). diff --git a/docs/README.md b/docs/README.md index 76eb9e13f8..a1ba0624f1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -32,7 +32,7 @@ Earthbuild's key features/benefits are: ## Installation -The best way to install EarthBuild is by following the [installation instructions](https://earthbuild.dev/get-earthbuild). +The best way to install EarthBuild is by following the [installation instructions](https://www.earthbuild.dev/install.html). For a full list of installation options see the [alternative installation page](./alt-installation/alt-installation.md). diff --git a/docs/alt-installation/alt-installation.md b/docs/alt-installation/alt-installation.md index 39c27ba9b9..0a64c5d04f 100644 --- a/docs/alt-installation/alt-installation.md +++ b/docs/alt-installation/alt-installation.md @@ -1,6 +1,6 @@ # Alternative Installation -This page outlines alternative installation instructions for the `earthly` build tool. The main instructions that most users need are available in [Earthly Cloud](https://cloud.earthly.dev/login), or on the [installation instructions page](https://earthly.dev/get-earthly). +This page outlines alternative installation instructions for the `earth` build tool. The main instructions that most users need are available on the [installation page](https://www.earthbuild.dev/install.html). ## Prerequisites diff --git a/docs/basics/basics.md b/docs/basics/basics.md index c4033ec24b..37901a7893 100644 --- a/docs/basics/basics.md +++ b/docs/basics/basics.md @@ -19,7 +19,7 @@ This tutorial will walk you through a basic example of using EarthBuild. ## Installation -We recommend you install EarthBuild on your computer, so you can follow along and try the examples. See the [installation instructions](https://earthly.dev/get-earthly). +We recommend you install EarthBuild on your computer, so you can follow along and try the examples. See the [installation instructions](https://www.earthbuild.dev/install.html). ## Questions & Feedback diff --git a/docs/install/install.md b/docs/install/install.md index e89f73b41b..cfdd143e5c 100644 --- a/docs/install/install.md +++ b/docs/install/install.md @@ -1,3 +1,3 @@ # Install -To install the Earthly CLI on your machine, head over to the [Get Earthly page](https://earthly.dev/get-earthly). +To install the EarthBuild CLI on your machine, head over to the [installation page](https://www.earthbuild.dev/install.html). diff --git a/www/CNAME b/www/CNAME new file mode 100644 index 0000000000..58140bc544 --- /dev/null +++ b/www/CNAME @@ -0,0 +1 @@ +www.earthbuild.dev diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000000..b7ba05a6eb --- /dev/null +++ b/www/index.html @@ -0,0 +1,56 @@ + + + + + + EarthBuild - Build Anything, Anywhere + + + +
+

EarthBuild

+ +
+ +
+
+

Build Anything, Anywhere

+

EarthBuild is a simple, fast, and consistent build system for containerized, reproducible builds.

+

+ Get Started ¡ + Read the Docs +

+
+ +
+ +
+ +
+

Why EarthBuild?

+ +

Reproducible Builds

+

Run the same build on your laptop and in CI. Containerized execution ensures consistency across environments.

+ +

Familiar Syntax

+

If you know Dockerfiles and Makefiles, you already know EarthBuild. Get productive in minutes.

+ +

Fast Iteration

+

Smart caching and parallel execution make your builds fast. Change one file, rebuild only what's needed.

+
+
+ + + + diff --git a/www/install.html b/www/install.html new file mode 100644 index 0000000000..fe66efabe0 --- /dev/null +++ b/www/install.html @@ -0,0 +1,92 @@ + + + + + + Install EarthBuild + + + +
+

EarthBuild

+ +
+ +
+

Install EarthBuild

+

Get EarthBuild running on your machine in under a minute.

+ +

Prerequisites

+

EarthBuild requires Docker to be installed and running:

+ + +

macOS

+

Install with Homebrew:

+
brew tap earthbuild/earthbuild
+brew install earth
+ +

Or download directly:

+
curl -fsSL https://www.earthbuild.dev/install.sh | sh
+ +

Linux

+

Install with our script:

+
curl -fsSL https://www.earthbuild.dev/install.sh | sh
+ +

Or install manually:

+
# Download the latest release
+curl -LO https://github.com/EarthBuild/earthbuild/releases/latest/download/earth-linux-amd64
+
+# Make it executable
+chmod +x earth-linux-amd64
+
+# Move to your PATH
+sudo mv earth-linux-amd64 /usr/local/bin/earth
+ +

Windows (WSL 2)

+

Inside your WSL 2 environment:

+
curl -fsSL https://www.earthbuild.dev/install.sh | sh
+ +
+ Note: Native Windows support is experimental. We recommend using WSL 2. +
+ +

Nix / NixOS

+

EarthBuild is available in nixpkgs:

+
nix-shell -p earthbuild
+ +

Or add to your NixOS configuration:

+
environment.systemPackages = [ pkgs.earthbuild ];
+ +

For nix-darwin:

+
environment.systemPackages = [ pkgs.earthbuild ];
+ +

For home-manager:

+
home.packages = [ pkgs.earthbuild ];
+ +

Verify Installation

+
earth --version
+ +

Bootstrap EarthBuild (first-time setup):

+
earth bootstrap
+ +

Next Steps

+ +
+ + + + diff --git a/www/install.sh b/www/install.sh new file mode 100644 index 0000000000..e2116af611 --- /dev/null +++ b/www/install.sh @@ -0,0 +1,168 @@ +#!/bin/sh +set -e + +# EarthBuild installer script +# Usage: curl -fsSL https://www.earthbuild.dev/install.sh | sh + +GITHUB_REPO="EarthBuild/earthbuild" +INSTALL_DIR="/usr/local/bin" +BINARY_NAME="earth" + +log() { + echo "[earth] $1" +} + +error() { + echo "[earth] ERROR: $1" >&2 + exit 1 +} + +detect_os() { + log "Detecting operating system..." + OS="$(uname -s)" + case "$OS" in + Linux*) + OS="linux" + ;; + Darwin*) + OS="darwin" + ;; + MINGW*|MSYS*|CYGWIN*) + error "Native Windows is not supported. Please use WSL 2." + ;; + *) + error "Unsupported operating system: $OS" + ;; + esac + log "Detected OS: $OS" +} + +detect_arch() { + log "Detecting architecture..." + ARCH="$(uname -m)" + case "$ARCH" in + x86_64|amd64) + ARCH="amd64" + ;; + aarch64|arm64) + ARCH="arm64" + ;; + *) + error "Unsupported architecture: $ARCH" + ;; + esac + log "Detected architecture: $ARCH" +} + +check_dependencies() { + log "Checking dependencies..." + + if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then + error "Either curl or wget is required to download EarthBuild." + fi + + log "Dependencies OK" +} + +download_file() { + URL="$1" + OUTPUT="$2" + + if command -v curl >/dev/null 2>&1; then + curl -fsSL "$URL" -o "$OUTPUT" + elif command -v wget >/dev/null 2>&1; then + wget -q "$URL" -O "$OUTPUT" + fi +} + +get_latest_version() { + log "Fetching latest version..." + + LATEST_URL="https://github.com/$GITHUB_REPO/releases/latest" + + if command -v curl >/dev/null 2>&1; then + VERSION=$(curl -fsSI -o /dev/null -w '%{url_effective}' "$LATEST_URL" | sed 's|.*/||') + elif command -v wget >/dev/null 2>&1; then + VERSION=$(wget --spider --max-redirect=0 "$LATEST_URL" 2>&1 | grep -o 'releases/tag/[^"]*' | head -1 | sed 's|releases/tag/||') + fi + + if [ -z "$VERSION" ]; then + error "Failed to determine latest version. Check your internet connection." + fi + + log "Latest version: $VERSION" +} + +download_binary() { + BINARY_FILENAME="${BINARY_NAME}-${OS}-${ARCH}" + DOWNLOAD_URL="https://github.com/$GITHUB_REPO/releases/download/$VERSION/$BINARY_FILENAME" + + log "Downloading from: $DOWNLOAD_URL" + + TMP_DIR=$(mktemp -d) + TMP_FILE="$TMP_DIR/$BINARY_NAME" + + if ! download_file "$DOWNLOAD_URL" "$TMP_FILE"; then + rm -rf "$TMP_DIR" + error "Failed to download binary. The release asset may not exist for your platform ($OS/$ARCH)." + fi + + log "Download complete" +} + +install_binary() { + log "Installing to $INSTALL_DIR/$BINARY_NAME..." + + chmod +x "$TMP_FILE" + + if [ -w "$INSTALL_DIR" ]; then + mv "$TMP_FILE" "$INSTALL_DIR/$BINARY_NAME" + else + log "Requesting sudo access to install to $INSTALL_DIR..." + sudo mv "$TMP_FILE" "$INSTALL_DIR/$BINARY_NAME" + fi + + rm -rf "$TMP_DIR" + + log "Installation complete" +} + +verify_installation() { + log "Verifying installation..." + + if ! command -v "$BINARY_NAME" >/dev/null 2>&1; then + error "Installation failed. $BINARY_NAME not found in PATH." + fi + + INSTALLED_VERSION=$("$BINARY_NAME" --version 2>/dev/null || echo "unknown") + log "Installed: $INSTALLED_VERSION" +} + +main() { + echo "" + echo "==========================================" + echo " EarthBuild Installer" + echo "==========================================" + echo "" + + detect_os + detect_arch + check_dependencies + get_latest_version + download_binary + install_binary + verify_installation + + echo "" + echo "==========================================" + echo " Installation successful!" + echo "==========================================" + echo "" + echo "Next steps:" + echo "" + echo " 1. Run 'earth bootstrap' to complete setup" + echo " 2. Visit https://docs.earthbuild.dev/getting-started" + echo "" +} + +main