Files

104 lines
3.2 KiB
YAML

name: Pull Request
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "**/README.md"
- "**/LICENSE.md"
- "**/.gitignore"
- "**/.editorconfig"
- .github/**
branches:
- main
jobs:
format:
name: Run dotnet format
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.ACTIONS_PAT }}
- name: Setup .NET 10
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.x.x
- name: Format project
run: dotnet format src --verbosity normal
- name: Commit Changes
run: |
git config user.name "GitHub Actions"
git config user.email "<>"
if [[ $(git status --porcelain) ]]; then
git add .
git commit -m "chore: format fixes [skip ci]"
git fetch origin
git pull --rebase origin ${{ github.head_ref }}
git push origin HEAD:${{ github.head_ref }}
fi
test:
name: Test
needs: format
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.ACTIONS_PAT }}
- name: Setup .NET 10
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.x
- name: Install report generator
run: dotnet tool install --global dotnet-reportgenerator-globaltool
- name: Restore dependencies
run: dotnet restore src
- name: Build on ${{ matrix.os }}
run: dotnet build --no-restore src
- name: Test on ${{ matrix.os }}
run: dotnet test src --no-build --verbosity normal
- name: Rename test coverage report
run: mv src/BGR.Console.Tests/TestResults/Coverage/coverage.cobertura.xml src/BGR.Console.Tests/TestResults/Coverage/${{ matrix.os }}-coverage.cobertura.xml
- name: Upload test coverage report for ${{ matrix.os }}
uses: actions/upload-artifact@v7
with:
name: test-coverage-${{ matrix.os }}
path: src/BGR.Console.Tests/TestResults/Coverage/${{ matrix.os }}-coverage.cobertura.xml
upload_test_coverage:
name: Upload Test Coverage
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.ACTIONS_PAT }}
- name: Download ubuntu-latest report
uses: actions/download-artifact@v8
with:
name: test-coverage-ubuntu-latest
path: ./coverage
- name: Download windows-latest report
uses: actions/download-artifact@v8
with:
name: test-coverage-windows-latest
path: ./coverage
- name: Download macos-latest report
uses: actions/download-artifact@v8
with:
name: test-coverage-macos-latest
path: ./coverage
- name: Upload test coverage reports
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}