name: Test on: push: branches: - master pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: go-versions: runs-on: ubuntu-latest outputs: versions: ${{ steps.versions.outputs.value }} steps: - id: versions run: | versions=$(curl -s 'https://go.dev/dl/?mode=json' | jq -c 'map(.version[2:])') echo "::set-output name=value::${versions}" test: needs: go-versions strategy: fail-fast: false matrix: go-version: ${{fromJson(needs.go-versions.outputs.versions)}} os: [ubuntu-22.04, ubuntu-20.04, ubuntu-24.04, windows-2022, windows-2019, macos-13, macos-14, macos-15] runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install Go uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ matrix.go-version }} - name: Test run: | go test -coverprofile='coverage.out' -covermode=atomic ./...