From 335a95bd66c13f4a59a7c0a59f04533c8bffe382 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 7 May 2026 03:56:51 +0100 Subject: [PATCH] ci: update homebrew tap on release --- .github/workflows/release.yml | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43dd60e..dabfe69 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,3 +44,62 @@ jobs: args: release --clean --config /tmp/.goreleaser.yaml env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + update-homebrew-tap: + runs-on: ubuntu-latest + needs: goreleaser + steps: + - name: Resolve release tag + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "RELEASE_TAG=${{ inputs.tag }}" >> "$GITHUB_ENV" + else + echo "RELEASE_TAG=${{ github.ref_name }}" >> "$GITHUB_ENV" + fi + + - 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="discrawl-${RELEASE_TAG}-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" + expected_title="Update discrawl for ${RELEASE_TAG} (${request_id})" + + gh workflow run update-formula.yml \ + --repo steipete/homebrew-tap \ + --ref main \ + -f formula=discrawl \ + -f tag="$RELEASE_TAG" \ + -f repository=openclaw/discrawl \ + -f artifact_template="{formula}_{version}_{target}.tar.gz" \ + -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