Skip to content

Add external reference #861

Add external reference

Add external reference #861

Workflow file for this run

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 }}