update nuget packages #820
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 Pipeline | |
on: | |
push: | |
branches: | |
- master | |
- 'dependabot/**' | |
- 'releases/**' | |
- 'feat/**' | |
- 'feature/**' | |
- 'fix/**' | |
env: | |
PROJECT_NAME: Saucery | |
SOLN_FILE: Saucery.sln # full path to your solution file | |
UT_DIR: Saucery.Core.Tests | |
NUNIT_INT_DIR: Merlin.NUnit | |
XUNIT_INT_DIR: Merlin.XUnit | |
NUNIT_RD_INT_DIR: Merlin.NUnit.RealDevices | |
XUNIT_RD_INT_DIR: Merlin.XUnit.RealDevices | |
UT_PROJECT: Saucery.Core.Tests/Saucery.Core.Tests.csproj # full path to your unit test project file | |
M_NUNIT_PROJECT: Merlin.NUnit/Merlin.NUnit.csproj # full path to nunit internal integration test project file | |
M_RD_NUNIT_PROJECT: Merlin.NUnit.RealDevices/Merlin.NUnit.RealDevices.csproj # full path to nunit internal integration test project file | |
EM_NUNIT_PROJECT: ExternalMerlin.NUnit/ExternalMerlin.NUnit.csproj # full path to nunit external integration test project file | |
EM_RD_NUNIT_PROJECT: ExternalMerlin.NUnit.RealDevices/ExternalMerlin.NUnit.RealDevices.csproj # full path to nunit external integration test project file | |
M_XUNIT_PROJECT: Merlin.XUnit/Merlin.XUnit.csproj # full path to xunit internal integration test project file | |
M_RD_XUNIT_PROJECT: Merlin.XUnit.RealDevices/Merlin.XUnit.RealDevices.csproj # full path to xunit internal integration test project file | |
EM_XUNIT_PROJECT: ExternalMerlin.XUnit/ExternalMerlin.XUnit.csproj # full path to xunit external integration test project file | |
EM_RD_XUNIT_PROJECT: ExternalMerlin.XUnit.RealDevices/ExternalMerlin.XUnit.RealDevices.csproj # full path to xunit external integration test project file | |
SAUCE_USER_NAME: ${{ secrets.SAUCE_USER_NAME }} | |
SAUCE_API_KEY: ${{ secrets.SAUCE_API_KEY }} | |
CONFIG: Release | |
APP_PACKAGE_PATH: 'published' # set this to the path to your web app project, defaults to the repository root | |
COVERAGE_FORMAT: opencover | |
UNIT_COVERAGE_FILENAME: 'opencover.unit.xml' | |
NUNIT_INTEGRATION_COVERAGE_FILENAME: 'opencover.nunit.integration.xml' | |
XUNIT_INTEGRATION_COVERAGE_FILENAME: 'opencover.xunit.integration.xml' | |
NUNIT_RD_INTEGRATION_COVERAGE_FILENAME: 'opencover.nunit.realdevice.integration.xml' | |
XUNIT_RD_INTEGRATION_COVERAGE_FILENAME: 'opencover.xunit.realdevice.integration.xml' | |
COVERAGE_THRESHOLD: 80 | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
## Run code analysis for all projects/solutions, such that code analysis violations break the build. | |
#- name: Run .NET Code Analysis | |
# uses: dotnet/code-analysis@v1 | |
# id: code-analysis | |
# with: | |
# build-breaking: true | |
- name: Run Unit Tests | |
uses: b3b00/[email protected] | |
with: | |
testProject: ${{ env.UT_PROJECT }} | |
output: ${{ env.UNIT_COVERAGE_FILENAME }} | |
outputFormat: ${{ env.COVERAGE_FORMAT }} | |
threshold: ${{ env.COVERAGE_THRESHOLD }} | |
excludes: '[Saucery.Core.Tests]Tests.*,[Saucery]AutoGeneratedProgram,[Saucery]Saucery.Selenium.*,[Saucery]Saucery.Driver.SauceryAndroid*,[Saucery]Saucery.Driver.SauceryIOS*,[Saucery]Saucery.Tests.SauceryAndroid*,[Saucery]Saucery.Tests.SauceryIOS*,[Saucery]Saucery.DataSources.EnvCompositor*,[Saucery]Saucery.Util.WebControl' | |
- name: Publish Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: unit-test-results | |
path: ${{ env.UT_DIR }}/${{ env.UNIT_COVERAGE_FILENAME }} | |
xunit-integration-tests: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run XUnit Integration Tests | |
uses: b3b00/[email protected] | |
with: | |
testProject: ${{ env.M_XUNIT_PROJECT }} | |
output: ${{ env.XUNIT_INTEGRATION_COVERAGE_FILENAME }} | |
outputFormat: ${{ env.COVERAGE_FORMAT }} | |
#threshold: ${{ env.COVERAGE_THRESHOLD }} | |
excludes: '[Merlin.XUnit]Tests.*' | |
- name: Publish Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xunit-integration-test-results | |
path: ${{ env.XUNIT_INT_DIR }}/${{ env.XUNIT_INTEGRATION_COVERAGE_FILENAME }} | |
nunit-integration-tests: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run NUnit Integration Tests | |
uses: b3b00/[email protected] | |
with: | |
testProject: ${{ env.M_NUNIT_PROJECT }} | |
output: ${{ env.NUNIT_INTEGRATION_COVERAGE_FILENAME }} | |
outputFormat: ${{ env.COVERAGE_FORMAT }} | |
#threshold: ${{ env.COVERAGE_THRESHOLD }} | |
excludes: '[Merlin.NUnit]Tests.*' | |
- name: Publish Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: nunit-integration-test-results | |
path: ${{ env.NUNIT_INT_DIR }}/${{ env.NUNIT_INTEGRATION_COVERAGE_FILENAME }} | |
nunit-real-integration-tests: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run NUnit Integration Tests | |
uses: b3b00/[email protected] | |
with: | |
testProject: ${{ env.M_RD_NUNIT_PROJECT }} | |
output: ${{ env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME }} | |
outputFormat: ${{ env.COVERAGE_FORMAT }} | |
#threshold: ${{ env.COVERAGE_THRESHOLD }} | |
excludes: '[Merlin.NUnit.RealDevices]Tests.*' | |
- name: Publish Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: nunit-real-integration-test-results | |
path: ${{ env.NUNIT_RD_INT_DIR }}/${{ env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME }} | |
xunit-real-integration-tests: | |
runs-on: ubuntu-latest | |
# needs: xunit-integration-tests | |
needs: build | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run XUnit Real Integration Tests | |
uses: b3b00/[email protected] | |
with: | |
testProject: ${{ env.M_RD_XUNIT_PROJECT }} | |
output: ${{ env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME }} | |
outputFormat: ${{ env.COVERAGE_FORMAT }} | |
#threshold: ${{ env.COVERAGE_THRESHOLD }} | |
excludes: '[Merlin.XUnit.RealDevice]Tests.*' | |
- name: Publish Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xunit-real-integration-test-results | |
path: ${{ env.XUNIT_RD_INT_DIR }}/${{ env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME }} | |
xunit-external-tests: | |
runs-on: ubuntu-latest | |
needs: nunit-real-integration-tests | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run External XUnit Integration Tests | |
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_XUNIT_PROJECT }} | |
nunit-external-tests: | |
runs-on: ubuntu-latest | |
needs: nunit-real-integration-tests | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v3 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run External NUnit Integration Tests | |
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_NUNIT_PROJECT }} | |
xunit-real-external-tests: | |
runs-on: ubuntu-latest | |
needs: xunit-real-integration-tests | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run External XUnit Integration Tests | |
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_RD_XUNIT_PROJECT }} | |
nunit-real-external-tests: | |
runs-on: ubuntu-latest | |
needs: xunit-real-integration-tests | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v3 | |
with: | |
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0) | |
dotnet-version: 8.0.x | |
- name: Compile solution | |
run: dotnet build -c ${{ env.CONFIG }} | |
- name: Run External NUnit Integration Tests | |
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_RD_NUNIT_PROJECT }} | |
generate-report: | |
runs-on: ubuntu-latest | |
needs: [build, | |
nunit-integration-tests, | |
xunit-integration-tests, | |
nunit-real-integration-tests, | |
xunit-real-integration-tests, | |
nunit-external-tests, | |
xunit-external-tests, | |
nunit-real-external-tests, | |
xunit-real-external-tests] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download unit-test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: unit-test-results | |
- name: Download nunit-integration-test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: nunit-integration-test-results | |
- name: Download xunit-integration-test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: xunit-integration-test-results | |
- name: Download nunit-real-integration-test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: nunit-real-integration-test-results | |
- name: Download xunit-real-integration-test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: xunit-real-integration-test-results | |
- name: Present working directory | |
run: pwd | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: ReportGenerator | |
uses: danielpalme/[email protected] | |
with: | |
reports: ${{ env.UNIT_COVERAGE_FILENAME }};${{ env.NUNIT_INTEGRATION_COVERAGE_FILENAME }};${{ env.XUNIT_INTEGRATION_COVERAGE_FILENAME }};${{ env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME }};${{ env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME }} # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported. | |
targetdir: 'coveragereport' # REQUIRED # The directory where the generated report should be saved. | |
reporttypes: 'HtmlInline;Cobertura' # The output formats and scope (separated by semicolon) Values: Badges, Clover, Cobertura, CsvSummary, Html, HtmlChart, HtmlInline, HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Dark, HtmlSummary, JsonSummary, Latex, LatexSummary, lcov, MarkdownSummary, MHtml, PngChart, SonarQube, TeamCitySummary, TextSummary, Xml, XmlSummary | |
- name: Upload coverage report artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: CoverageReport # Artifact name | |
path: coveragereport # Directory containing files to upload | |
# Use always() to always run this step to publish test results when there are test failures | |
if: ${{ always() }} | |
- name: Bump version and push tag | |
if: ${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && success() }} | |
id: tag_version | |
uses: mathieudutour/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} |