name: CI on: push: branches: - main pull_request: branches: - main permissions: contents: read jobs: verify-and-test-and-fuzz: strategy: matrix: go: ['1.19','1.20'] os: [ubuntu-latest, macos-latest, windows-latest] fail-fast: true runs-on: ${{ matrix.os }} steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup Go ${{ matrix.go }} uses: actions/setup-go@v4 with: go-version: ${{ matrix.go }} cache: false - name: Run GolangCI-Lint uses: golangci/golangci-lint-action@v3 with: version: v1.53 args: --timeout=5m - name: Run GoSec if: matrix.os == 'ubuntu-latest' uses: securego/gosec@master with: args: ./... - name: Run GoVulnCheck uses: golang/govulncheck-action@v1 with: go-version-input: ${{ matrix.go }} go-package: ./... - name: Run Tests run: go test -race -cover -coverprofile=coverage -covermode=atomic -v ./... - name: Run Fuzz Tests run: go test -v -fuzz FuzzEncodeDecode -fuzztime 60s - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: files: ./coverage