Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
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
15 changes: 15 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Release

on:
push:

jobs:
check:
runs-on: ubuntu-24.04-arm
steps:
- uses: earthbuild/actions-setup@main
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Check
run: earthly --ci +check
24 changes: 24 additions & 0 deletions Earthfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
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 .git Formula .
RUN brew tap EarthBuild/tap .

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

# audit the formula
audit:
FROM +src
RUN brew audit --new --signing --debug --audit-debug EarthBuild/tap/earth

# style check the formula
style:
FROM +src
RUN brew style --verbose --debug EarthBuild/tap/earth
53 changes: 33 additions & 20 deletions Formula/earth.rb
Original file line number Diff line number Diff line change
@@ -1,44 +1,57 @@
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",
revision: "52f2da6dd7f3de24a60a76e00044ec560b0ea407"
license "MPL-2.0"
head "https://github.com/EarthBuild/earthbuild.git", branch: "main"
desc 'Build automation tool for the container era'
homepage 'https://github.com/earthbuild'
url 'https://github.com/EarthBuild/earthbuild.git',
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
depends_on 'go' => :build

def install
ENV["CGO_ENABLED"] = "0"
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/"earth"), "./cmd/earthly"
tags = 'dfrunmount dfrunsecurity dfsecrets dfssh dfrunnetwork dfheredoc forceposix'
system 'go', 'build', '-tags', tags, *std_go_args(ldflags: ldflags, output: bin / 'earth'), './cmd/earthly'

bin.install_symlink "earth" => "earthly"
bin.install_symlink 'earth' => 'earthly'

generate_completions_from_executable(bin/"earth", "bootstrap", "--source", shells: [:bash, :zsh])
generate_completions_from_executable(bin / 'earth', 'bootstrap', '--source', shells: %i[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")
assert_match "+mytesttarget", output
output = shell_output("#{bin}/earth ls")
assert_match '+mytesttarget', output
end
end
Loading