Skip to content

Commit

Permalink
ci: add stryker.net to build
Browse files Browse the repository at this point in the history
  • Loading branch information
egil committed Sep 26, 2023
1 parent 1ff8961 commit fb53325
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 1 deletion.
93 changes: 92 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,16 @@ on:
types:
- published # Run the workflow when a new GitHub release is published

concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
NuGetDirectory: ${{ github.workspace}}/nuget
TestResultsDirectory: ${{ github.workspace}}/TestResults
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}

defaults:
run:
Expand Down Expand Up @@ -76,6 +82,10 @@ jobs:

run_test:
runs-on: ubuntu-latest
env:
TestResultsDirectory: ${{ github.workspace}}/TestResults
permissions:
checks: write
steps:
- uses: actions/checkout@v3

Expand All @@ -89,7 +99,88 @@ jobs:
8.0.x
- name: Run tests
run: dotnet test --configuration Release
run: dotnet test --configuration Release --logger trx --results-directory "${{ env.TestResultsDirectory }}" --collect:"XPlat Code Coverage" --blame-hang --blame-hang-timeout 5min

- uses: actions/upload-artifact@v3
if: always()
with:
name: test-results
if-no-files-found: error
retention-days: 3
path: ${{ env.TestResultsDirectory }}/**/*

- name: Test Report
uses: dorny/test-reporter@v1
if: github.actor != 'dependabot[bot]' && (success() || failure()) && github.repository_owner == 'egil'
with:
name: test-results
path: ${{ env.TestResultsDirectory }}/**/*.trx
path-replace-backslashes: 'true'
reporter: dotnet-trx

stryker:
runs-on: ubuntu-latest
env:
StrykerDirectory: ${{ github.workspace }}/Stryker
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v3

# Install the .NET SDK indicated in the global.json file
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
3.1.x
6.0.x
8.0.x
- name: Install Stryker.NET
run: dotnet tool install -g dotnet-stryker

- name: Run Stryker.NET
id: stryker
run: |
cd test/TimeProviderExtensions.Tests
dotnet stryker --config-file "../../stryker-config.json" --dashboard-api-key "${{ secrets.STRYKER_DASHBOARD_API_KEY }}" --version ${{ env.BRANCH_NAME }} --output ${{ env.StrykerDirectory }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: stryker-reports
if-no-files-found: error
retention-days: 3
path: ${{ env.StrykerDirectory }}/**/*

- name: Find Stryker Report comment
if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' && (success() || failure()) && github.repository_owner == 'egil'
uses: peter-evans/[email protected]
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Mutation Testing Summary

- name: Create or update Stryker Report comment
if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' && (success() || failure()) && github.repository_owner == 'egil'
id: couc
uses: peter-evans/[email protected]
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body-path: Stryker/reports/mutation-report.md
edit-mode: replace

- if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' && success() && github.repository_owner == 'egil'
uses: peter-evans/[email protected]
with:
comment-id: ${{ steps.couc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
See the [full report](https://dashboard.stryker-mutator.io/reports/github.com/egil/TimeProviderExtensions/${{ env.BRANCH_NAME }}) on the Stryker Dashboard.
edit-mode: append

deploy:
# Publish only when creating a GitHub Release
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[![GitHub tag (latest SemVer pre-release)](https://img.shields.io/github/v/tag/egil/TimeProviderExtensions?include_prereleases&logo=github&style=flat-square)](https://github.com/egil/TimeProviderExtensions/releases)
[![Nuget](https://img.shields.io/nuget/dt/TimeProviderExtensions?logo=nuget&style=flat-square)](https://www.nuget.org/packages/TimeProviderExtensions/)
[![Issues Open](https://img.shields.io/github/issues/egil/TimeProviderExtensions.svg?style=flat-square&logo=github)](https://github.com/egil/TimeProviderExtensions/issues)
[![Mutation testing badge](https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fegil%2FTimeProviderExtensions%2Fmain)](https://dashboard.stryker-mutator.io/reports/github.com/egil/TimeProviderExtensions/main)

# TimeProvider Extensions

Expand Down
20 changes: 20 additions & 0 deletions stryker-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"stryker-config": {
"mutate": [
"!**/System.*/*"
],
"language-version": "Preview",
"target-framework": "net8.0",
"mutation-level": "Complete",
"reporters": [
"markdown",
"dashboard",
"html"
],
"baseline": {
"enabled": false,
"fallback-version": "main",
"provider": "Dashboard"
}
}
}

0 comments on commit fb53325

Please sign in to comment.