mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 17:49:35 +00:00

For development versions of Stockfish, the version will now look like dev-20221107-dca9a0533 indicating a development version, the date of the last commit, and the git SHA of that commit. If git is not available, the fallback is the date of compilation. Releases will continue to be versioned as before. Additionally, this PR extends the CI to create binary artifacts, i.e. pushes to master will automatically build Stockfish and upload the binaries to github. closes https://github.com/official-stockfish/Stockfish/pull/4220 No functional change
353 lines
11 KiB
YAML
353 lines
11 KiB
YAML
name: Stockfish
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- tools
|
|
- github_ci
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- tools
|
|
jobs:
|
|
Binaries:
|
|
if: github.ref == 'refs/heads/master'
|
|
uses: ./.github/workflows/stockfish_binaries.yml
|
|
Stockfish:
|
|
name: ${{ matrix.config.name }}
|
|
runs-on: ${{ matrix.config.os }}
|
|
env:
|
|
COMPILER: ${{ matrix.config.compiler }}
|
|
COMP: ${{ matrix.config.comp }}
|
|
CXXFLAGS: "-Werror"
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
# set the variable for the required tests:
|
|
# run_expensive_tests: true
|
|
# run_32bit_tests: true
|
|
# run_64bit_tests: true
|
|
# run_armv8_tests: true
|
|
# run_armv7_tests: true
|
|
- {
|
|
name: "Ubuntu 20.04 GCC",
|
|
os: ubuntu-20.04,
|
|
compiler: g++,
|
|
comp: gcc,
|
|
run_expensive_tests: true,
|
|
run_32bit_tests: true,
|
|
run_64bit_tests: true,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "Ubuntu 20.04 Clang",
|
|
os: ubuntu-20.04,
|
|
compiler: clang++,
|
|
comp: clang,
|
|
run_32bit_tests: true,
|
|
run_64bit_tests: true,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "Ubuntu 20.04 NDK armv8",
|
|
os: ubuntu-20.04,
|
|
compiler: aarch64-linux-android21-clang++,
|
|
comp: ndk,
|
|
run_armv8_tests: false,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "Ubuntu 20.04 NDK armv7",
|
|
os: ubuntu-20.04,
|
|
compiler: armv7a-linux-androideabi21-clang++,
|
|
comp: ndk,
|
|
run_armv7_tests: false,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "MacOS 12 Apple Clang",
|
|
os: macos-12,
|
|
compiler: clang++,
|
|
comp: clang,
|
|
run_64bit_tests: true,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "MacOS 12 GCC 11",
|
|
os: macos-12,
|
|
compiler: g++-11,
|
|
comp: gcc,
|
|
run_64bit_tests: true,
|
|
shell: 'bash {0}'
|
|
}
|
|
- {
|
|
name: "Windows 2022 Mingw-w64 GCC x86_64",
|
|
os: windows-2022,
|
|
compiler: g++,
|
|
comp: mingw,
|
|
run_64bit_tests: true,
|
|
msys_sys: 'mingw64',
|
|
msys_env: 'x86_64-gcc',
|
|
shell: 'msys2 {0}'
|
|
}
|
|
- {
|
|
name: "Windows 2022 Mingw-w64 GCC i686",
|
|
os: windows-2022,
|
|
compiler: g++,
|
|
comp: mingw,
|
|
run_32bit_tests: true,
|
|
msys_sys: 'mingw32',
|
|
msys_env: 'i686-gcc',
|
|
shell: 'msys2 {0}'
|
|
}
|
|
- {
|
|
name: "Windows 2022 Mingw-w64 Clang x86_64",
|
|
os: windows-2022,
|
|
compiler: clang++,
|
|
comp: clang,
|
|
run_64bit_tests: true,
|
|
msys_sys: 'clang64',
|
|
msys_env: 'clang-x86_64-clang',
|
|
shell: 'msys2 {0}'
|
|
}
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: src
|
|
shell: ${{ matrix.config.shell }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Download required linux packages
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install expect valgrind g++-multilib qemu-user
|
|
|
|
- name: Setup msys and install required packages
|
|
if: runner.os == 'Windows'
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{matrix.config.msys_sys}}
|
|
install: mingw-w64-${{matrix.config.msys_env}} make git expect
|
|
|
|
- name: Download the used network from the fishtest framework
|
|
run: |
|
|
make net
|
|
|
|
- name: Extract the bench number from the commit history
|
|
run: |
|
|
git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig
|
|
[ -s git_sig ] && echo "benchref=$(cat git_sig)" >> $GITHUB_ENV && echo "Reference bench:" $(cat git_sig) || echo "No bench found"
|
|
|
|
- name: Check compiler
|
|
run: |
|
|
export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin
|
|
$COMPILER -v
|
|
|
|
- name: Test help target
|
|
run: |
|
|
make help
|
|
|
|
# x86-32 tests
|
|
|
|
- name: Test debug x86-32 build
|
|
if: ${{ matrix.config.run_32bit_tests }}
|
|
run: |
|
|
export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
|
make clean
|
|
make -j2 ARCH=x86-32 optimize=no debug=yes build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-32 build
|
|
if: ${{ matrix.config.run_32bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-32 build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-32-sse41-popcnt build
|
|
if: ${{ matrix.config.run_32bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-32-sse41-popcnt build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-32-sse2 build
|
|
if: ${{ matrix.config.run_32bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-32-sse2 build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test general-32 build
|
|
if: ${{ matrix.config.run_32bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=general-32 build
|
|
../tests/signature.sh $benchref
|
|
|
|
# x86-64 tests
|
|
|
|
- name: Test debug x86-64-modern build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern optimize=no debug=yes build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-64-modern build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-64-ssse3 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-ssse3 build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-64-sse3-popcnt build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-sse3-popcnt build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test x86-64 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64 build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test general-64 build
|
|
if: matrix.config.run_64bit_tests
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=general-64 build
|
|
../tests/signature.sh $benchref
|
|
|
|
# x86-64 with newer extensions tests
|
|
|
|
- name: Compile x86-64-avx2 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-avx2 build
|
|
|
|
- name: Compile x86-64-bmi2 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-bmi2 build
|
|
|
|
- name: Compile x86-64-avx512 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-avx512 build
|
|
|
|
- name: Compile x86-64-vnni512 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-vnni512 build
|
|
|
|
- name: Compile x86-64-vnni256 build
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-vnni256 build
|
|
|
|
# armv8 tests
|
|
|
|
- name: Test armv8 build
|
|
if: ${{ matrix.config.run_armv8_tests }}
|
|
run: |
|
|
ANDROID_ROOT=/usr/local/lib/android
|
|
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
|
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
|
|
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
|
|
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
|
ln -sfn $ANDROID_SDK_ROOT/ndk/21.4.7075529 $ANDROID_NDK_ROOT
|
|
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
|
|
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
|
make clean
|
|
make -j2 ARCH=armv8 build
|
|
../tests/signature.sh $benchref
|
|
|
|
# armv7 tests
|
|
|
|
- name: Test armv7 build
|
|
if: ${{ matrix.config.run_armv7_tests }}
|
|
run: |
|
|
ANDROID_ROOT=/usr/local/lib/android
|
|
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
|
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
|
|
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
|
|
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
|
ln -sfn $ANDROID_SDK_ROOT/ndk/21.4.7075529 $ANDROID_NDK_ROOT
|
|
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
|
|
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
|
make clean
|
|
make -j2 ARCH=armv7 build
|
|
../tests/signature.sh $benchref
|
|
|
|
- name: Test armv7-neon build
|
|
if: ${{ matrix.config.run_armv7_tests }}
|
|
run: |
|
|
ANDROID_ROOT=/usr/local/lib/android
|
|
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
|
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
|
|
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
|
|
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
|
ln -sfn $ANDROID_SDK_ROOT/ndk/21.4.7075529 $ANDROID_NDK_ROOT
|
|
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
|
|
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
|
make clean
|
|
make -j2 ARCH=armv7-neon build
|
|
../tests/signature.sh $benchref
|
|
|
|
# Other tests
|
|
|
|
- name: Check perft and search reproducibility
|
|
if: ${{ matrix.config.run_64bit_tests }}
|
|
run: |
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern build
|
|
../tests/perft.sh
|
|
../tests/reprosearch.sh
|
|
|
|
# Sanitizers
|
|
|
|
- name: Run under valgrind
|
|
if: ${{ matrix.config.run_expensive_tests }}
|
|
run: |
|
|
export CXXFLAGS="-O1 -fno-inline"
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern debug=yes optimize=no build > /dev/null
|
|
../tests/instrumented.sh --valgrind
|
|
../tests/instrumented.sh --valgrind-thread
|
|
|
|
- name: Run with UB sanitizer
|
|
if: ${{ matrix.config.run_expensive_tests }}
|
|
run: |
|
|
export CXXFLAGS="-O1 -fno-inline"
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern sanitize=undefined optimize=no debug=yes build > /dev/null
|
|
../tests/instrumented.sh --sanitizer-undefined
|
|
|
|
- name: Run with thread sanitizer
|
|
if: ${{ matrix.config.run_expensive_tests }}
|
|
run: |
|
|
export CXXFLAGS="-O1 -fno-inline"
|
|
make clean
|
|
make -j2 ARCH=x86-64-modern sanitize=thread optimize=no debug=yes build > /dev/null
|
|
../tests/instrumented.sh --sanitizer-thread
|