Skip to content

feat: Implement missing CSV functionality (32 tests enabled) #21

feat: Implement missing CSV functionality (32 tests enabled)

feat: Implement missing CSV functionality (32 tests enabled) #21

Workflow file for this run

name: Build and Test
# Standard .NET CI/CD workflow
# Used for simple .NET projects without complex database testing
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
release:
types: [ published ]
workflow_dispatch:
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
DOTNET_GENERATE_ASPNET_CERTIFICATE: false
jobs:
build-cross-platform:
name: Build and Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
permissions:
actions: read
contents: read
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: |
6.0.x
8.0.x
9.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.sln') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore
- name: Build solution (all targets)
run: dotnet build --configuration Release --no-restore -p:ContinuousIntegrationBuild=true
- name: Run tests (all frameworks)
run: dotnet test --configuration Release --no-build --verbosity normal
build-ubuntu:
name: Build, Test, and Analyze (Ubuntu)
runs-on: ubuntu-latest
needs: build-cross-platform
permissions:
actions: read
contents: read
security-events: write
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: |
6.0.x
8.0.x
9.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.sln') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Initialize CodeQL
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
uses: github/codeql-action/init@v4
with:
languages: csharp
queries: security-extended,security-and-quality
ram: 8192
- name: Restore dependencies
run: dotnet restore
- name: Build solution (all targets)
run: dotnet build --configuration Release --no-restore -p:ContinuousIntegrationBuild=true
- name: Perform CodeQL Analysis
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
uses: github/codeql-action/analyze@v4
- name: Run tests (all frameworks)
run: dotnet test --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults/
- name: Upload coverage reports
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./TestResults/**/coverage.cobertura.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Run format check
run: dotnet format --verify-no-changes --verbosity diagnostic
- name: Test AOT compilation
run: dotnet publish tests/CsvHandler.AotTests/CsvHandler.AotTests.csproj -c Release -r linux-x64
- name: Pack NuGet packages
if: github.event_name == 'release'
run: dotnet pack --configuration Release --no-build --output ./packages
- name: Publish to NuGet
if: github.event_name == 'release'
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
run: dotnet nuget push ./packages/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate