Add benchmark results #2322
Workflow file for this run
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: | |
schedule: | |
- cron: '1 0 * * 1' # Mondays at 00:01 | |
env: | |
DOTNET_VERSION: 8.0.x | |
PROJECT_NAME: Lynx | |
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | |
DOTNET_TieredPGO: 1 | |
DOTNET_ReadyToRun: 0 | |
DOTNET_TC_QuickJitForLoops: 1 | |
jobs: | |
make-build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Inject slug/short variables | |
uses: rlespinasse/[email protected] | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: make | |
build-and-publish: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
include: | |
- os: ubuntu-latest | |
runtime-identifier: linux-x64 | |
- os: windows-latest | |
runtime-identifier: win-x64 | |
- os: macOS-latest | |
runtime-identifier: osx-x64 | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Inject slug/short variables | |
uses: rlespinasse/[email protected] | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c Release src/Lynx.Cli/Lynx.Cli.csproj /p:DeterministicBuild=true | |
- name: Publish CLI | |
run: dotnet publish src/Lynx.Cli/Lynx.Cli.csproj -c Release --runtime ${{ matrix.runtime-identifier }} --self-contained /p:Optimized=true -o artifacts/${{ matrix.runtime-identifier }} | |
- name: Upload Lynx-${{ env.GITHUB_REF_SLUG }}-${{ github.run_number }}-${{ matrix.runtime-identifier }} artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Lynx-${{ env.GITHUB_REF_SLUG }}-${{ github.run_number }}-${{ matrix.runtime-identifier }} | |
path: | | |
artifacts/${{ matrix.runtime-identifier }}/ | |
!artifacts/**/*.pdb | |
if-no-files-found: error | |
- name: Publish library | |
if: matrix.os == 'ubuntu-latest' | |
run: dotnet pack -c Release --no-build src/Lynx/Lynx.csproj --include-symbols -o artifacts/nuget | |
- name: Upload Lynx-${{ env.GITHUB_REF_SLUG }}-${{ github.run_number }} NuGet package | |
if: matrix.os == 'ubuntu-latest' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Lynx-${{ env.GITHUB_REF_SLUG }}-${{ github.run_number }} | |
path: | | |
artifacts/nuget/*.nupkg | |
artifacts/nuget/*.snupkg | |
if-no-files-found: error | |
fast-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
configuration: [Debug, Release] | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
include: | |
- os: ubuntu-latest | |
runtime-identifier: linux-x64 | |
- os: windows-latest | |
runtime-identifier: win-x64 | |
- os: macOS-latest | |
runtime-identifier: osx-x64 | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Inject slug/short variables | |
uses: rlespinasse/[email protected] | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c ${{ matrix.configuration }} /p:DeterministicBuild=true | |
- name: Run ${{ matrix.category }} tests | |
run: dotnet test -c ${{ matrix.configuration }} --no-build --collect:"XPlat Code Coverage" -v normal --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
- name: '[Ubuntu] Generate test coverage report' | |
if: matrix.os == 'ubuntu-latest' && matrix.configuration == 'Release' | |
uses: danielpalme/ReportGenerator-GitHub-Action@5 | |
with: | |
reports: 'tests/**/*.cobertura.xml' | |
targetdir: 'coveragereport' | |
reporttypes: 'HtmlInline_AzurePipelines_Dark;SonarQube;Cobertura' | |
assemblyfilters: '+*' | |
classfilters: '+*;-*Exception;-*ConstantGenerator;-*MagicNumberGenerator' | |
filefilters: '+*' | |
verbosity: 'Info' | |
title: '${{ env.PROJECT_NAME }} #${{ github.run_number }} (${{ env.GITHUB_REF_SLUG }})' | |
tag: '${{ github.run_number }}_${{ github.run_id }}' | |
customSettings: 'numberOfReportsParsedInParallel=3;numberOfReportsMergedInParallel=3' | |
- name: '[Ubuntu] Upload test coverage report' | |
if: matrix.os == 'ubuntu-latest' && matrix.configuration == 'Release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.PROJECT_NAME }}-build-coverage-ci-${{ github.run_number }} | |
path: coveragereport/ | |
if-no-files-found: error | |
long-running-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
category: [LongRunning] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c Release | |
- name: Run ${{ matrix.category }} tests | |
run: dotnet test -c Release --no-build --filter "TestCategory=${{ matrix.category }}" -v normal --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
# --collect:"XPlat Code Coverage" https://github.com/coverlet-coverage/coverlet/issues/1192 | |
perft-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
category: [Perft] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c Release | |
- name: Run ${{ matrix.category }} tests | |
run: dotnet test -c Release --no-build --filter "TestCategory=${{ matrix.category }}" -v normal --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
# --collect:"XPlat Code Coverage" https://github.com/coverlet-coverage/coverlet/issues/1192 | |
other-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
category: [Configuration] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c Release | |
- name: Run ${{ matrix.category }} tests | |
run: dotnet test -c Release --no-build --filter "TestCategory=${{ matrix.category }}" -v normal --collect:"XPlat Code Coverage" --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
winning-at-chess: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
category: [WinningAtChess_FixedTime] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Nuget cache | |
uses: actions/cache@v3 | |
with: | |
path: | |
~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build | |
run: dotnet build -c Release | |
- name: Run ${{ matrix.category }} tests | |
run: dotnet test -c Release --no-build --filter "TestCategory=${{ matrix.category }}" -v normal --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
continue-on-error: true | |
# --collect:"XPlat Code Coverage" https://github.com/coverlet-coverage/coverlet/issues/1192 | |
#unify-coverage-reports: | |
# needs: [build, non-parallelizable-tests] # long-running-tests | |
# runs-on: 'ubuntu-latest' | |
# env: | |
# PROJECT_NAME: Lynx | |
# steps: | |
# - name: Download build coverage | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: ${{ env.PROJECT_NAME }}-build-coverage-ci-${{ github.run_number }} | |
# path: artifacts/partial-coverage/build/ | |
# - name: Download non-parallelizable coverage | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: ${{ env.PROJECT_NAME }}-non-parallelizable-coverage-ci-${{ github.run_number }} | |
# path: artifacts/partial-coverage/non-parallelizable/ | |
# #Coverlet issue https://github.com/coverlet-coverage/coverlet/issues/1192 | |
# #- name: Download long-running coverage | |
# # uses: actions/download-artifact@v2 | |
# # with: | |
# # name: ${{ env.PROJECT_NAME }}-long-running-coverage-ci-${{ github.run_number }} | |
# # path: artifacts/partial-coverage/long-running/ | |
# - name: '[Ubuntu] Generate test coverage report' | |
# uses: danielpalme/ReportGenerator-GitHub-Action@5 | |
# with: | |
# reports: 'artifacts/partial-coverage/**/Cobertura.xml;tests/**/*.cobertura.xml' | |
# targetdir: 'coveragereport' | |
# reporttypes: 'HtmlInline_AzurePipelines_Dark;SonarQube;Cobertura' | |
# assemblyfilters: '+*' | |
# classfilters: '+*;-*Exception;-*ConstantGenerator;-*MagicNumberGenerator' | |
# filefilters: '+*' | |
# verbosity: 'Info' | |
# title: '${{ env.PROJECT_NAME }} #${{ github.run_number }} (${{ env.GITHUB_REF_SLUG }})' | |
# tag: '${{ github.run_number }}_${{ github.run_id }}' | |
# customSettings: 'numberOfReportsParsedInParallel=3;numberOfReportsMergedInParallel=3' | |
# - name: '[Ubuntu] Upload unified test coverage report' | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: ${{ env.PROJECT_NAME }}-coverage-ci-${{ github.run_number }} | |
# path: coveragereport/ | |
# if-no-files-found: error | |
#non-parallelizable-tests: | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# matrix: | |
# os: [ubuntu-latest, windows-latest, macOS-latest] | |
# fail-fast: false | |
# env: | |
# DOTNET_CLI_TELEMETRY_OPTOUT: 1 | |
# PROJECT_NAME: Lynx | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Setup .NET | |
# uses: actions/setup-dotnet@v4 | |
# with: | |
# dotnet-version: ${{ env.DOTNET_VERSION }} | |
# - name: Nuget cache | |
# uses: actions/cache@v3 | |
# with: | |
# path: | |
# ~/.nuget/packages | |
# key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
# restore-keys: | | |
# ${{ runner.os }}-nuget- | |
# - name: Build | |
# run: dotnet build -c Release | |
# - name: Run non-parallelizable tests | |
# run: dotnet test -c Release --no-build -v=normal --filter "TestCategory=NonParallelizable" --collect:"XPlat Code Coverage" --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true | |
# - name: '[Ubuntu] Generate test coverage report' | |
# if: matrix.os == 'ubuntu-latest' | |
# uses: danielpalme/ReportGenerator-GitHub-Action@5 | |
# with: | |
# reports: 'tests/**/*.cobertura.xml' | |
# targetdir: 'coveragereport' | |
# reporttypes: 'HtmlInline_AzurePipelines_Dark;SonarQube;Cobertura' | |
# assemblyfilters: '+*' | |
# classfilters: '+*;-*Exception;-*ConstantGenerator;-*MagicNumberGenerator' | |
# filefilters: '+*' | |
# verbosity: 'Info' | |
# title: '${{ env.PROJECT_NAME }} #${{ github.run_number }} (${{ env.GITHUB_REF_SLUG }})' | |
# tag: '${{ github.run_number }}_${{ github.run_id }}' | |
# customSettings: 'numberOfReportsParsedInParallel=3;numberOfReportsMergedInParallel=3' | |
# - name: '[Ubuntu] Upload test coverage report' | |
# if: matrix.os == 'ubuntu-latest' | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: ${{ env.PROJECT_NAME }}-non-parallelizable-coverage-ci-${{ github.run_number }} | |
# path: coveragereport/ | |
# if-no-files-found: error |