From f6de1c6fd574125853c85bfe9aa03669eab7e09f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 7 May 2026 03:56:52 +0100 Subject: [PATCH] ci: update homebrew tap on release --- .github/workflows/release.yml | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4ce8020..ddf9508 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -150,3 +150,58 @@ jobs: fail_on_unmatched_files: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + update-homebrew-tap: + if: ${{ inputs.include_macos }} + runs-on: ubuntu-latest + needs: macos-release + steps: + - name: Resolve release tag + run: echo "RELEASE_TAG=${{ inputs.tag }}" >> "$GITHUB_ENV" + + - name: Dispatch tap formula update + env: + GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} + run: | + if [ -z "$GH_TOKEN" ]; then + echo "::error::Set HOMEBREW_TAP_TOKEN with workflow access to steipete/homebrew-tap" + exit 1 + fi + + request_id="imsg-${RELEASE_TAG}-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" + expected_title="Update imsg for ${RELEASE_TAG} (${request_id})" + + gh workflow run update-formula.yml \ + --repo steipete/homebrew-tap \ + --ref main \ + -f formula=imsg \ + -f tag="$RELEASE_TAG" \ + -f repository=steipete/imsg \ + -f macos_artifact=imsg-macos.zip \ + -f request_id="$request_id" + + run_id="" + for _ in {1..30}; do + run_id=$(gh run list \ + --repo steipete/homebrew-tap \ + --workflow update-formula.yml \ + --branch main \ + --event workflow_dispatch \ + --limit 20 \ + --json databaseId,displayTitle \ + --jq ".[] | select(.displayTitle == \"$expected_title\") | .databaseId" | head -n1) + if [ -n "$run_id" ]; then + break + fi + sleep 5 + done + + if [ -z "$run_id" ]; then + echo "::error::Could not find tap workflow run with title: $expected_title" + exit 1 + fi + + gh run watch "$run_id" \ + --repo steipete/homebrew-tap \ + --exit-status \ + --interval 10