chore: add workflows

This commit is contained in:
Stevan Freeborn
2025-02-13 19:31:09 -06:00
parent 42435ad915
commit 5aae926f1b
6 changed files with 239 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
name: Pull Request
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "**/README.md"
- "**/LICENSE.txt"
- "**/.gitignore"
- "**/.gitattributes"
- "**/.editorconfig"
- .github/**
branches:
- main
jobs:
format:
name: Run dotnet format
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.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-lts, windows-lts, macos-lts]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET 9
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.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 src --no-restore
- 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@v4
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@v4
- name: Download ubuntu-lts report
uses: actions/download-artifact@v4
with:
name: test-coverage-ubuntu-lts
path: ./coverage
- name: Download windows-lts report
uses: actions/download-artifact@v4
with:
name: test-coverage-windows-lts
path: ./coverage
- name: Download macos-lts report
uses: actions/download-artifact@v4
with:
name: test-coverage-macos-lts
path: ./coverage
- name: Upload test coverage reports
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}