87 lines
3.0 KiB
YAML
87 lines
3.0 KiB
YAML
# Called by ci.yml to build & test project files
|
|
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
|
|
name: Build Component
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
project-name:
|
|
required: true
|
|
type: string
|
|
project-build-commands:
|
|
default: ''
|
|
required: false
|
|
type: string
|
|
code-cov-name:
|
|
required: true
|
|
type: string
|
|
code-cov-prefix:
|
|
default: 'unittests'
|
|
required: false
|
|
type: string
|
|
os-list:
|
|
default: '[ "windows-latest", "ubuntu-latest", "otel-linux-arm64" ]'
|
|
required: false
|
|
type: string
|
|
tfm-list:
|
|
default: '[ "net462", "net8.0", "net9.0" ]'
|
|
required: false
|
|
type: string
|
|
|
|
jobs:
|
|
build-test:
|
|
|
|
strategy:
|
|
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
|
|
matrix:
|
|
os: ${{ fromJSON(inputs.os-list) }}
|
|
version: ${{ fromJSON(inputs.tfm-list) }}
|
|
exclude:
|
|
- os: ubuntu-latest
|
|
version: net462
|
|
- os: otel-linux-arm64
|
|
version: net462
|
|
- os: otel-linux-arm64
|
|
version: net8.0
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
|
|
# the version tag which is typically NOT on the first commit so we
|
|
# retrieve them all.
|
|
fetch-depth: 0
|
|
|
|
- name: Setup dotnet
|
|
uses: actions/setup-dotnet@v4
|
|
|
|
- name: dotnet restore ${{ inputs.project-name }}
|
|
run: dotnet restore ${{ inputs.project-name }} ${{ inputs.project-build-commands }}
|
|
|
|
- name: dotnet build ${{ inputs.project-name }}
|
|
run: dotnet build ${{ inputs.project-name }} --configuration Release --no-restore ${{ inputs.project-build-commands }}
|
|
|
|
- name: dotnet test ${{ inputs.project-name }}
|
|
run: dotnet test ${{ inputs.project-name }} --collect:"Code Coverage" --results-directory:TestResults --framework ${{ matrix.version }} --configuration Release --no-restore --no-build --logger:"console;verbosity=detailed" -- RunConfiguration.DisableAppDomain=true
|
|
|
|
- name: Install coverage tool
|
|
run: dotnet tool install -g dotnet-coverage
|
|
|
|
- name: Merging test results
|
|
run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage
|
|
|
|
- name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
|
uses: codecov/codecov-action@v4
|
|
continue-on-error: true # Note: Don't fail for upload failures
|
|
env:
|
|
OS: ${{ matrix.os }}
|
|
TFM: ${{ matrix.version }}
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
with:
|
|
file: TestResults/Cobertura.xml
|
|
env_vars: OS,TFM
|
|
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
|
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
|
|
codecov_yml_path: .github/codecov.yml
|