Skip to content

Polish native macOS app layout #2

Polish native macOS app layout

Polish native macOS app layout #2

Workflow file for this run

name: Release
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
inputs:
version:
description: "Release version without v prefix"
required: true
type: string
permissions:
contents: write
jobs:
macos:
name: Build macOS Homebrew release
runs-on: macos-latest
env:
HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
HOMEBREW_TAP_REPOSITORY: rootsec1/homebrew-kite
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Resolve version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
TAG="v${VERSION}"
else
TAG="${GITHUB_REF_NAME}"
VERSION="${TAG#v}"
fi
echo "RELEASE_VERSION=${VERSION}" >> "$GITHUB_ENV"
echo "RELEASE_TAG=${TAG}" >> "$GITHUB_ENV"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin,x86_64-apple-darwin
- name: Install frontend dependencies
run: bun install --frozen-lockfile
- name: Build universal DMG
run: bun run tauri:build -- --target universal-apple-darwin
- name: Normalize release assets
run: |
mkdir -p release-assets
DMG_PATH="$(find src-tauri/target -path '*/bundle/dmg/*.dmg' -print -quit)"
if [ -z "$DMG_PATH" ]; then
echo "::error::No DMG was produced by Tauri"
exit 1
fi
DMG_NAME="Kite_${RELEASE_VERSION}_universal.dmg"
cp "$DMG_PATH" "release-assets/$DMG_NAME"
shasum -a 256 "release-assets/$DMG_NAME" > release-assets/checksums.txt
DMG_SHA256="$(cut -d ' ' -f 1 release-assets/checksums.txt)"
DMG_URL="https://github.com/rootsec1/kite/releases/download/${RELEASE_TAG}/${DMG_NAME}"
echo "DMG_NAME=$DMG_NAME" >> "$GITHUB_ENV"
echo "DMG_SHA256=$DMG_SHA256" >> "$GITHUB_ENV"
echo "DMG_URL=$DMG_URL" >> "$GITHUB_ENV"
- name: Generate Homebrew cask
run: |
bun scripts/generate-homebrew-cask.mjs \
--version "$RELEASE_VERSION" \
--sha256 "$DMG_SHA256" \
--url "$DMG_URL" \
--output release-assets/kite.rb
- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: Kite ${{ env.RELEASE_VERSION }}
draft: false
prerelease: false
files: |
release-assets/${{ env.DMG_NAME }}
release-assets/checksums.txt
release-assets/kite.rb
- name: Update Homebrew tap
if: env.HOMEBREW_TAP_TOKEN != ''
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git clone "https://x-access-token:${HOMEBREW_TAP_TOKEN}@github.com/${HOMEBREW_TAP_REPOSITORY}.git" homebrew-tap
mkdir -p homebrew-tap/Casks
cp release-assets/kite.rb homebrew-tap/Casks/kite.rb
cd homebrew-tap
git add Casks/kite.rb
if git diff --cached --quiet; then
echo "Homebrew cask already up to date."
else
git commit -m "Update Kite to ${RELEASE_VERSION}"
git push origin HEAD:main
fi