mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Refactor the CI workflows
This refactors the CI workflows to group some logic and makes sure that all (pre)release binaries are actually tested. The screenshot below shows the execution logic of the reworked ci, https://github.com/Disservin/Stockfish/actions/runs/7773581379. You can also hover over the cards to see the execution flow. The `matrix.json` and `arm_matrix.json` define the binaries which will be uploaded to GitHub. Afterwards a matrix is created and each job compiles a profile guided build for that arch and uploads that as an artifact to GitHub. The Binaries/ARM_Binaries workflow's are called when the previous step has been completed, and uploads all artifacts to the (pre)release. This also fixes some indentations and renames the workflows, see https://github.com/official-stockfish/Stockfish/actions, where every workflow is called `Stockfish` vs https://github.com/Disservin/Stockfish/actions. It also increases the parallel compilation used for make from `-j2 to -j4`. It now also prevents the prerelease action from running on forks. A test release can be viewed here https://github.com/Disservin/Stockfish/releases. closes https://github.com/official-stockfish/Stockfish/pull/5035 No functional change
This commit is contained in:
parent
59691d46a1
commit
a20726eb0b
15 changed files with 608 additions and 618 deletions
51
.github/ci/arm_matrix.json
vendored
Normal file
51
.github/ci/arm_matrix.json
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"config": [
|
||||
{
|
||||
"name": "Android NDK aarch64",
|
||||
"os": "ubuntu-22.04",
|
||||
"simple_name": "android",
|
||||
"compiler": "aarch64-linux-android21-clang++",
|
||||
"emu": "qemu-aarch64",
|
||||
"comp": "ndk",
|
||||
"shell": "bash",
|
||||
"archive_ext": "tar"
|
||||
},
|
||||
{
|
||||
"name": "Android NDK arm",
|
||||
"os": "ubuntu-22.04",
|
||||
"simple_name": "android",
|
||||
"compiler": "armv7a-linux-androideabi21-clang++",
|
||||
"emu": "qemu-arm",
|
||||
"comp": "ndk",
|
||||
"shell": "bash",
|
||||
"archive_ext": "tar"
|
||||
}
|
||||
],
|
||||
"binaries": ["armv8-dotprod", "armv8", "armv7", "armv7-neon"],
|
||||
"exclude": [
|
||||
{
|
||||
"binaries": "armv8-dotprod",
|
||||
"config": {
|
||||
"compiler": "armv7a-linux-androideabi21-clang++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "armv8",
|
||||
"config": {
|
||||
"compiler": "armv7a-linux-androideabi21-clang++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "armv7",
|
||||
"config": {
|
||||
"compiler": "aarch64-linux-android21-clang++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "armv7-neon",
|
||||
"config": {
|
||||
"compiler": "aarch64-linux-android21-clang++"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
160
.github/ci/matrix.json
vendored
Normal file
160
.github/ci/matrix.json
vendored
Normal file
|
@ -0,0 +1,160 @@
|
|||
{
|
||||
"config": [
|
||||
{
|
||||
"name": "Ubuntu 20.04 GCC",
|
||||
"os": "ubuntu-20.04",
|
||||
"simple_name": "ubuntu",
|
||||
"compiler": "g++",
|
||||
"comp": "gcc",
|
||||
"shell": "bash",
|
||||
"archive_ext": "tar",
|
||||
"sde": "/home/runner/work/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-lin/sde -future --"
|
||||
},
|
||||
{
|
||||
"name": "MacOS 13 Apple Clang",
|
||||
"os": "macos-13",
|
||||
"simple_name": "macos",
|
||||
"compiler": "clang++",
|
||||
"comp": "clang",
|
||||
"shell": "bash",
|
||||
"archive_ext": "tar"
|
||||
},
|
||||
{
|
||||
"name": "MacOS 14 Apple Clang M1",
|
||||
"os": "macos-14",
|
||||
"simple_name": "macos-m1",
|
||||
"compiler": "clang++",
|
||||
"comp": "clang",
|
||||
"shell": "bash",
|
||||
"archive_ext": "tar"
|
||||
},
|
||||
{
|
||||
"name": "Windows 2022 Mingw-w64 GCC x86_64",
|
||||
"os": "windows-2022",
|
||||
"simple_name": "windows",
|
||||
"compiler": "g++",
|
||||
"comp": "mingw",
|
||||
"msys_sys": "mingw64",
|
||||
"msys_env": "x86_64-gcc",
|
||||
"shell": "msys2 {0}",
|
||||
"ext": ".exe",
|
||||
"sde": "/d/a/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-win/sde.exe -future --",
|
||||
"archive_ext": "zip"
|
||||
}
|
||||
],
|
||||
"binaries": [
|
||||
"x86-64",
|
||||
"x86-64-sse41-popcnt",
|
||||
"x86-64-avx2",
|
||||
"x86-64-bmi2",
|
||||
"x86-64-avxvnni",
|
||||
"x86-64-avx512",
|
||||
"x86-64-vnni256",
|
||||
"x86-64-vnni512",
|
||||
"apple-silicon"
|
||||
],
|
||||
"exclude": [
|
||||
{
|
||||
"binaries": "x86-64",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-sse41-popcnt",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avx2",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-bmi2",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avxvnni",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avxvnni",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avx512",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-vnni256",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-vnni512",
|
||||
"config": {
|
||||
"os": "macos-14"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avxvnni",
|
||||
"config": {
|
||||
"ubuntu-20.04": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avxvnni",
|
||||
"config": {
|
||||
"os": "macos-13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-avx512",
|
||||
"config": {
|
||||
"os": "macos-13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-vnni256",
|
||||
"config": {
|
||||
"os": "macos-13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "x86-64-vnni512",
|
||||
"config": {
|
||||
"os": "macos-13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "apple-silicon",
|
||||
"config": {
|
||||
"os": "windows-2022"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "apple-silicon",
|
||||
"config": {
|
||||
"os": "macos-13"
|
||||
}
|
||||
},
|
||||
{
|
||||
"binaries": "apple-silicon",
|
||||
"config": {
|
||||
"os": "ubuntu-20.04"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
94
.github/workflows/arm_compilation.yml
vendored
Normal file
94
.github/workflows/arm_compilation.yml
vendored
Normal file
|
@ -0,0 +1,94 @@
|
|||
name: Compilation
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
matrix:
|
||||
type: string
|
||||
required: true
|
||||
jobs:
|
||||
Compilation:
|
||||
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.config.compiler }}
|
||||
COMP: ${{ matrix.config.comp }}
|
||||
EMU: ${{ matrix.config.emu }}
|
||||
EXT: ${{ matrix.config.ext }}
|
||||
BINARY: ${{ matrix.binaries }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(inputs.matrix) }}
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src
|
||||
shell: ${{ matrix.config.shell }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download required linux packages
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install 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: Extract the bench number from the commit history
|
||||
run: |
|
||||
for hash in $(git rev-list -100 HEAD); do
|
||||
benchref=$(git show -s $hash | tac | grep -m 1 -o -x '[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*' | sed 's/[^0-9]//g') && break || true
|
||||
done
|
||||
[[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $hash" && echo "Reference bench: $benchref" || echo "No bench found"
|
||||
|
||||
- name: Download the used network from the fishtest framework
|
||||
run: make net
|
||||
|
||||
- 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
|
||||
|
||||
# Compile profile guided builds
|
||||
|
||||
- name: Compile ${{ matrix.binaries }} build
|
||||
run: |
|
||||
if [ $COMP == ndk ]; then
|
||||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
fi
|
||||
make clean
|
||||
make -j4 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH=$EMU
|
||||
make strip ARCH=$BINARY COMP=$COMP
|
||||
WINE_PATH=$EMU ../tests/signature.sh $benchref
|
||||
mv ./stockfish$EXT ../stockfish-android-$BINARY$EXT
|
||||
|
||||
- name: Remove non src files
|
||||
run: git clean -fx
|
||||
|
||||
- name: Upload artifact for (pre)-release
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.config.simple_name }} ${{ matrix.binaries }}
|
||||
path: .
|
|
@ -3,17 +3,17 @@
|
|||
# executes no shell script nor runs make.
|
||||
# Read this before editing: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
|
||||
|
||||
name: Stockfish
|
||||
name: Clang-Format
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- 'master'
|
||||
- "master"
|
||||
paths:
|
||||
- '**.cpp'
|
||||
- '**.h'
|
||||
- "**.cpp"
|
||||
- "**.h"
|
||||
jobs:
|
||||
Stockfish:
|
||||
name: clang-format check
|
||||
Clang-Format:
|
||||
name: Clang-Format
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -21,16 +21,16 @@ jobs:
|
|||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Run clang-format style check
|
||||
uses: jidicula/clang-format-action@f62da5e3d3a2d88ff364771d9d938773a618ab5e # @v4.11.0
|
||||
uses: jidicula/clang-format-action@f62da5e3d3a2d88ff364771d9d938773a618ab5e # @v4.11.0
|
||||
id: clang-format
|
||||
continue-on-error: true
|
||||
with:
|
||||
clang-format-version: '17'
|
||||
exclude-regex: 'incbin'
|
||||
clang-format-version: "17"
|
||||
exclude-regex: "incbin"
|
||||
|
||||
- name: Comment on PR
|
||||
if: steps.clang-format.outcome == 'failure'
|
||||
uses: thollander/actions-comment-pull-request@1d3973dc4b8e1399c0620d3f2b1aa5e795465308 # @v2.4.3
|
||||
uses: thollander/actions-comment-pull-request@1d3973dc4b8e1399c0620d3f2b1aa5e795465308 # @v2.4.3
|
||||
with:
|
||||
message: |
|
||||
clang-format 17 needs to be run on this PR.
|
||||
|
@ -42,7 +42,7 @@ jobs:
|
|||
|
||||
- name: Comment on PR
|
||||
if: steps.clang-format.outcome != 'failure'
|
||||
uses: thollander/actions-comment-pull-request@1d3973dc4b8e1399c0620d3f2b1aa5e795465308 # @v2.4.3
|
||||
uses: thollander/actions-comment-pull-request@1d3973dc4b8e1399c0620d3f2b1aa5e795465308 # @v2.4.3
|
||||
with:
|
||||
message: |
|
||||
_(execution **${{ github.run_id }}** / attempt **${{ github.run_attempt }}**)_
|
46
.github/workflows/codeql.yml
vendored
46
.github/workflows/codeql.yml
vendored
|
@ -2,12 +2,12 @@ name: "CodeQL"
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ 'master' ]
|
||||
branches: ["master"]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ 'master' ]
|
||||
branches: ["master"]
|
||||
schedule:
|
||||
- cron: '17 18 * * 1'
|
||||
- cron: "17 18 * * 1"
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
|
@ -21,33 +21,33 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp' ]
|
||||
language: ["cpp"]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Use only 'java' to analyze code written in Java, Kotlin, or both
|
||||
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
- name: Build
|
||||
working-directory: src
|
||||
run: make -j build ARCH=x86-64-modern
|
||||
- name: Build
|
||||
working-directory: src
|
||||
run: make -j build ARCH=x86-64-modern
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
|
89
.github/workflows/compilation.yml
vendored
Normal file
89
.github/workflows/compilation.yml
vendored
Normal file
|
@ -0,0 +1,89 @@
|
|||
name: Compilation
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
matrix:
|
||||
type: string
|
||||
required: true
|
||||
jobs:
|
||||
Compilation:
|
||||
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.config.compiler }}
|
||||
COMP: ${{ matrix.config.comp }}
|
||||
EXT: ${{ matrix.config.ext }}
|
||||
NAME: ${{ matrix.config.simple_name }}
|
||||
BINARY: ${{ matrix.binaries }}
|
||||
SDE: ${{ matrix.config.sde }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(inputs.matrix) }}
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src
|
||||
shell: ${{ matrix.config.shell }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install fixed GCC on Linux
|
||||
if: runner.os == 'Linux'
|
||||
uses: egor-tensin/setup-gcc@eaa888eb19115a521fa72b65cd94fe1f25bbcaac # @v1.3
|
||||
with:
|
||||
version: 11
|
||||
|
||||
- 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 zip
|
||||
|
||||
- name: Download SDE package
|
||||
if: runner.os == 'Linux' || runner.os == 'Windows'
|
||||
uses: petarpetrovt/setup-sde@91a1a03434384e064706634125a15f7446d2aafb # @v2.3
|
||||
with:
|
||||
environmentVariableName: SDE_DIR
|
||||
sdeVersion: 9.27.0
|
||||
|
||||
- name: Download the used network from the fishtest framework
|
||||
run: make net
|
||||
|
||||
- name: Check compiler
|
||||
run: $COMPILER -v
|
||||
|
||||
- name: Test help target
|
||||
run: make help
|
||||
|
||||
- name: Check git
|
||||
run: git --version
|
||||
|
||||
- name: Check compiler
|
||||
run: $COMPILER -v
|
||||
|
||||
- name: Show g++ cpu info
|
||||
if: runner.os != 'macOS'
|
||||
run: g++ -Q -march=native --help=target
|
||||
|
||||
- name: Show clang++ cpu info
|
||||
if: runner.os == 'macOS'
|
||||
run: clang++ -E - -march=native -###
|
||||
|
||||
# x86-64 with newer extensions tests
|
||||
|
||||
- name: Compile ${{ matrix.config.binaries }} build
|
||||
run: |
|
||||
make clean
|
||||
make -j4 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH="$SDE"
|
||||
make strip ARCH=$BINARY COMP=$COMP
|
||||
WINE_PATH="$SDE" ../tests/signature.sh $benchref
|
||||
mv ./stockfish$EXT ../stockfish-$NAME-$BINARY$EXT
|
||||
|
||||
- name: Remove non src files
|
||||
run: git clean -fx
|
||||
|
||||
- name: Upload artifact for (pre)-release
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.config.simple_name }} ${{ matrix.binaries }}
|
||||
path: .
|
|
@ -1,4 +1,4 @@
|
|||
name: Stockfish
|
||||
name: IWYU
|
||||
on:
|
||||
workflow_call:
|
||||
jobs:
|
||||
|
@ -44,4 +44,4 @@ jobs:
|
|||
make analyze
|
||||
COMP=clang
|
||||
CXX=include-what-you-use
|
||||
CXXFLAGS="-stdlib=libc++ -Xiwyu --comment_style=long -Xiwyu --mapping='${{ github.workspace }}/Stockfish/.github/workflows/libcxx17.imp' -Xiwyu --error"
|
||||
CXXFLAGS="-stdlib=libc++ -Xiwyu --comment_style=long -Xiwyu --mapping='${{ github.workspace }}/Stockfish/.github/ci/libcxx17.imp' -Xiwyu --error"
|
|
@ -1,8 +1,8 @@
|
|||
name: Stockfish
|
||||
name: Sanitizers
|
||||
on:
|
||||
workflow_call:
|
||||
jobs:
|
||||
Stockfish:
|
||||
Test-under-sanitizers:
|
||||
name: ${{ matrix.sanitizers.name }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
|
@ -10,6 +10,7 @@ jobs:
|
|||
COMP: ${{ matrix.config.comp }}
|
||||
CXXFLAGS: "-Werror"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- name: Ubuntu 22.04 GCC
|
||||
|
@ -60,5 +61,5 @@ jobs:
|
|||
run: |
|
||||
export CXXFLAGS="-O1 -fno-inline"
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-sse41-popcnt ${{ matrix.sanitizers.make_option }} debug=yes optimize=no build > /dev/null
|
||||
make -j4 ARCH=x86-64-sse41-popcnt ${{ matrix.sanitizers.make_option }} debug=yes optimize=no build > /dev/null
|
||||
../tests/instrumented.sh --${{ matrix.sanitizers.instrumented_option }}
|
60
.github/workflows/stockfish.yml
vendored
60
.github/workflows/stockfish.yml
vendored
|
@ -1,8 +1,8 @@
|
|||
name: Stockfish
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
tags:
|
||||
- "*"
|
||||
branches:
|
||||
- master
|
||||
- tools
|
||||
|
@ -13,7 +13,7 @@ on:
|
|||
- tools
|
||||
jobs:
|
||||
Prerelease:
|
||||
if: github.ref == 'refs/heads/master'
|
||||
if: github.repository == 'official-stockfish/Stockfish' && (github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'))
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# returns null if no pre-release exists
|
||||
|
@ -25,24 +25,52 @@ jobs:
|
|||
|
||||
echo "COMMIT_SHA=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< $(curl -s https://api.github.com/repos/${{ github.repository_owner }}/Stockfish/releases))" >> $GITHUB_ENV
|
||||
|
||||
# delete old previous pre-release and tag
|
||||
- uses: dev-drprasad/delete-tag-and-release@8cd619d00037e4aeb781909c9a6b03940507d0da # @v1.0.1
|
||||
# delete old previous pre-release and tag
|
||||
- uses: dev-drprasad/delete-tag-and-release@8cd619d00037e4aeb781909c9a6b03940507d0da # @v1.0.1
|
||||
if: env.COMMIT_SHA != 'null'
|
||||
with:
|
||||
tag_name: ${{ env.COMMIT_SHA }}
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
Analyzers:
|
||||
uses: ./.github/workflows/stockfish_analyzers.yml
|
||||
Matrix:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
arm_matrix: ${{ steps.set-arm-matrix.outputs.arm_matrix }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- id: set-matrix
|
||||
run: |
|
||||
TASKS=$(echo $(cat .github/ci/matrix.json) )
|
||||
echo "MATRIX=$TASKS" >> $GITHUB_OUTPUT
|
||||
- id: set-arm-matrix
|
||||
run: |
|
||||
TASKS_ARM=$(echo $(cat .github/ci/arm_matrix.json) )
|
||||
echo "ARM_MATRIX=$TASKS_ARM" >> $GITHUB_OUTPUT
|
||||
Compilation:
|
||||
needs: [Matrix]
|
||||
uses: ./.github/workflows/compilation.yml
|
||||
with:
|
||||
matrix: ${{ needs.Matrix.outputs.matrix }}
|
||||
ARMCompilation:
|
||||
needs: [Matrix]
|
||||
uses: ./.github/workflows/arm_compilation.yml
|
||||
with:
|
||||
matrix: ${{ needs.Matrix.outputs.arm_matrix }}
|
||||
IWYU:
|
||||
uses: ./.github/workflows/iwyu.yml
|
||||
Sanitizers:
|
||||
uses: ./.github/workflows/stockfish_sanitizers.yml
|
||||
uses: ./.github/workflows/sanitizers.yml
|
||||
Tests:
|
||||
uses: ./.github/workflows/stockfish_test.yml
|
||||
Compiles:
|
||||
uses: ./.github/workflows/stockfish_compile_test.yml
|
||||
uses: ./.github/workflows/tests.yml
|
||||
Binaries:
|
||||
if: github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag')
|
||||
uses: ./.github/workflows/stockfish_binaries.yml
|
||||
if: github.repository == 'official-stockfish/Stockfish'
|
||||
needs: [Matrix, Prerelease, Compilation]
|
||||
uses: ./.github/workflows/upload_binaries.yml
|
||||
with:
|
||||
matrix: ${{ needs.Matrix.outputs.matrix }}
|
||||
ARM_Binaries:
|
||||
if: github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag')
|
||||
uses: ./.github/workflows/stockfish_arm_binaries.yml
|
||||
if: github.repository == 'official-stockfish/Stockfish'
|
||||
needs: [Matrix, Prerelease, ARMCompilation]
|
||||
uses: ./.github/workflows/upload_binaries.yml
|
||||
with:
|
||||
matrix: ${{ needs.Matrix.outputs.arm_matrix }}
|
||||
|
|
170
.github/workflows/stockfish_arm_binaries.yml
vendored
170
.github/workflows/stockfish_arm_binaries.yml
vendored
|
@ -1,170 +0,0 @@
|
|||
name: Stockfish
|
||||
on:
|
||||
workflow_call:
|
||||
jobs:
|
||||
Stockfish:
|
||||
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.config.compiler }}
|
||||
COMP: ${{ matrix.config.comp }}
|
||||
EMU: ${{ matrix.config.emu }}
|
||||
EXT: ${{ matrix.config.ext }}
|
||||
OS: ${{ matrix.config.os }}
|
||||
BINARY: ${{ matrix.binaries }}
|
||||
strategy:
|
||||
matrix:
|
||||
config:
|
||||
- name: Android NDK aarch64
|
||||
os: ubuntu-22.04
|
||||
compiler: aarch64-linux-android21-clang++
|
||||
emu: qemu-aarch64
|
||||
comp: ndk
|
||||
shell: bash
|
||||
- name: Android NDK arm
|
||||
os: ubuntu-22.04
|
||||
compiler: armv7a-linux-androideabi21-clang++
|
||||
emu: qemu-arm
|
||||
comp: ndk
|
||||
shell: bash
|
||||
binaries:
|
||||
- armv8-dotprod
|
||||
- armv8
|
||||
- armv7
|
||||
- armv7-neon
|
||||
exclude:
|
||||
- binaries: armv8-dotprod
|
||||
config: {compiler: armv7a-linux-androideabi21-clang++}
|
||||
- binaries: armv8
|
||||
config: {compiler: armv7a-linux-androideabi21-clang++}
|
||||
- binaries: armv7
|
||||
config: {compiler: aarch64-linux-android21-clang++}
|
||||
- binaries: armv7-neon
|
||||
config: {compiler: aarch64-linux-android21-clang++}
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src
|
||||
shell: ${{ matrix.config.shell }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download required linux packages
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install 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: Extract the bench number from the commit history
|
||||
run: |
|
||||
for hash in $(git rev-list -100 HEAD); do
|
||||
benchref=$(git show -s $hash | tac | grep -m 1 -o -x '[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*' | sed 's/[^0-9]//g') && break || true
|
||||
done
|
||||
[[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $hash" && echo "Reference bench: $benchref" || echo "No bench found"
|
||||
|
||||
- name: Download the used network from the fishtest framework
|
||||
run: make net
|
||||
|
||||
- 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
|
||||
|
||||
# Compile profile guided builds
|
||||
|
||||
- name: Compile ${{ matrix.binaries }} build
|
||||
run: |
|
||||
if [ $COMP == ndk ]; then
|
||||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
fi
|
||||
make clean
|
||||
make -j2 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH=$EMU
|
||||
make strip ARCH=$BINARY COMP=$COMP
|
||||
WINE_PATH=$EMU ../tests/signature.sh $benchref
|
||||
mv ./stockfish$EXT ../stockfish-android-$BINARY$EXT
|
||||
|
||||
- name: Remove non src files
|
||||
run: rm -f *.o .depend *.nnue
|
||||
|
||||
- name: Download wiki
|
||||
run: |
|
||||
git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki
|
||||
cd ../wiki
|
||||
rm -rf .git
|
||||
|
||||
- name: Create tar archive.
|
||||
run: |
|
||||
cd ..
|
||||
mkdir stockfish
|
||||
cp -r wiki stockfish/
|
||||
cp -r src stockfish/
|
||||
cp stockfish-android-$BINARY$EXT stockfish/
|
||||
cp "Top CPU Contributors.txt" stockfish/
|
||||
cp Copying.txt stockfish/
|
||||
cp AUTHORS stockfish/
|
||||
cp CITATION.cff stockfish/
|
||||
cp README.md stockfish/
|
||||
cp CONTRIBUTING.md stockfish/
|
||||
tar -cvf stockfish-android-$BINARY.tar stockfish
|
||||
|
||||
- name: Upload binaries
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: stockfish-android-${{ matrix.binaries }}
|
||||
path: stockfish-android-${{ matrix.binaries }}.tar
|
||||
|
||||
- name: Release
|
||||
if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
files: stockfish-android-${{ matrix.binaries }}.tar
|
||||
|
||||
- name: Get last commit sha
|
||||
id: last_commit
|
||||
run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
|
||||
|
||||
- name: Get commit date
|
||||
id: commit_date
|
||||
run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
|
||||
|
||||
# Make sure that an old ci which still runs on master doesn't recreate a prerelease
|
||||
- name: Check Pullable Commits
|
||||
id: check_commits
|
||||
run: |
|
||||
git fetch
|
||||
CHANGES=$(git rev-list HEAD..origin/master --count)
|
||||
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
|
||||
|
||||
- name: Prerelease
|
||||
if: github.ref_name == 'master' && env.CHANGES == '0'
|
||||
continue-on-error: true
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
prerelease: true
|
||||
files: stockfish-android-${{ matrix.binaries }}.tar
|
252
.github/workflows/stockfish_binaries.yml
vendored
252
.github/workflows/stockfish_binaries.yml
vendored
|
@ -1,252 +0,0 @@
|
|||
name: Stockfish
|
||||
on:
|
||||
workflow_call:
|
||||
jobs:
|
||||
Stockfish:
|
||||
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.config.compiler }}
|
||||
COMP: ${{ matrix.config.comp }}
|
||||
EXT: ${{ matrix.config.ext }}
|
||||
SDE: ${{ matrix.config.sde }}
|
||||
NAME: ${{ matrix.config.simple_name }}
|
||||
BINARY: ${{ matrix.binaries }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- name: Ubuntu 20.04 GCC
|
||||
os: ubuntu-20.04
|
||||
simple_name: ubuntu
|
||||
compiler: g++
|
||||
comp: gcc
|
||||
shell: bash
|
||||
archive_ext: tar
|
||||
sde: /home/runner/work/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-lin/sde -future --
|
||||
- name: MacOS 13 Apple Clang
|
||||
os: macos-13
|
||||
simple_name: macos
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
shell: bash
|
||||
archive_ext: tar
|
||||
- name: MacOS 14 Apple Clang M1
|
||||
os: macos-14
|
||||
simple_name: macos-m1
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
shell: bash
|
||||
archive_ext: tar
|
||||
- name: Windows 2022 Mingw-w64 GCC x86_64
|
||||
os: windows-2022
|
||||
simple_name: windows
|
||||
compiler: g++
|
||||
comp: mingw
|
||||
msys_sys: mingw64
|
||||
msys_env: x86_64-gcc
|
||||
shell: msys2 {0}
|
||||
ext: .exe
|
||||
sde: /d/a/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-win/sde.exe -future --
|
||||
archive_ext: zip
|
||||
binaries:
|
||||
- x86-64
|
||||
- x86-64-sse41-popcnt
|
||||
- x86-64-avx2
|
||||
- x86-64-bmi2
|
||||
- x86-64-avxvnni
|
||||
- x86-64-avx512
|
||||
- x86-64-vnni256
|
||||
- x86-64-vnni512
|
||||
- apple-silicon
|
||||
exclude:
|
||||
# Apple M1
|
||||
- binaries: x86-64
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-sse41-popcnt
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-avx2
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-bmi2
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-avxvnni
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-avxvnni
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-avx512
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-vnni256
|
||||
config: { os: macos-14 }
|
||||
- binaries: x86-64-vnni512
|
||||
config: { os: macos-14 }
|
||||
|
||||
- binaries: x86-64-avxvnni
|
||||
config: { ubuntu-20.04 }
|
||||
|
||||
# Apple x86_64 (no sde)
|
||||
- binaries: x86-64-avxvnni
|
||||
config: { os: macos-13 }
|
||||
- binaries: x86-64-avx512
|
||||
config: { os: macos-13 }
|
||||
- binaries: x86-64-vnni256
|
||||
config: { os: macos-13 }
|
||||
- binaries: x86-64-vnni512
|
||||
config: { os: macos-13 }
|
||||
|
||||
# Apple silicon from windows, macos-13 and ubuntu
|
||||
- binaries: apple-silicon
|
||||
config: { os: windows-2022 }
|
||||
- binaries: apple-silicon
|
||||
config: { os: macos-13 }
|
||||
- binaries: apple-silicon
|
||||
config: { os: ubuntu-20.04 }
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src
|
||||
shell: ${{ matrix.config.shell }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download required macOS packages
|
||||
if: runner.os == 'macOS'
|
||||
run: brew install coreutils
|
||||
|
||||
- name: Install fixed GCC on Linux
|
||||
if: runner.os == 'Linux'
|
||||
uses: egor-tensin/setup-gcc@eaa888eb19115a521fa72b65cd94fe1f25bbcaac # @v1.3
|
||||
with:
|
||||
version: 11
|
||||
|
||||
- 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 zip
|
||||
|
||||
- name: Download SDE package
|
||||
if: runner.os == 'Linux' || runner.os == 'Windows'
|
||||
uses: petarpetrovt/setup-sde@91a1a03434384e064706634125a15f7446d2aafb # @v2.3
|
||||
with:
|
||||
environmentVariableName: SDE_DIR
|
||||
sdeVersion: 9.27.0
|
||||
|
||||
- name: Download the used network from the fishtest framework
|
||||
run: make net
|
||||
|
||||
- name: Extract the bench number from the commit history
|
||||
run: |
|
||||
for hash in $(git rev-list -100 HEAD); do
|
||||
benchref=$(git show -s $hash | tac | grep -m 1 -o -x '[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*' | sed 's/[^0-9]//g') && break || true
|
||||
done
|
||||
[[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $hash" && echo "Reference bench: $benchref" || echo "No bench found"
|
||||
|
||||
- name: Check compiler
|
||||
run: $COMPILER -v
|
||||
|
||||
- name: Show g++ cpu info
|
||||
if: runner.os != 'macOS'
|
||||
run: g++ -Q -march=native --help=target
|
||||
|
||||
- name: Show clang++ cpu info
|
||||
if: runner.os == 'macOS'
|
||||
run: clang++ -E - -march=native -###
|
||||
|
||||
- name: Test help target
|
||||
run: make help
|
||||
|
||||
- name: Check git
|
||||
run: git --version
|
||||
|
||||
# Compile profile guided builds
|
||||
|
||||
- name: Compile ${{ matrix.binaries }} build
|
||||
run: |
|
||||
make -j2 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH="$SDE"
|
||||
make strip ARCH=$BINARY COMP=$COMP
|
||||
WINE_PATH="$SDE" ../tests/signature.sh $benchref
|
||||
mv ./stockfish$EXT ../stockfish-$NAME-$BINARY$EXT
|
||||
|
||||
- name: Remove non src files
|
||||
run: git clean -fx
|
||||
|
||||
- name: Download wiki
|
||||
run: |
|
||||
git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki
|
||||
rm -rf ../wiki/.git
|
||||
|
||||
- name: Create directory.
|
||||
run: |
|
||||
cd ..
|
||||
mkdir stockfish
|
||||
cp -r wiki stockfish/
|
||||
cp -r src stockfish/
|
||||
cp stockfish-$NAME-$BINARY$EXT stockfish/
|
||||
cp "Top CPU Contributors.txt" stockfish/
|
||||
cp Copying.txt stockfish/
|
||||
cp AUTHORS stockfish/
|
||||
cp CITATION.cff stockfish/
|
||||
cp README.md stockfish/
|
||||
cp CONTRIBUTING.md stockfish/
|
||||
|
||||
- name: Create tar
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
cd ..
|
||||
tar -cvf stockfish-$NAME-$BINARY.tar stockfish
|
||||
|
||||
- name: Create zip
|
||||
if: runner.os == 'Windows'
|
||||
run: |
|
||||
cd ..
|
||||
zip -r stockfish-$NAME-$BINARY.zip stockfish
|
||||
|
||||
- name: Upload binaries
|
||||
if: runner.os != 'Windows'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
|
||||
path: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.tar
|
||||
|
||||
# Artifacts automatically get zipped.
|
||||
# To avoid double-zipping, we use the unzipped directory
|
||||
- name: Upload binaries
|
||||
if: runner.os == 'Windows'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
|
||||
path: stockfish
|
||||
|
||||
- name: Release
|
||||
if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|
||||
|
||||
- name: Get last commit sha
|
||||
id: last_commit
|
||||
run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
|
||||
|
||||
- name: Get commit date
|
||||
id: commit_date
|
||||
run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
|
||||
|
||||
# Make sure that an old ci that still runs on master doesn't recreate a prerelease
|
||||
- name: Check Pullable Commits
|
||||
id: check_commits
|
||||
run: |
|
||||
git fetch
|
||||
CHANGES=$(git rev-list HEAD..origin/master --count)
|
||||
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
|
||||
|
||||
- name: Prerelease
|
||||
if: github.ref_name == 'master' && env.CHANGES == '0'
|
||||
continue-on-error: true
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
prerelease: true
|
||||
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|
117
.github/workflows/stockfish_compile_test.yml
vendored
117
.github/workflows/stockfish_compile_test.yml
vendored
|
@ -1,117 +0,0 @@
|
|||
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 }}
|
||||
strategy:
|
||||
matrix:
|
||||
config:
|
||||
- name: Ubuntu 20.04 GCC
|
||||
os: ubuntu-20.04
|
||||
compiler: g++
|
||||
comp: gcc
|
||||
shell: bash
|
||||
- name: Ubuntu 20.04 Clang
|
||||
os: ubuntu-20.04
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
shell: bash
|
||||
- name: MacOS 13 Apple Clang
|
||||
os: macos-13
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
shell: bash
|
||||
- name: MacOS 14 Apple Clang M1
|
||||
os: macos-14
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
shell: bash
|
||||
m1: true
|
||||
- name: MacOS 13 GCC 11
|
||||
os: macos-13
|
||||
compiler: g++-11
|
||||
comp: gcc
|
||||
shell: bash
|
||||
- name: Windows 2022 Mingw-w64 GCC x86_64
|
||||
os: windows-2022
|
||||
compiler: g++
|
||||
comp: mingw
|
||||
msys_sys: mingw64
|
||||
msys_env: x86_64-gcc
|
||||
shell: msys2 {0}
|
||||
- name: Windows 2022 Mingw-w64 Clang x86_64
|
||||
os: windows-2022
|
||||
compiler: clang++
|
||||
comp: clang
|
||||
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@v4
|
||||
|
||||
- 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
|
||||
|
||||
- name: Download the used network from the fishtest framework
|
||||
run: make net
|
||||
|
||||
- name: Check compiler
|
||||
run: $COMPILER -v
|
||||
|
||||
- name: Test help target
|
||||
run: make help
|
||||
|
||||
- name: Check git
|
||||
run: git --version
|
||||
|
||||
# x86-64 with newer extensions tests
|
||||
|
||||
- name: Compile x86-64-avx2 build
|
||||
if: ${{ ! matrix.config.m1 }}
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-avx2 build
|
||||
|
||||
- name: Compile x86-64-bmi2 build
|
||||
if: ${{ ! matrix.config.m1 }}
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-bmi2 build
|
||||
|
||||
- name: Compile x86-64-avx512 build
|
||||
if: ${{ ! matrix.config.m1 }}
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-avx512 build
|
||||
|
||||
- name: Compile x86-64-vnni512 build
|
||||
if: ${{ ! matrix.config.m1 }}
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-vnni512 build
|
||||
|
||||
- name: Compile x86-64-vnni256 build
|
||||
if: ${{ ! matrix.config.m1 }}
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-vnni256 build
|
||||
|
||||
- name: Compile apple-silicon build
|
||||
if: matrix.config.m1
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=apple-silicon build
|
|
@ -1,8 +1,8 @@
|
|||
name: Stockfish
|
||||
name: Tests
|
||||
on:
|
||||
workflow_call:
|
||||
jobs:
|
||||
Stockfish:
|
||||
Test-Targets:
|
||||
name: ${{ matrix.config.name }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
|
@ -10,6 +10,7 @@ jobs:
|
|||
COMP: ${{ matrix.config.comp }}
|
||||
CXXFLAGS: "-Werror"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- name: Ubuntu 20.04 GCC
|
||||
|
@ -190,35 +191,35 @@ jobs:
|
|||
run: |
|
||||
export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
||||
make clean
|
||||
make -j2 ARCH=x86-32 optimize=no debug=yes build
|
||||
make -j4 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
|
||||
make -j4 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
|
||||
make -j4 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
|
||||
make -j4 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
|
||||
make -j4 ARCH=general-32 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
# x86-64 tests
|
||||
|
@ -228,21 +229,21 @@ jobs:
|
|||
run: |
|
||||
export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-avx2 optimize=no debug=yes build
|
||||
make -j4 ARCH=x86-64-avx2 optimize=no debug=yes build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test x86-64-bmi2 build
|
||||
if: matrix.config.run_64bit_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-bmi2 build
|
||||
make -j4 ARCH=x86-64-bmi2 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test x86-64-avx2 build
|
||||
if: matrix.config.run_64bit_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-avx2 build
|
||||
make -j4 ARCH=x86-64-avx2 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
# Test a deprecated arch
|
||||
|
@ -250,49 +251,49 @@ jobs:
|
|||
if: matrix.config.run_64bit_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-modern build
|
||||
make -j4 ARCH=x86-64-modern build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test x86-64-sse41-popcnt build
|
||||
if: matrix.config.run_64bit_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-sse41-popcnt build
|
||||
make -j4 ARCH=x86-64-sse41-popcnt 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
|
||||
make -j4 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
|
||||
make -j4 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
|
||||
make -j4 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
|
||||
make -j4 ARCH=general-64 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test apple-silicon build
|
||||
if: matrix.config.run_m1_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=apple-silicon build
|
||||
make -j4 ARCH=apple-silicon build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
# armv8 tests
|
||||
|
@ -303,7 +304,7 @@ jobs:
|
|||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
make clean
|
||||
make -j2 ARCH=armv8 build
|
||||
make -j4 ARCH=armv8 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test armv8-dotprod build
|
||||
|
@ -312,7 +313,7 @@ jobs:
|
|||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
make clean
|
||||
make -j2 ARCH=armv8-dotprod build
|
||||
make -j4 ARCH=armv8-dotprod build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
# armv7 tests
|
||||
|
@ -323,7 +324,7 @@ jobs:
|
|||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
make clean
|
||||
make -j2 ARCH=armv7 build
|
||||
make -j4 ARCH=armv7 build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
- name: Test armv7-neon build
|
||||
|
@ -332,7 +333,7 @@ jobs:
|
|||
export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH
|
||||
export LDFLAGS="-static -Wno-unused-command-line-argument"
|
||||
make clean
|
||||
make -j2 ARCH=armv7-neon build
|
||||
make -j4 ARCH=armv7-neon build
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
# riscv64 tests
|
||||
|
@ -340,7 +341,7 @@ jobs:
|
|||
- name: Test riscv64 build
|
||||
if: matrix.config.run_riscv64_tests
|
||||
run: |
|
||||
echo "export LDFLAGS='-static' && make clean && make -j2 ARCH=riscv64 build" > script.sh
|
||||
echo "export LDFLAGS='-static' && make clean && make -j4 ARCH=riscv64 build" > script.sh
|
||||
docker run --rm --platform ${{ matrix.config.platform }} -v ${{ github.workspace }}/src:/app sf_builder
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
|
@ -349,7 +350,7 @@ jobs:
|
|||
- name: Test ppc64 build
|
||||
if: matrix.config.run_ppc64_tests
|
||||
run: |
|
||||
echo "export LDFLAGS='-static' && make clean && make -j2 ARCH=ppc-64 build" > script.sh
|
||||
echo "export LDFLAGS='-static' && make clean && make -j4 ARCH=ppc-64 build" > script.sh
|
||||
docker run --rm --platform ${{ matrix.config.platform }} -v ${{ github.workspace }}/src:/app sf_builder
|
||||
../tests/signature.sh $benchref
|
||||
|
||||
|
@ -359,6 +360,6 @@ jobs:
|
|||
if: matrix.config.run_64bit_tests
|
||||
run: |
|
||||
make clean
|
||||
make -j2 ARCH=x86-64-avx2 build
|
||||
make -j4 ARCH=x86-64-avx2 build
|
||||
../tests/perft.sh
|
||||
../tests/reprosearch.sh
|
105
.github/workflows/upload_binaries.yml
vendored
Normal file
105
.github/workflows/upload_binaries.yml
vendored
Normal file
|
@ -0,0 +1,105 @@
|
|||
name: Upload Binaries
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
matrix:
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
Artifacts:
|
||||
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.config.compiler }}
|
||||
COMP: ${{ matrix.config.comp }}
|
||||
EXT: ${{ matrix.config.ext }}
|
||||
NAME: ${{ matrix.config.simple_name }}
|
||||
BINARY: ${{ matrix.binaries }}
|
||||
SDE: ${{ matrix.config.sde }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(inputs.matrix) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: ${{ matrix.config.shell }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Download artifact from compilation
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.config.simple_name }} ${{ matrix.binaries }}
|
||||
path: ${{ matrix.config.simple_name }} ${{ matrix.binaries }}
|
||||
|
||||
- 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 zip
|
||||
|
||||
- name: Create Package
|
||||
run: |
|
||||
mkdir stockfish
|
||||
|
||||
- name: Download wiki
|
||||
run: |
|
||||
git clone https://github.com/official-stockfish/Stockfish.wiki.git wiki
|
||||
rm -rf wiki/.git
|
||||
mv wiki stockfish/
|
||||
|
||||
- name: Copy files
|
||||
run: |
|
||||
mv "${{ matrix.config.simple_name }} ${{ matrix.binaries }}" stockfish-workflow
|
||||
cd stockfish-workflow
|
||||
cp -r src ../stockfish/
|
||||
cp stockfish-$NAME-$BINARY$EXT ../stockfish/
|
||||
cp "Top CPU Contributors.txt" ../stockfish/
|
||||
cp Copying.txt ../stockfish/
|
||||
cp AUTHORS ../stockfish/
|
||||
cp CITATION.cff ../stockfish/
|
||||
cp README.md ../stockfish/
|
||||
cp CONTRIBUTING.md ../stockfish/
|
||||
|
||||
- name: Create tar
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
tar -cvf stockfish-$NAME-$BINARY.tar stockfish
|
||||
|
||||
- name: Create zip
|
||||
if: runner.os == 'Windows'
|
||||
run: |
|
||||
zip -r stockfish-$NAME-$BINARY.zip stockfish
|
||||
|
||||
- name: Release
|
||||
if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|
||||
|
||||
- name: Get last commit sha
|
||||
id: last_commit
|
||||
run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
|
||||
|
||||
- name: Get commit date
|
||||
id: commit_date
|
||||
run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
|
||||
|
||||
# Make sure that an old ci that still runs on master doesn't recreate a prerelease
|
||||
- name: Check Pullable Commits
|
||||
id: check_commits
|
||||
run: |
|
||||
git fetch
|
||||
CHANGES=$(git rev-list HEAD..origin/master --count)
|
||||
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
|
||||
|
||||
- name: Prerelease
|
||||
if: github.ref_name == 'master' && env.CHANGES == '0'
|
||||
continue-on-error: true
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
|
||||
with:
|
||||
name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
||||
prerelease: true
|
||||
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|
Loading…
Add table
Reference in a new issue