chore(deps): update xunit-dotnet monorepo (#630) #469
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Build" | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main, 'release/v[0-9]+.[0-9]+.[0-9]+'] | |
jobs: | |
test-macos: | |
name: Test (MacOS) | |
runs-on: macos-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
if: startsWith(github.ref, 'refs/heads/release/') | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Build solution | |
run: dotnet build /p:NetCoreOnly=True --configuration "Release" | |
- name: Run tests | |
uses: Wandalen/[email protected] | |
with: | |
command: dotnet test --no-build --collect:"XPlat Code Coverage" | |
attempt_limit: 2 | |
- name: Upload coverage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Code coverage (MacOS) | |
path: "**/coverage.cobertura.xml" | |
test-ubuntu: | |
name: Test (Ubuntu) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
if: startsWith(github.ref, 'refs/heads/release/') | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Build solution | |
run: dotnet build /p:NetCoreOnly=True --configuration "Release" | |
- name: Run tests | |
uses: Wandalen/[email protected] | |
with: | |
command: dotnet test --no-build --collect:"XPlat Code Coverage" | |
attempt_limit: 2 | |
- name: Upload coverage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Code coverage (Ubuntu) | |
path: "**/coverage.cobertura.xml" | |
test-windows: | |
name: Test (Windows) | |
runs-on: windows-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
if: startsWith(github.ref, 'refs/heads/release/') | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Build solution | |
run: dotnet build /p:NetCoreOnly=True --configuration "Release" | |
- name: Run tests | |
uses: Wandalen/[email protected] | |
with: | |
command: dotnet test --no-build --collect:"XPlat Code Coverage" | |
attempt_limit: 2 | |
- name: Upload coverage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Code coverage (Windows) | |
path: "**/coverage.cobertura.xml" | |
test-net-framework: | |
name: Test (.NET Framework) | |
runs-on: windows-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
if: startsWith(github.ref, 'refs/heads/release/') | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
- name: Setup MSBuild | |
uses: microsoft/setup-msbuild@v2 | |
- name: Setup VSTest | |
uses: darenm/Setup-VSTest@v1 | |
- name: Navigate to Workspace | |
run: cd $GITHUB_WORKSPACE | |
- name: Build solution | |
run: msbuild.exe Testably.Abstractions.sln /p:NetFrameworkOnly=True /p:platform="Any CPU" /p:configuration="Release" -t:restore,build -p:RestorePackagesConfig=true | |
- name: Run tests | |
uses: Wandalen/[email protected] | |
with: | |
command: vstest.console.exe .\Build\Tests\Testably.Abstractions.Tests\net48\Testably.Abstractions.Tests.dll .\Build\Tests\Testably.Abstractions.Parity.Tests\net48\Testably.Abstractions.Parity.Tests.dll .\Build\Tests\Testably.Abstractions.Testing.Tests\net48\Testably.Abstractions.Testing.Tests.dll /Logger:trx /ResultsDirectory:TestResults /collect:"Code Coverage;Format=Cobertura" | |
attempt_limit: 2 | |
- name: Upload coverage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Code coverage (.NET Framework) | |
path: "**/*.cobertura.xml" | |
test-examples: | |
name: Test (Examples) | |
runs-on: windows-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
if: startsWith(github.ref, 'refs/heads/release/') | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Build solution | |
run: dotnet build /p:NetCoreOnly=True --configuration "Release" | |
- name: Build example solution | |
run: dotnet build Examples /p:UseFileReferenceToTestablyLibraries=True | |
- name: Run example tests | |
uses: Wandalen/[email protected] | |
with: | |
command: dotnet test Examples --no-build | |
attempt_limit: 2 | |
upload-coverage: | |
name: Upload coverage to Codacy | |
needs: [test-macos, test-ubuntu, test-windows, test-net-framework] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
- name: Download code coverage files (MacOS) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Code coverage (MacOS) | |
path: Coverage/MacOS | |
- name: Download code coverage files (Ubuntu) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Code coverage (Ubuntu) | |
path: Coverage/Ubuntu | |
- name: Download code coverage files (Windows) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Code coverage (Windows) | |
path: Coverage/Windows | |
- name: Generate coverage report | |
uses: danielpalme/[email protected] | |
with: | |
reports: "Coverage/**/*.cobertura.xml" | |
targetdir: "coverage-report" | |
reporttypes: "Cobertura" | |
- name: Publish coverage report to Codacy | |
uses: codacy/codacy-coverage-reporter-action@master | |
with: | |
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
coverage-reports: coverage-report/Cobertura.xml | |
stryker-ubuntu: | |
name: Stryker mutation testing (Ubuntu) | |
runs-on: ubuntu-latest | |
timeout-minutes: 300 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Install .NET Stryker | |
shell: bash | |
run: | | |
dotnet tool install dotnet-stryker --tool-path ../tools | |
- name: Analyze Testably.Abstractions.Testing | |
env: | |
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} | |
shell: bash | |
run: | | |
cd Tests | |
../../tools/dotnet-stryker -f ../.github/stryker/Stryker.Config.Testing.json -v "${GITHUB_REF#refs/heads/}" -r "Dashboard" -r "cleartext" | |
stryker-windows: | |
name: Stryker mutation testing (Windows) | |
runs-on: windows-latest | |
timeout-minutes: 300 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Install .NET Stryker | |
shell: bash | |
run: | | |
dotnet tool install dotnet-stryker --tool-path ../tools | |
- name: Analyze Testably.Abstractions | |
env: | |
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} | |
shell: bash | |
run: | | |
cd Tests | |
../../tools/dotnet-stryker -f ../.github/stryker/Stryker.Config.json -v "${GITHUB_REF#refs/heads/}" -r "Dashboard" -r "cleartext" | |
- name: Analyze Testably.Abstractions.AccessControl | |
env: | |
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} | |
shell: bash | |
run: | | |
cd Tests | |
../../tools/dotnet-stryker -f ../.github/stryker/Stryker.Config.AccessControl.json -v "${GITHUB_REF#refs/heads/}" -r "Dashboard" -r "cleartext" | |
- name: Analyze Testably.Abstractions.Compression | |
env: | |
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} | |
shell: bash | |
run: | | |
cd Tests | |
../../tools/dotnet-stryker -f ../.github/stryker/Stryker.Config.Compression.json -v "${GITHUB_REF#refs/heads/}" -r "Dashboard" -r "cleartext" | |
deploy: | |
name: Deploy | |
if: startsWith(github.ref, 'refs/heads/release/') | |
runs-on: ubuntu-latest | |
environment: production | |
needs: [test-macos, test-ubuntu, test-windows, test-net-framework, test-examples, stryker-windows, stryker-ubuntu] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Tag current commit | |
id: tag | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git tag "${version}" | |
git push origin "${version}" | |
echo "release_version=${version}" >> "$GITHUB_OUTPUT" | |
- name: Setup NuGet | |
uses: NuGet/[email protected] | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
8.0.x | |
- name: Prepare README.md | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
# Add changelog badge to README.md | |
sed -i -e "2 a\[!\[Changelog](https:\/\/img\.shields\.io\/badge\/Changelog-${version}-blue)](https:\/\/github\.com\/Testably\/Testably\.Abstractions\/releases\/tag\/${version})" "./README.md" | |
for f in "README.md" "Docs/AccessControl.md" "Docs/Compression.md" "Docs/Interface.md" "Docs/Testing.md" | |
do | |
echo "Processing $f" # always double quote "$f" filename | |
# do something on $f | |
# Remove the codacy and sonarcloud badge as it is not aligned to the release | |
grep -v "app.codacy.com" "./$f" > "./$f.backup" && mv "./$f.backup" "./$f" | |
grep -v "sonarcloud.io" "./$f" > "./$f.backup" && mv "./$f.backup" "./$f" | |
# Change status badges to display explicit version | |
sed -i -e "s/branch=main/branch=release%2F${version}/g" "./$f" | |
sed -i -e "s/Testably.Abstractions%2Fmain/Testably.Abstractions%2Frelease%2F${version}/g" "./$f" | |
sed -i -e "s/Testably.Abstractions%2Fmain/Testably.Abstractions%2Frelease%2F${version}/g" "./$f" | |
sed -i -e "s/Testably.Abstractions\/main)/Testably.Abstractions\/release\/${version})/g" "./$f" | |
sed -i -e "s/Testably.Abstractions\/actions\/workflows\/build.yml\/badge.svg)/Testably.Abstractions\/actions\/workflows\/build.yml\/badge.svg?branch=release\/${version})/g" "./$f" | |
sed -i -e "s/Testably.Abstractions\/actions\/workflows\/build.yml)/Testably.Abstractions\/actions\/workflows\/build.yml?query=branch%3Arelease%2F${version})/g" "./$f" | |
# Add absolute path to example section | |
sed -i -e 's/\(Examples\/README.md\)/https:\/\/github.com\/Testably\/Testably.Abstractions\/blob\/main\/Examples\/README.md/g' "./$f" | |
done | |
- name: Build | |
run: dotnet build --configuration "Release" | |
- name: Publish | |
run: nuget push **\*.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}} | |
- name: Create GitHub release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: ${{ steps.tag.outputs.release_version }} | |
tag_name: ${{ steps.tag.outputs.release_version }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
generate_release_notes: true | |
cleanup: | |
name: Cleanup | |
if: startsWith(github.ref, 'refs/heads/release/') | |
runs-on: ubuntu-latest | |
needs: [deploy] | |
steps: | |
- name: Comment relevant issues and pull requests | |
uses: apexskier/[email protected] | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
comment-template: | | |
This is addressed in release {release_link}. | |
label-template: | | |
state: released | |
skip-label: | | |
state: released | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Delete release branch | |
shell: bash | |
run: | | |
version="${GITHUB_REF#refs/heads/release/}" | |
git push origin -d "refs/heads/release/${version}" |