Skip to content
Draft
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
EARTHLY_INSTALLATION_NAME=earthbuild-tap
21 changes: 21 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Release

on:
push:

permissions:
contents: write

jobs:
check:
runs-on: ubuntu-24.04-arm
env:
FORCE_COLOR: 1
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: earthbuild/actions-setup@main

- name: Lint
run: earthly --ci +lint
31 changes: 31 additions & 0 deletions Earthfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
VERSION 0.8
FROM homebrew/brew:4.6.20
ENV HOMEBREW_NO_AUTO_UPDATE=1
WORKDIR /home/linuxbrew/earthbuild-tap
RUN brew developer on

src:
COPY --dir Formula .
RUN \
git config --global init.defaultBranch main && \
git init && \
git config user.email "local@local" && \
git config user.name "local" && \
git add . && \
git commit -m "local snapshot"
RUN brew tap EarthBuild/tap .

# lint verify the formula for code quality
lint:
BUILD +audit
BUILD +style

# audit checks for Homebrew coding style violations
audit:
FROM +src
RUN brew audit --new --signing --debug --audit-debug EarthBuild/tap/earth

# style checks for conformance to Homebrew style guidelines
style:
FROM +src
RUN brew style --verbose --debug EarthBuild/tap/earth
26 changes: 18 additions & 8 deletions Formula/earth.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ class Earth < Formula
desc "Build automation tool for the container era"
homepage "https://github.com/earthbuild"
url "https://github.com/EarthBuild/earthbuild.git",
tag: "v0.8.17",
tag: "v0.8.17-rc-0",
revision: "52f2da6dd7f3de24a60a76e00044ec560b0ea407"
license "MPL-2.0"
head "https://github.com/EarthBuild/earthbuild.git", branch: "main"

bottle do
sha256 cellar: :any_skip_relocation, arm64_tahoe: "194e4b767c3d1a551453ceb3739345c84de89533768b352e3b339d116497a238"
sha256 cellar: :any_skip_relocation, arm64_tahoe: "194e4b767c3d1a551453ceb3739345c84de89533768b352e3b339d116497a238"
sha256 cellar: :any_skip_relocation, arm64_linux: "f7f743e111f7791301299c304b27fa1d4eda0a48b150c6270374fb360ee29b5b"
sha256 cellar: :any_skip_relocation, x86_64_linux: "8eba8b430051d74be92b403116c7e510225bcc3a94fb8fec7f836f2959dd4227"
end

depends_on "go" => :build
Expand All @@ -17,28 +19,36 @@ def install
ENV["CGO_ENABLED"] = "0"
ldflags = %W[
-s -w
-X main.DefaultBuildkitdImage=docker.io/earthly/buildkitd:v0.8.16
-X main.DefaultBuildkitdImage=docker.io/earthbuild/buildkitd:v0.8.17-rc-0
-X main.Version=v#{version}
-X main.GitSha=#{Utils.git_head}
-X main.BuiltBy=homebrew-earthbuild
]
tags = "dfrunmount dfrunsecurity dfsecrets dfssh dfrunnetwork dfheredoc forceposix"
system "go", "build", "-tags", tags, *std_go_args(ldflags: ldflags, output: bin/"earthly"), "./cmd/earthly"
system "go", "build", "-tags", tags, *std_go_args(ldflags: ldflags, output: bin / "earth"), "./cmd/earthly"

bin.install_symlink "earthly" => "earth"

generate_completions_from_executable(bin/"earth", "bootstrap", "--source", shells: [:bash, :zsh])
end

def caveats
<<~EOS
EarthBuild requires a container runtime to function.
If you don"t have one, you can install Docker or Podman:
brew install --cask docker
OR
brew install podman
EOS
end

test do
# earthbuild requires docker to run; therefore doing a complete end-to-end test here is not
# possible; however the "earthbuild ls" command is able to run without docker.
(testpath/"Earthfile").write <<~EOS
(testpath / "Earthfile").write <<~EOS
VERSION 0.8
mytesttarget:
\tRUN echo Homebrew
EOS
output = shell_output("#{bin}/earthly ls")
output = shell_output("#{bin}/earth ls")
assert_match "+mytesttarget", output
end
end