Skip to content

Add detailed test logging to identify failing test in CI #62

Add detailed test logging to identify failing test in CI

Add detailed test logging to identify failing test in CI #62

Workflow file for this run

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: .NET CI/CD
on:
push:
branches: [ "main", "legacy-1.0", "experimental" ]
tags: [ "v*" ]
pull_request:
branches: [ "main", "legacy-1.0", "experimental" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
configuration: [Debug, Release]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch full history for GitVersion
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Determine Version
id: version
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
elif [[ "${{ github.ref_name }}" == "main" ]]; then
VERSION="2.0.0"
elif [[ "${{ github.ref_name }}" == "legacy-1.0" ]]; then
VERSION="1.0.0"
elif [[ "${{ github.ref_name }}" == "experimental" ]]; then
VERSION="3.0.0-alpha"
else
VERSION="0.0.0-dev"
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Building version: $VERSION"
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore --configuration ${{ matrix.configuration }} -p:Version=${{ steps.version.outputs.version }}
- name: Test
run: dotnet test --no-build --configuration ${{ matrix.configuration }} --verbosity detailed --logger "trx;LogFileName=test-results.trx" --logger "console;verbosity=detailed" --collect:"XPlat Code Coverage"
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.configuration }}
path: "**/*.trx"
- name: Upload coverage reports
if: matrix.configuration == 'Release'
uses: codecov/codecov-action@v3
with:
files: '**/coverage.cobertura.xml'
fail_ci_if_error: false
package:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Determine Version
id: version
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
else
VERSION="2.0.0"
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Create NuGet Package
run: dotnet pack --configuration Release -p:Version=${{ steps.version.outputs.version }} --output ./packages
- name: Upload Package Artifacts
uses: actions/upload-artifact@v4
with:
name: nuget-packages
path: ./packages/*.nupkg
github-release:
needs: package
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine Version
id: version
run: |
VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Download Package Artifacts
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: ./packages
- name: Extract changelog for this version
id: changelog
run: |
VERSION="${{ steps.version.outputs.version }}"
# Extract the section for this version from CHANGELOG.md
NOTES=$(awk "/^## \[$VERSION\]/{found=1; next} found && /^## \[/{exit} found{print}" CHANGELOG.md)
# Write to a file to preserve newlines
echo "$NOTES" > release_notes.md
echo "Release notes extracted for v$VERSION"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version.outputs.version }}
name: v${{ steps.version.outputs.version }}
body_path: release_notes.md
draft: false
prerelease: ${{ contains(steps.version.outputs.version, '-') }}
files: ./packages/*.nupkg