Skip to content

Commit

Permalink
ci: tests (#5577)
Browse files Browse the repository at this point in the history
- use matrix builds to run multiple test jobs
- upload code coverage once not 4 times (produce more accurate codecov reports)
  • Loading branch information
tac0turtle committed Oct 28, 2020
1 parent 96dda88 commit 0022779
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 63 deletions.
89 changes: 28 additions & 61 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,32 @@ jobs:
- name: Create a file with all the pkgs
run: go list ./... > pkgs.txt
- name: Split pkgs into 4 files
run: split -n l/4 --additional-suffix=.txt ./pkgs.txt
run: split -d -n l/4 pkgs.txt pkgs.txt.part.
# cache multiple
- uses: actions/upload-artifact@v2
with:
name: "${{ github.sha }}-aa"
path: ./xaa.txt
name: "${{ github.sha }}-00"
path: ./pkgs.txt.part.00
- uses: actions/upload-artifact@v2
with:
name: "${{ github.sha }}-ab"
path: ./xab.txt
name: "${{ github.sha }}-01"
path: ./pkgs.txt.part.01
- uses: actions/upload-artifact@v2
with:
name: "${{ github.sha }}-ac"
path: ./xac.txt
name: "${{ github.sha }}-02"
path: ./pkgs.txt.part.02
- uses: actions/upload-artifact@v2
with:
name: "${{ github.sha }}-ad"
path: ./xad.txt
name: "${{ github.sha }}-03"
path: ./pkgs.txt.part.03

test-coverage-part-1:
tests:
runs-on: ubuntu-latest
needs: split-test-files
strategy:
fail-fast: false
matrix:
part: ["00", "01", "02", "03"]
steps:
- uses: actions/checkout@v2
- uses: technote-space/get-diff-action@v4
Expand All @@ -46,20 +50,20 @@ jobs:
go.sum
- uses: actions/download-artifact@v2
with:
name: "${{ github.sha }}-aa"
name: "${{ github.sha }}-${{ matrix.part }}"
if: env.GIT_DIFF
- name: test & coverage report creation
run: |
cat xaa.txt | xargs go test -mod=readonly -timeout 8m -race -coverprofile=coverage.txt -covermode=atomic
cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -timeout 8m -race -coverprofile=${{ matrix.part }}profile.out -covermode=atomic
if: env.GIT_DIFF
- uses: codecov/codecov-action@v1.0.13
- uses: actions/upload-artifact@v2
with:
file: ./coverage.txt
if: env.GIT_DIFF
name: "${{ github.sha }}-${{ matrix.part }}-coverage"
path: ./${{ matrix.part }}profile.out

test-coverage-part-2:
upload-coverage-report:
runs-on: ubuntu-latest
needs: split-test-files
needs: tests
steps:
- uses: actions/checkout@v2
- uses: technote-space/get-diff-action@v4
Expand All @@ -70,59 +74,22 @@ jobs:
go.sum
- uses: actions/download-artifact@v2
with:
name: "${{ github.sha }}-ab"
name: "${{ github.sha }}-00-coverage"
if: env.GIT_DIFF
- name: test & coverage report creation
run: |
cat xab.txt | xargs go test -mod=readonly -timeout 5m -race -coverprofile=coverage.txt -covermode=atomic
if: env.GIT_DIFF
- uses: codecov/codecov-action@v1.0.13
with:
file: ./coverage.txt
if: env.GIT_DIFF

test-coverage-part-3:
runs-on: ubuntu-latest
needs: split-test-files
steps:
- uses: actions/checkout@v2
- uses: technote-space/get-diff-action@v4
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v2
with:
name: "${{ github.sha }}-ac"
if: env.GIT_DIFF
- name: test & coverage report creation
run: |
cat xac.txt | xargs go test -mod=readonly -timeout 10m -race -coverprofile=coverage.txt -covermode=atomic
name: "${{ github.sha }}-01-coverage"
if: env.GIT_DIFF
- uses: codecov/codecov-action@v1.0.13
- uses: actions/download-artifact@v2
with:
file: ./coverage.txt
name: "${{ github.sha }}-02-coverage"
if: env.GIT_DIFF

test-coverage-part-4:
runs-on: ubuntu-latest
needs: split-test-files
steps:
- uses: actions/checkout@v2
- uses: technote-space/get-diff-action@v4
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v2
with:
name: "${{ github.sha }}-ad"
name: "${{ github.sha }}-03-coverage"
if: env.GIT_DIFF
- name: test & coverage report creation
run: |
cat xad.txt | xargs go test -mod=readonly -timeout 5m -race -coverprofile=coverage.txt -covermode=atomic
- run: |
cat ./*profile.out | grep -v "mode: atomic" >> coverage.txt
if: env.GIT_DIFF
- uses: codecov/codecov-action@v1.0.13
with:
Expand Down
4 changes: 2 additions & 2 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ coverage:
precision: 2
round: down
range: "70...100"
notify:
after_n_builds: 4
github_checks:
annotations: false

status:
project:
Expand Down

0 comments on commit 0022779

Please sign in to comment.