From 84f94f5ec7d98828665df92335336517edf82d0c Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 1 Mar 2024 12:50:12 +0300 Subject: [PATCH 1/5] workflows: drop obsolete steps These are done automatically. Signed-off-by: Roman Khimov --- .github/workflows/tests.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 55290e07..4fb99c48 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,15 +27,6 @@ jobs: with: go-version: '${{ matrix.go_versions }}' - - name: Restore Go modules from cache - uses: actions/cache@v4 - with: - path: /home/runner/go/pkg/mod - key: deps-${{ hashFiles('go.sum') }} - - - name: Update Go modules - run: make dep - - name: Run tests run: make test-full From 5d5fb090e63a810439f419aea796e37c6bd3c650 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 1 Mar 2024 12:55:13 +0300 Subject: [PATCH 2/5] workflows: enable race detection for tests Signed-off-by: Roman Khimov --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4fb99c48..185c9f09 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,7 +28,7 @@ jobs: go-version: '${{ matrix.go_versions }}' - name: Run tests - run: make test-full + run: go test -race -tags aiotest ./... lint: runs-on: ubuntu-latest From ba0e96eef7a790fe5b5946a5cdcba1503f4122b8 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 1 Mar 2024 12:55:33 +0300 Subject: [PATCH 3/5] workflows: add coverage task, upload to CodeCov Signed-off-by: Roman Khimov --- .github/workflows/tests.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 185c9f09..ccf9e4f3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,3 +40,32 @@ jobs: uses: golangci/golangci-lint-action@v3 with: version: latest + + cover: + name: Coverage + runs-on: ubuntu-latest + + env: + CGO_ENABLED: 0 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + cache: true + go-version: 1.22 + + - name: Test and write coverage profile + run: go test -tags aiotest -coverprofile=coverage.txt -covermode=atomic ./... + + - name: Upload coverage results to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: nspcc-dev/neofs-sdk-go + fail_ci_if_error: true + files: ./coverage.txt + verbose: true From 6b79823a5e10e84c4b6220462388c10a933ab48a Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 1 Mar 2024 12:56:58 +0300 Subject: [PATCH 4/5] workflows: expand the set of platforms to test on Unfortunately, not all of them can run Docker-based tests. Signed-off-by: Roman Khimov --- .github/workflows/tests.yml | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ccf9e4f3..8d8790b6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,10 +12,28 @@ on: jobs: tests: name: Tests - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: matrix: - go_versions: [ '1.20', '1.21', '1.22' ] + os: [ubuntu-latest, windows-2022, macos-12, macos-14] + go: [ '1.20', '1.21', '1.22' ] + exclude: + # Only latest Go version for Windows and MacOS. + - os: windows-2022 + go: '1.20' + - os: windows-2022 + go: '1.21' + - os: macos-12 + go: '1.20' + - os: macos-12 + go: '1.21' + - os: macos-14 + go: '1.20' + - os: macos-14 + go: '1.21' + # Exclude latest Go version for Ubuntu as Coverage uses it. + - os: ubuntu-latest + go: '1.22' fail-fast: false steps: - uses: actions/checkout@v4 @@ -25,11 +43,16 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '${{ matrix.go_versions }}' + go-version: '${{ matrix.go }}' - - name: Run tests + - name: Run tests (with AIO) + if: ${{ matrix.os == 'ubuntu-latest' }} run: go test -race -tags aiotest ./... + - name: Run tests (without AIO) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: go test -race ./... + lint: runs-on: ubuntu-latest steps: From 331abfea2e80db091b401ce2b614c7a5b782c29c Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 1 Mar 2024 12:57:30 +0300 Subject: [PATCH 5/5] workflows: enable CodeQL Signed-off-by: Roman Khimov --- .github/workflows/tests.yml | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8d8790b6..42a9e212 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -92,3 +92,48 @@ jobs: fail_ci_if_error: true files: ./coverage.txt verbose: true + + codeql: + name: CodeQL + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'go' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2