Skip to content

Commit

Permalink
fix(codecov): merge coverage for a single upload by workflow (#1190)
Browse files Browse the repository at this point in the history
It appears that the retry system introduced in #1186 was not sufficient,
as we still hit API limits when running multiple checks concurrently.
This PR merges all coverage files into a single upload at the of each
testing workflows. As a result, we now have 3 uploads instead of 16,
which should drastically reduce the number of Codecov upload failures.

Note: It still appears to fail randomly, but we might need to wait some
time until our API rate decreases. I believe it's still preferable to
have 3 uploads rather than 16, which seemed to overwhelm Codecov.

---------

Signed-off-by: gfanton <8671905+gfanton@users.noreply.github.com>
  • Loading branch information
gfanton committed Oct 3, 2023
1 parent 39ab2da commit c315db6
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 44 deletions.
32 changes: 18 additions & 14 deletions .github/workflows/gnoland.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,22 +74,26 @@ jobs:
export GOPATH=$HOME/go
export GOTEST_FLAGS="-v -p 1 -timeout=30m -coverprofile=coverage.out -covermode=atomic"
make ${{ matrix.args }}
- uses: actions/upload-artifact@v3
if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
with:
name: ${{runner.os}}-coverage-gnoland-${{ matrix.args}}-${{matrix.goversion}}
path: ./gno.land/coverage.out

# NOTE: Using retry action to manage occasional upload failures to codecov.io, due to API limits.
# Refer to issue#3954: https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
- if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
name: Upload coverage to Codecov.io
uses: Wandalen/wretry.action@v1.3.0
upload-coverage:
needs: test
runs-on: ubuntu-latest
steps:
- name: Download all previous coverage artifacts
uses: actions/download-artifact@v3
with:
path: ${{ runner.temp }}/coverage
- name: Upload combined coverage to Codecov
uses: codecov/codecov-action@v3
with:
attempt_limit: 3
attempt_delay: 30000
action: codecov/codecov-action@v3
with: |
token: ${{ secrets.CODECOV_TOKEN }}
name: gno.land
flags: gno.land-${{matrix.args}}
files: ./gno.land/coverage.out
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}
directory: ${{ runner.temp }}/coverage
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}

docker-integration:
strategy:
Expand Down
34 changes: 19 additions & 15 deletions .github/workflows/gnovm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,20 +78,24 @@ jobs:
export GOPATH=$HOME/go
export GOTEST_FLAGS="-v -p 1 -timeout=30m -coverprofile=coverage.out -covermode=atomic"
make ${{ matrix.args }}
- uses: actions/upload-artifact@v3
if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
with:
name: ${{runner.os}}-coverage-gnovm-${{ matrix.args}}-${{matrix.goversion}}
path: ./gnovm/coverage.out

# NOTE: Using retry action to manage occasional upload failures to codecov.io, due to API limits.
# Refer to issue#3954: https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
- if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
name: Upload coverage to Codecov.io
uses: Wandalen/wretry.action@v1.3.0
upload-coverage:
needs: test
runs-on: ubuntu-latest
steps:
- name: Download all previous coverage artifacts
uses: actions/download-artifact@v3
with:
attempt_limit: 3
attempt_delay: 30000
action: codecov/codecov-action@v3
with: |
token: ${{ secrets.CODECOV_TOKEN }}
name: gnovm
verbose: true
flags: gnovm-${{matrix.args}}
files: ./gnovm/coverage.out
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}
path: ${{ runner.temp }}/coverage
- name: Upload combined coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: ${{ runner.temp }}/coverage
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}

34 changes: 19 additions & 15 deletions .github/workflows/tm2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,24 @@ jobs:
export GOTEST_FLAGS="-v -p 1 -timeout=30m -coverprofile=coverage.out -covermode=atomic"
make ${{ matrix.args }}
touch coverage.out
- uses: actions/upload-artifact@v3
if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
with:
name: ${{runner.os}}-coverage-tm2-${{ matrix.args}}-${{matrix.goversion}}
path: ./tm2/coverage.out

# NOTE: Using retry action to manage occasional upload failures to codecov.io, due to API limits.
# Refer to issue#3954: https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
- if: ${{ runner.os == 'Linux' && matrix.goversion == '1.21.x' }}
name: Upload coverage to Codecov.io
uses: Wandalen/wretry.action@v1.3.0
upload-coverage:
needs: test
runs-on: ubuntu-latest
steps:
- name: Download all previous coverage artifacts
uses: actions/download-artifact@v3
with:
attempt_limit: 3
attempt_delay: 30000
action: codecov/codecov-action@v3
with: |
token: ${{ secrets.CODECOV_TOKEN }}
name: tm2
verbose: true
flags: tm2-${{matrix.args}}
files: ./tm2/coverage.out
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}
path: ${{ runner.temp }}/coverage
- name: Upload combined coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: ${{ runner.temp }}/coverage
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: ${{ github.repository == 'gnolang/gno' }}

0 comments on commit c315db6

Please sign in to comment.