diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 780019e2..0ee1d9c6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -54,10 +54,12 @@ jobs: julia --color=yes --threads=auto --check-bounds=yes --depwarn=yes --code-coverage=user -e 'import Coverage; import Pkg; Pkg.activate("."); Pkg.test(coverage=true)' julia --color=yes coverage.jl shell: bash - - uses: codecov/codecov-action@v5 + - name: Upload coverage artifact + if: success() + uses: actions/upload-artifact@v6 with: - token: ${{ secrets.CODECOV_TOKEN }} - files: lcov.info + name: coverage-${{ matrix.os }}-julia-${{ matrix.julia-version }} + path: lcov.info additional_tests: @@ -89,8 +91,37 @@ jobs: SR_TEST=${{ matrix.test_name }} julia --color=yes --threads=auto --check-bounds=yes --depwarn=yes --code-coverage=user -e 'import Coverage; import Pkg; Pkg.activate("."); Pkg.test(coverage=true)' julia --color=yes coverage.jl shell: bash - - uses: codecov/codecov-action@v5 + - name: Upload coverage artifact if: steps.run-tests.outcome == 'success' + uses: actions/upload-artifact@v6 + with: + name: coverage-${{ matrix.test_name }}-${{ matrix.os }}-julia-${{ matrix.julia-version }} + path: lcov.info + + + codecov: + name: Upload combined coverage to Codecov + runs-on: ubuntu-latest + needs: + - test + - additional_tests + steps: + - name: Download coverage artifacts + uses: actions/download-artifact@v7 + with: + pattern: coverage-* + path: coverage + + - name: Merge lcov files + run: | + set -euxo pipefail + cd coverage + find . -name 'lcov.info' -print + cat $(find . -name 'lcov.info' -print | sort) > merged-lcov.info + wc -l merged-lcov.info + + - name: Upload to Codecov + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} - files: lcov.info + files: coverage/merged-lcov.info