mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 01:29:36 +00:00

In CI, it is typical for the process to halt immediately when an error is encountered. However, with our `shell: bash {0}` configuration, the process continues despite errors for posix shells. This commit updates the behavior of posix and msys2 shells to ensure consistency in terms of pipeline exit codes and stop conditions. We adopt the most appropriate default behavior as recommended by the GitHub documentation. Update the code that searches for the bench value in the git log: - to be compatible with the new shell settings - to retry the value from the first line that contains only the template and spaces/tabs/newlines see also https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference https://github.com/msys2/setup-msys2/blob/main/main.js closes https://github.com/official-stockfish/Stockfish/pull/4653 No functional change
256 lines
7.8 KiB
YAML
256 lines
7.8 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
|
|
- name: Ubuntu 20.04 Clang
|
|
os: ubuntu-20.04
|
|
compiler: clang++
|
|
comp: clang
|
|
run_32bit_tests: true
|
|
run_64bit_tests: true
|
|
shell: bash
|
|
- name: Android NDK aarch64
|
|
os: ubuntu-22.04
|
|
compiler: aarch64-linux-android21-clang++
|
|
comp: ndk
|
|
run_armv8_tests: true
|
|
shell: bash
|
|
- name: Android NDK arm
|
|
os: ubuntu-22.04
|
|
compiler: armv7a-linux-androideabi21-clang++
|
|
comp: ndk
|
|
run_armv7_tests: true
|
|
shell: bash
|
|
- name: MacOS 12 Apple Clang
|
|
os: macos-12
|
|
compiler: clang++
|
|
comp: clang
|
|
run_64bit_tests: true
|
|
shell: bash
|
|
- name: MacOS 12 GCC 11
|
|
os: macos-12
|
|
compiler: g++-11
|
|
comp: gcc
|
|
run_64bit_tests: true
|
|
shell: bash
|
|
- 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: Install NDK
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
if [ $COMP == ndk ]; then
|
|
NDKV="21.4.7075529"
|
|
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;$NDKV"
|
|
ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/$NDKV
|
|
ANDROID_NDK_BIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
|
|
echo "ANDROID_NDK_BIN=$ANDROID_NDK_BIN" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- 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: |
|
|
benchref=$(git log HEAD | grep -m 1 -o -x "[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*" | sed "s/[^0-9]//g") || true
|
|
[[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "Reference bench: $benchref" || echo "No bench found"
|
|
|
|
- name: Check compiler
|
|
run: |
|
|
if [ $COMP == ndk ]; then
|
|
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
|
fi
|
|
$COMPILER -v
|
|
|
|
- name: Test help target
|
|
run: make help
|
|
|
|
- name: Check git
|
|
run: git --version
|
|
|
|
# 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: |
|
|
export PATH=${{ env.ANDROID_NDK_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: |
|
|
export PATH=${{ env.ANDROID_NDK_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: |
|
|
export PATH=${{ env.ANDROID_NDK_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
|