diff --git a/.env b/.env new file mode 100644 index 0000000..4bd5d72 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +EARTHLY_INSTALLATION_NAME=earthbuild-tap \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..e55734d --- /dev/null +++ b/.github/workflows/release.yaml @@ -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 diff --git a/Earthfile b/Earthfile new file mode 100644 index 0000000..5299eb0 --- /dev/null +++ b/Earthfile @@ -0,0 +1,39 @@ +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 checks for Homebrew 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 + +test-install-bin: + FROM +src + RUN brew install --debug EarthBuild/tap/earth + +test-install-src: + FROM +src + RUN brew install --head --build-from-source --debug EarthBuild/tap/earth \ No newline at end of file diff --git a/Formula/earth.rb b/Formula/earth.rb index df23059..544d37a 100644 --- a/Formula/earth.rb +++ b/Formula/earth.rb @@ -2,13 +2,16 @@ 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" + tag: "v0.8.17-rc-0", + revision: "0574020c3a62ef0bab81247078cb9c3e66eb51f6" + 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 @@ -17,28 +20,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, "-ldflags", ldflags.join(" "), "-o", "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