version: 1.0.{build} clone_depth: 50 branches: only: - master - merge - appveyor # Operating system (build VM template) os: Visual Studio 2019 # Build platform, i.e. x86, x64, AnyCPU. This setting is optional. platform: - x86 - x64 # build Configuration, i.e. Debug, Release, etc. configuration: - Debug - Release matrix: # The build fail immediately once one of the job fails fast_finish: true # Scripts that are called at very beginning, before repo cloning init: - cmake --version - msbuild /version before_build: - ps: | # Get sources $src = get-childitem -Path *.cpp -Recurse -Exclude pyffish.cpp,ffishjs.cpp | select -ExpandProperty FullName $src = $src -join ' ' $src = $src.Replace("\", "/") # Build CMakeLists.txt $t = 'cmake_minimum_required(VERSION 3.17)', 'project(Stockfish)', 'set(CMAKE_CXX_STANDARD 17)', 'set(CMAKE_CXX_STANDARD_REQUIRED ON)', 'set (CMAKE_CXX_EXTENSIONS OFF)', 'set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src)', 'set(source_files', $src, ')', 'add_compile_definitions(NNUE_EMBEDDING_OFF)', 'add_executable(stockfish ${source_files})' # Write CMakeLists.txt withouth BOM $MyPath = (Get-Item -Path "." -Verbose).FullName + '\CMakeLists.txt' $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False [System.IO.File]::WriteAllLines($MyPath, $t, $Utf8NoBomEncoding) # Obtain bench reference from git log $b = git log HEAD | sls "\b[Bb]ench[ :]+[0-9]{7}" | select -first 1 $bench = $b -match '\D+(\d+)' | % { $matches[1] } Write-Host "Reference bench:" $bench $g = "Visual Studio 16 2019" If (${env:PLATFORM} -eq 'x64') { $a = "x64" } If (${env:PLATFORM} -eq 'x86') { $a = "Win32" } cmake -G "${g}" -A ${a} . Write-Host "Generated files for: " $g $a build_script: - cmake --build . --config %CONFIGURATION% -- /verbosity:minimal - ps: | # Download default NNUE net from fishtest $nnuenet = Get-Content -Path src\evaluate.h | Select-String -CaseSensitive -Pattern "EvalFileDefaultName" | Select-String -CaseSensitive -Pattern "nn-[a-z0-9]{12}.nnue" $dummy = $nnuenet -match "(?nn-[a-z0-9]{12}.nnue)" $nnuenet = $Matches.nnuenet Write-Host "Default net:" $nnuenet $nnuedownloadurl = "https://tests.stockfishchess.org/api/nn/$nnuenet" $nnuefilepath = "src\${env:CONFIGURATION}\$nnuenet" if (Test-Path -Path $nnuefilepath) { Write-Host "Already available." } else { Write-Host "Downloading $nnuedownloadurl to $nnuefilepath" Invoke-WebRequest -Uri $nnuedownloadurl -OutFile $nnuefilepath } before_test: - cd src/%CONFIGURATION% - stockfish bench 2> out.txt >NUL - ps: | # Verify bench number $s = (gc "./out.txt" | out-string) $r = ($s -match 'Nodes searched \D+(\d+)' | % { $matches[1] }) Write-Host "Engine bench:" $r Write-Host "Reference bench:" $bench If ($r -ne $bench) { exit 1 }