name: Go tests on: push: pull_request: schedule: # daily at 09:42 UTC - cron: '42 9 * * *' workflow_dispatch: permissions: contents: read jobs: test: strategy: fail-fast: false matrix: go: - { go-version: stable } - { go-version: oldstable } - { go-version-file: go.mod } os: - ubuntu-latest - macos-latest - windows-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 with: persist-credentials: false - uses: actions/setup-go@v6 with: go-version: ${{ matrix.go.go-version }} go-version-file: ${{ matrix.go.go-version-file }} - run: | go test -race ./... test-latest: runs-on: ubuntu-latest strategy: fail-fast: false matrix: go: - { go-version: stable } - { go-version: oldstable } - { go-version-file: go.mod } steps: - uses: actions/checkout@v5 with: persist-credentials: false - uses: actions/setup-go@v6 with: go-version: ${{ matrix.go.go-version }} go-version-file: ${{ matrix.go.go-version-file }} - uses: geomys/sandboxed-step@v1.2.1 with: run: | go get -u -t ./... go test -race ./... staticcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: persist-credentials: false - uses: actions/setup-go@v6 with: go-version: stable - uses: geomys/sandboxed-step@v1.2.1 with: run: go run honnef.co/go/tools/cmd/staticcheck@latest ./... govulncheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: persist-credentials: false - uses: actions/setup-go@v6 with: go-version: stable - uses: geomys/sandboxed-step@v1.2.1 with: run: go run golang.org/x/vuln/cmd/govulncheck@latest ./...