mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 01:37:46 +00:00
6c1df553fa
Github Actions allows us to use up to 20 workers. This way we can launch multiple different checks at the same time and optimize the overall time the CI takes a bit. closes https://github.com/official-stockfish/Stockfish/pull/4223 No functional change
284 lines
8.9 KiB
YAML
284 lines
8.9 KiB
YAML
name: Stockfish
|
|
on:
|
|
workflow_call:
|
|
jobs:
|
|
Stockfish:
|
|
name: ${{ matrix.config.name }}
|
|
runs-on: ${{ matrix.config.os }}
|
|
env:
|
|
COMPILER: ${{ matrix.config.compiler }}
|
|
COMP: ${{ matrix.config.comp }}
|
|
CXXFLAGS: "-Werror"
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- {
|
|
name: "Ubuntu 20.04 GCC",
|
|
os: ubuntu-20.04,
|
|
compiler: g++,
|
|
comp: gcc,
|
|
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}'
|
|
}
|
|
exclude:
|
|
- config:
|
|
{
|
|
name: "Ubuntu 20.04 NDK armv7"
|
|
}
|
|
- config:
|
|
{
|
|
name: "Ubuntu 20.04 NDK armv8"
|
|
}
|
|
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
|
|
|
|
# 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 |