name: Go

on:
  push:
    branches: [ "master" ]
    tags: [ "*" ]
  pull_request:
    branches: [ "master" ]

permissions:
  contents: read
  pull-requests: read

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        go: [stable, oldstable]
        os: [macos-latest, windows-latest, ubuntu-latest]
    name: build
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: ${{ matrix.go }}
      - name: Build
        run: go build -v ./...
      - name: Test
        run: make test
  coverage:
    name: coverage
    permissions:
      contents: write
    concurrency:
      group: coverage
    runs-on: ubuntu-latest
    needs: [build]
    steps:
      - name: Update coverage report
        uses: ncruces/go-coverage-report@v0
        with:
          report: true
          chart: true
          amend: true
        if: |
          github.event_name == 'push'
        continue-on-error: true