release: v0.9.1 #20
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 openclaw/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 openclaw/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 openclaw/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 openclaw/homebrew-tap \ | |
| --exit-status \ | |
| --interval 10 |