name: Release on: push: branches: - main paths: - "**.go" - "go.mod" - "go.sum" workflow_dispatch: jobs: test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: "1.24" - name: Run tests run: go test -race -v ./... version: needs: test runs-on: ubuntu-latest outputs: version: ${{ steps.semver.outputs.version }} version_tag: ${{ steps.semver.outputs.version_tag }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Calculate version id: semver uses: lukaszraczylo/semver-generator@v1 with: config_file: semver.yaml repository_local: true - name: Print version run: | echo "Version: ${{ steps.semver.outputs.version }}" echo "Version tag: ${{ steps.semver.outputs.version_tag }}" release: needs: version runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v5 with: go-version: "1.24" - name: Create and push tag run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git tag -a ${{ needs.version.outputs.version_tag }} -m "Release ${{ needs.version.outputs.version }}" git push origin ${{ needs.version.outputs.version_tag }} - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 with: distribution: goreleaser version: "~> v2" args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}