chore: add workflows
This commit is contained in:
@@ -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 }}
|
||||
Reference in New Issue
Block a user