Skip to content

Push Homebrew formula to 2.x (main is protected) #7

Push Homebrew formula to 2.x (main is protected)

Push Homebrew formula to 2.x (main is protected) #7

Workflow file for this run

---
name: release
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
- '[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+'
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Build linux-amd64
run: GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${GITHUB_REF_NAME}" -o bin/linux-amd64/gitte .
- run: tar czf bin/gitte-linux-amd64.tar.gz -C bin/linux-amd64 gitte
- name: Build linux-arm64
run: GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${GITHUB_REF_NAME}" -o bin/linux-arm64/gitte .
- run: tar czf bin/gitte-linux-arm64.tar.gz -C bin/linux-arm64 gitte
- name: Build windows-amd64
run: GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${GITHUB_REF_NAME}" -o bin/windows-amd64/gitte.exe .
- run: (cd bin/windows-amd64 && zip ../gitte-windows-amd64.zip gitte.exe)
- name: Build darwin-amd64
run: GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${GITHUB_REF_NAME}" -o bin/darwin-amd64/gitte .
- run: tar czf bin/gitte-darwin-amd64.tar.gz -C bin/darwin-amd64 gitte
- name: Build darwin-arm64
run: GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${GITHUB_REF_NAME}" -o bin/darwin-arm64/gitte .
- run: tar czf bin/gitte-darwin-arm64.tar.gz -C bin/darwin-arm64 gitte
- name: Create GitHub Release
if: github.ref_type == 'tag'
run: |
gh release create "${GITHUB_REF_NAME}" bin/gitte-*.tar.gz bin/gitte-*.zip --generate-notes ||
gh release upload "${GITHUB_REF_NAME}" bin/gitte-*.tar.gz bin/gitte-*.zip --clobber
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to APT (gitte-ppa.cego.dk)
if: github.ref_type == 'tag'
continue-on-error: true
env:
VERSION: ${{ github.ref_name }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
PPA_SSH_KEY: ${{ secrets.PPA_SSH_KEY }}
run: |
sudo apt-get install -y dpkg-dev apt-utils
echo "${GPG_PRIVATE_KEY}" | gpg --batch --import
DESCRIPTION="Developer environment orchestration tool"
for ARCH in amd64 arm64; do
SRCBIN="bin/linux-${ARCH}/gitte"
PKGDIR="pkg/gitte_${VERSION}_${ARCH}"
mkdir -p "${PKGDIR}/DEBIAN" "${PKGDIR}/usr/local/bin"
cat > "${PKGDIR}/DEBIAN/control" << EOF
Name: gitte
Package: gitte
Version: ${VERSION}
Architecture: ${ARCH}
Author: Cego A/S <noc+gitte@cego.dk>
Maintainer: Cego A/S <noc+gitte@cego.dk>
Description: ${DESCRIPTION}
Homepage: https://github.com/cego/gitte
Website: https://github.com/cego/gitte
EOF
cp "${SRCBIN}" "${PKGDIR}/usr/local/bin/"
dpkg-deb --root-owner-group --build "${PKGDIR}" ppa/
done
(cd ppa && dpkg-scanpackages --multiversion . > Packages)
(cd ppa && gzip -k -f Packages)
(cd ppa && apt-ftparchive release . > Release)
(cd ppa && gpg --default-key "noc+gitte@cego.dk" -abs -o - Release > Release.gpg)
(cd ppa && gpg --default-key "noc+gitte@cego.dk" --clearsign -o - Release > InRelease)
echo "${PPA_SSH_KEY}" > /tmp/ppa_key
chmod 600 /tmp/ppa_key
rsync -az -e "ssh -i /tmp/ppa_key -o StrictHostKeyChecking=no" \
ppa/ deploy@gitte-ppa.cego.dk:/var/www/ppa/
rm /tmp/ppa_key
- name: Update Homebrew formula
if: github.ref_type == 'tag'
env:
VERSION: ${{ github.ref_name }}
run: |
SHA_DARWIN_AMD64=$(sha256sum bin/gitte-darwin-amd64.tar.gz | awk '{print $1}')
SHA_DARWIN_ARM64=$(sha256sum bin/gitte-darwin-arm64.tar.gz | awk '{print $1}')
SHA_LINUX_AMD64=$(sha256sum bin/gitte-linux-amd64.tar.gz | awk '{print $1}')
SHA_LINUX_ARM64=$(sha256sum bin/gitte-linux-arm64.tar.gz | awk '{print $1}')
git config user.email "noc+gitte@cego.dk"
git config user.name "CI"
git fetch origin 2.x
git checkout 2.x
mkdir -p Formula
cat > Formula/gitte.rb << EOF
class Gitte < Formula
desc "Developer environment orchestration tool"
homepage "https://github.com/cego/gitte"
version "${VERSION}"
license "MIT"
on_macos do
if Hardware::CPU.arm?
url "https://github.com/cego/gitte/releases/download/${VERSION}/gitte-darwin-arm64.tar.gz"
sha256 "${SHA_DARWIN_ARM64}"
else
url "https://github.com/cego/gitte/releases/download/${VERSION}/gitte-darwin-amd64.tar.gz"
sha256 "${SHA_DARWIN_AMD64}"
end
end
on_linux do
if Hardware::CPU.arm?
url "https://github.com/cego/gitte/releases/download/${VERSION}/gitte-linux-arm64.tar.gz"
sha256 "${SHA_LINUX_ARM64}"
else
url "https://github.com/cego/gitte/releases/download/${VERSION}/gitte-linux-amd64.tar.gz"
sha256 "${SHA_LINUX_AMD64}"
end
end
def install
bin.install "gitte"
end
test do
system "#{bin}/gitte", "--version"
end
end
EOF
git add Formula/gitte.rb
git commit -m "Update Homebrew formula for ${VERSION}"
git push origin 2.x