Skip to content

Workflow cleanup and removed duplicate steps #250

Workflow cleanup and removed duplicate steps

Workflow cleanup and removed duplicate steps #250

Workflow file for this run

name: Test
on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: golangci/golangci-lint-action@v3
with:
# must be specified without patch version
version: v1.51
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: go.mod
check-latest: true
- name: Check formatting
run: |
make format-check
vulnerability-check:
name: "Vulnerability check"
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: go.mod
check-latest: true
- name: Scan for Vulnerabilities
uses: golang/govulncheck-action@v0.2.0
with:
go-package: ./...
test:
strategy:
matrix:
platform: [ubuntu-latest, windows-latest, macos-latest]
name: 'Test (${{ matrix.platform }})'
runs-on: ${{ matrix.platform }}
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: go.mod
check-latest: true
- name: Install go-junit-report
run: go install github.com/jstemmer/go-junit-report/v2@latest
- name: Unit testing
run: |
mkdir -p build
go test -v ./... > build/cbuildtests-${{ matrix.platform }}-amd64.txt
- name: Generate unit test report
if: success() || failure()
run: |
go-junit-report -set-exit-code -in build/cbuildtests-${{ matrix.platform }}-amd64.txt -iocopy -out build/cbuildtests-${{ matrix.platform }}-amd64.xml
- name: Install qemu (for Linux-Arm64)
if: ${{ startsWith(runner.os, 'Linux') }}
run: |
sudo apt update
sudo apt-get install -y \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
qemu-user-binfmt
- name: Unit testing (for Linux-Arm64)
if: ${{ startsWith(runner.os, 'Linux') }}
run: |
GOOS=linux GOARCH=arm64 go test -v ./... > build/cbuildtests-${{ matrix.platform }}-arm64.txt
go-junit-report -set-exit-code -in build/cbuildtests-${{ matrix.platform }}-arm64.txt -iocopy -out build/cbuildtests-${{ matrix.platform }}-arm64.xml
- name: Archive unit test results
uses: actions/upload-artifact@v3
with:
name: unit-test-result-${{ matrix.platform }}
path: ./build/cbuildtests-*.xml
if-no-files-found: error
publish-test-results:
if: ${{ always() && github.event_name != 'release' }}
permissions:
checks: write
pull-requests: write
name: "Publish Tests Results"
needs: [ test ]
runs-on: ubuntu-latest
steps:
- name: Download unit test report windows
uses: actions/download-artifact@v3
with:
name: unit-test-result-windows-latest
path: testreports/
- name: Download unit test report linux
uses: actions/download-artifact@v3
with:
name: unit-test-result-ubuntu-latest
path: testreports/
- name: Download unit test report macos
uses: actions/download-artifact@v3
with:
name: unit-test-result-macos-latest
path: testreports/
- name: publish test results
uses: EnricoMi/publish-unit-test-result-action/composite@v2
with:
files: "testreports/*.xml"
report_individual_runs: true
# with:
# commit: ${{ github.event.workflow_run.head_sha }}
# report_individual_runs: true
# junit_files: "testreports/*.xml"
coverage:
if: github.event_name != 'release'
needs: [ test ]
name: 'Coverage check'
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: go.mod
check-latest: true
- name: Check coverage
run: |
make coverage-check
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./build/cover.out
fail_ci_if_error: true
functionalities: fix