release: v0.7.1 #16
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: "Tag to (re)release (e.g. v0.1.0)" | |
| required: true | |
| type: string | |
| permissions: | |
| contents: write | |
| jobs: | |
| goreleaser: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Go | |
| uses: actions/setup-go@v6.4.0 | |
| with: | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Stash GoReleaser config | |
| run: cp .goreleaser.yaml /tmp/.goreleaser.yaml | |
| - name: Checkout release tag | |
| if: ${{ github.event_name == 'workflow_dispatch' }} | |
| run: git checkout ${{ inputs.tag }} | |
| - name: GoReleaser | |
| uses: goreleaser/goreleaser-action@v7.2.1 | |
| with: | |
| distribution: goreleaser | |
| version: "~> v2" | |
| 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 |