name: build-and-test
on: [push, pull_request]
jobs:
  build:
    strategy:
      matrix:
        version: [1.21]
        os: [ubuntu-latest, windows-latest, macos-latest]
    name: Build
    runs-on: ${{ matrix.os }}
    steps:
    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: ${{ matrix.version }}
      id: go

    - name: checkout
      uses: actions/checkout@v3

    - name: build
      run: go build

    - name: test
      run: make test

    - name: Update coverage report
      uses: ncruces/go-coverage-report@main
      with:
        report: true
        chart: true
        amend: true
      if: |
        matrix.os == 'ubuntu-latest' &&
        github.event_name == 'push'  
      continue-on-error: true
  
  golangci:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v3
        with:
          go-version: 1.21
      - uses: actions/checkout@v3
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v3
