ci: build and publish Homebrew package

This commit is contained in:
Jarek Kowalski
2021-03-21 18:41:08 -07:00
parent bcfba334da
commit 2e5a3ad3a3
4 changed files with 77 additions and 1 deletions

View File

@@ -190,4 +190,5 @@ jobs:
GITHUB_TOKEN: ${{secrets.GH_TOKEN}}
- name: Publish Other Packages
run: make publish-packages
env:
GITHUB_TOKEN: ${{secrets.GH_TOKEN}}

View File

@@ -351,6 +351,7 @@ publish-packages:
ifeq ($(REPO_OWNER)/$(GOOS)/$(GOARCH)/$(IS_PULL_REQUEST),kopia/linux/amd64/false)
$(CURDIR)/tools/apt-publish.sh $(CURDIR)/dist
$(CURDIR)/tools/rpm-publish.sh $(CURDIR)/dist
$(CURDIR)/tools/homebrew-publish.sh $(CURDIR)/dist $(KOPIA_VERSION_NO_PREFIX)
@echo $(DOCKERHUB_TOKEN) | docker login --username $(DOCKERHUB_USERNAME) --password-stdin
$(CURDIR)/tools/docker-publish.sh $(CURDIR)/dist_binaries
else

40
tools/homebrew-publish.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
set -e
dist_dir=$1
ver=$2
if [ "$CI_TAG" == "" ]; then
echo Not publishing Homebrew package on non-tagged releases.
exit 0
fi
if [ "$GITHUB_TOKEN" == "" ]; then
echo Not publishing Homebrew package because GITHUB_TOKEN is not set.
exit 0
fi
if [ "$REPO_OWNER/$GITHUB_REF" != "kopia/refs/heads/master" ]; then
echo Not publishing Homebrew package on $REPO_OWNER/$GITHUB_REF
exit 0
fi
echo Publishing Homebrew version $ver from $dist_dir...
HASH_MAC_AMD64=$(sha256sum $dist_dir/kopia-$ver-macOS-x64.tar.gz | cut -f 1 -d " ")
HASH_MAC_ARM64=$(sha256sum $dist_dir/kopia-$ver-macOS-arm64.tar.gz | cut -f 1 -d " ")
HASH_LINUX_AMD64=$(sha256sum $dist_dir/kopia-$ver-linux-x64.tar.gz | cut -f 1 -d " ")
HASH_LINUX_ARM64=$(sha256sum $dist_dir/kopia-$ver-linux-arm64.tar.gz | cut -f 1 -d " ")
HASH_LINUX_ARM=$(sha256sum $dist_dir/kopia-$ver-linux-arm.tar.gz | cut -f 1 -d " ")
tmpdir=$(mktemp -d)
git clone https://$GITHUB_TOKEN@github.com/kopia/homebrew-kopia.git $tmpdir
cat tools/kopia-homebrew.rs.template | \
sed "s/VERSION/$ver/g" | \
sed "s/HASH_MAC_AMD64/$HASH_MAC_AMD64/g" | \
sed "s/HASH_MAC_ARM64/$HASH_MAC_ARM64/g" | \
sed "s/HASH_LINUX_AMD64/$HASH_LINUX_AMD64/g" | \
sed "s/HASH_LINUX_ARM64/$HASH_LINUX_ARM64/g" |
sed "s/HASH_LINUX_ARM/$HASH_LINUX_ARM/g" > $tmpdir/kopia.rb
(cd $tmpdir && git add kopia.rb && git -c "user.name=Kopia Builder" -c "user.email=builder@kopia.io" commit -m "Brew formula update for kopia version $ver" && git push)
rm -rf "$tmpdir"

View File

@@ -0,0 +1,34 @@
# typed: false
# frozen_string_literal: true
class Kopia < Formula
desc "Fast and secure open source backup."
homepage "https://kopia.io"
version "VERSION"
bottle :unneeded
if OS.mac? && Hardware::CPU.intel?
url "https://github.com/kopia/kopia/releases/download/vVERSION/kopia-VERSION-macOS-x64.tar.gz"
sha256 "HASH_MAC_AMD64"
end
if OS.mac? && Hardware::CPU.arm?
url "https://github.com/kopia/kopia/releases/download/vVERSION/kopia-VERSION-macOS-arm64.tar.gz"
sha256 "HASH_MAC_ARM64"
end
if OS.linux? && Hardware::CPU.intel?
url "https://github.com/kopia/kopia/releases/download/vVERSION/kopia-VERSION-linux-x64.tar.gz"
sha256 "HASH_LINUX_AMD64"
end
if OS.linux? && Hardware::CPU.arm? && !Hardware::CPU.is_64_bit?
url "https://github.com/kopia/kopia/releases/download/vVERSION/kopia-VERSION-linux-arm.tar.gz"
sha256 "HASH_LINUX_ARM"
end
if OS.linux? && Hardware::CPU.arm? && Hardware::CPU.is_64_bit?
url "https://github.com/kopia/kopia/releases/download/vVERSION/kopia-VERSION-linux-arm64.tar.gz"
sha256 "HASH_LINUX_ARM64"
end
def install
bin.install "kopia"
end
end