name: Release
on:
  push:
    branches:
      - "2.11.x"
      - main
      - next
    tags-ignore:
      - '**'
  pull_request:
    branches:
      - '**'
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        go: ['1.24', '1.25']
    name: Go ${{ matrix.go }} test
    steps:
      - uses: actions/checkout@v6
      - name: Setup go
        uses: actions/setup-go@v6
        with:
          go-version: ${{ matrix.go }}
      - run: go test -race -v -coverprofile=profile.cov -coverpkg=./pkg/... ./pkg/...
      - uses: codecov/codecov-action@v5.5.2
        with:
          file: ./profile.cov
          name: codecov-go
  release:
    runs-on: ubuntu-24.04
    needs: [test]
    if: ${{ github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/next' }}
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
    - name: Source checkout
      uses: actions/checkout@v6
    - name: Semantic Release
      uses: cycjimmy/semantic-release-action@v6
      with:
        dry_run: false
        semantic_version: 18.0.1
        extra_plugins: |
          @semantic-release/exec@6.0.3
