name: Bump Homebrew Cask # Fires when a GH Release is published (not draft, not prerelease). # `release.types: [released]` event fires only for stable releases — still # double-checked by .github/actions/assert-stable-release for defense-in-depth. on: release: types: [released] workflow_dispatch: inputs: tag: description: 'Release tag to bump (for manual recovery)' required: true type: string permissions: contents: read concurrency: # Serialize bumps per tag; do not cancel in-progress bumps. group: bump-homebrew-${{ github.event.release.tag_name || inputs.tag }} cancel-in-progress: false jobs: bump: if: github.event_name == 'workflow_dispatch' || github.event.release.prerelease == false runs-on: ubuntu-latest # brew runs on Linux — saves macOS runner quota timeout-minutes: 30 steps: - name: Checkout code uses: actions/checkout@v6 - name: Re-assert stable release uses: ./.github/actions/assert-stable-release with: tag: ${{ github.event.release.tag_name || inputs.tag }} is_prerelease: ${{ github.event.release.prerelease || 'false' }} is_draft: ${{ github.event.release.draft || 'false' }} - name: Bump cask (push-or-update PR) uses: macauley/action-homebrew-bump-cask@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0 with: token: ${{ secrets.HOMEBREW_TOKEN }} tap: homebrew/cask cask: amethyst-nostr tag: ${{ github.event.release.tag_name || inputs.tag }} - name: Report failure if: failure() uses: actions/github-script@v9 with: script: | const tag = context.payload.release?.tag_name || context.payload.inputs?.tag || 'unknown'; const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; await github.rest.issues.create({ owner: context.repo.owner, repo: context.repo.repo, title: `[release-ops] bump-homebrew failed for ${tag}`, body: [ `Homebrew cask bump failed for release \`${tag}\`.`, ``, `- Run: ${runUrl}`, `- Channel: Homebrew Cask (\`amethyst-nostr\`)`, ``, `Recovery options:`, `1. Re-run the workflow once underlying issue is fixed`, `2. Manually run \`brew bump-cask-pr amethyst-nostr --version ${tag.replace(/^v/, '')}\``, `3. File PR directly against Homebrew/homebrew-cask` ].join('\n'), labels: ['release-ops', 'bug'] });