name: Go on: push: branches: [ master ] pull_request: branches: - master types: [opened, synchronize] paths-ignore: - '**/*.md' workflow_dispatch: jobs: lint: name: Lint uses: nspcc-dev/.github/.github/workflows/go-linter.yml@master test: name: Test runs-on: ${{ matrix.os }} strategy: matrix: go: [ '1.24', '1.25'] os: [ubuntu-latest, windows-latest, macos-latest] exclude: # Only latest Go version for Windows and MacOS. - os: windows-latest go: '1.24' - os: macos-latest go: '1.24' # Exclude latest Go version for Ubuntu as Coverage uses it. - os: ubuntu-latest go: '1.25' steps: - name: Setup go uses: actions/setup-go@v5 with: go-version: ${{ matrix.go }} - name: Check out code into the Go module directory uses: actions/checkout@v4 - name: Tests run: go test -race ./... coverage: name: Coverage runs-on: ubuntu-latest steps: - name: Setup Go uses: actions/setup-go@v5 with: go-version: 1.25 - name: Check out uses: actions/checkout@v4 - name: Collect coverage run: go test -coverprofile=coverage.txt -covermode=atomic ./... - name: Upload coverage results to Codecov uses: codecov/codecov-action@v4 with: fail_ci_if_error: true files: ./coverage.txt slug: nspcc-dev/dbft token: ${{ secrets.CODECOV_TOKEN }} verbose: true codeql: name: CodeQL runs-on: ubuntu-slim strategy: fail-fast: false matrix: language: [ 'go' ] steps: - name: Checkout repository uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: Autobuild uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3