- name: Test Coverage
- on:
- pull_request:
- push:
- branches:
- - master
- - release/**
-
- jobs:
- split-test-files:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Create a file with all the pkgs
- run: go list ./... > pkgs.txt
- - name: Split pkgs into 4 files
- run: split -d -n l/4 pkgs.txt pkgs.txt.part.
- # cache multiple
- - uses: actions/upload-artifact@v2
- with:
- name: "${{ github.sha }}-00"
- path: ./pkgs.txt.part.00
- - uses: actions/upload-artifact@v2
- with:
- name: "${{ github.sha }}-01"
- path: ./pkgs.txt.part.01
- - uses: actions/upload-artifact@v2
- with:
- name: "${{ github.sha }}-02"
- path: ./pkgs.txt.part.02
- - uses: actions/upload-artifact@v2
- with:
- name: "${{ github.sha }}-03"
- path: ./pkgs.txt.part.03
-
- build-linux:
- name: Build
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- goarch: ["arm", "amd64"]
- timeout-minutes: 5
- steps:
- - uses: actions/setup-go@v2
- with:
- go-version: "1.16"
- - uses: actions/checkout@v2
- - uses: technote-space/get-diff-action@v4
- with:
- PATTERNS: |
- **/**.go
- go.mod
- go.sum
- - name: install
- run: GOOS=linux GOARCH=${{ matrix.goarch }} make build
- if: "env.GIT_DIFF != ''"
-
- tests:
- runs-on: ubuntu-latest
- needs: split-test-files
- strategy:
- fail-fast: false
- matrix:
- part: ["00", "01", "02", "03"]
- steps:
- - uses: actions/setup-go@v2
- with:
- go-version: "1.16"
- - 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 }}-${{ matrix.part }}"
- if: env.GIT_DIFF
- - name: Set up Go
- uses: actions/setup-go@v2
- with:
- go-version: 1.16
- - name: test & coverage report creation
- run: |
- 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: actions/upload-artifact@v2
- with:
- name: "${{ github.sha }}-${{ matrix.part }}-coverage"
- path: ./${{ matrix.part }}profile.out
-
- upload-coverage-report:
- runs-on: ubuntu-latest
- needs: tests
- 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 }}-00-coverage"
- if: env.GIT_DIFF
- - uses: actions/download-artifact@v2
- with:
- name: "${{ github.sha }}-01-coverage"
- if: env.GIT_DIFF
- - uses: actions/download-artifact@v2
- with:
- name: "${{ github.sha }}-02-coverage"
- if: env.GIT_DIFF
- - uses: actions/download-artifact@v2
- with:
- name: "${{ github.sha }}-03-coverage"
- if: env.GIT_DIFF
- - run: |
- cat ./*profile.out | grep -v "mode: atomic" >> coverage.txt
- if: env.GIT_DIFF
- - uses: codecov/codecov-action@v1.3.1
- with:
- file: ./coverage.txt
- if: env.GIT_DIFF
|