6 name: ${{ matrix.config.name }} ${{ matrix.binaries }}
7 runs-on: ${{ matrix.config.os }}
9 COMPILER: ${{ matrix.config.compiler }}
10 COMP: ${{ matrix.config.comp }}
11 EXT: ${{ matrix.config.ext }}
12 SDE: ${{ matrix.config.sde }}
13 NAME: ${{ matrix.config.simple_name }}
14 BINARY: ${{ matrix.binaries }}
19 - name: Ubuntu 20.04 GCC
26 sde: /home/runner/work/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-lin/sde -future --
27 - name: MacOS 13 Apple Clang
34 - name: Windows 2022 Mingw-w64 GCC x86_64
43 sde: /d/a/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.27.0-2023-09-13-win/sde.exe -future --
55 - binaries: x86-64-avxvnni
56 config: { ubuntu-20.04 }
57 - binaries: x86-64-avxvnni
58 config: { os: macos-13 }
59 - binaries: x86-64-avx512
60 config: { os: macos-13 }
61 - binaries: x86-64-vnni256
62 config: { os: macos-13 }
63 - binaries: x86-64-vnni512
64 config: { os: macos-13 }
67 working-directory: src
68 shell: ${{ matrix.config.shell }}
70 - uses: actions/checkout@v4
74 - name: Download required macOS packages
75 if: runner.os == 'macOS'
76 run: brew install coreutils
78 - name: Install fixed GCC on Linux
79 if: runner.os == 'Linux'
80 uses: egor-tensin/setup-gcc@eaa888eb19115a521fa72b65cd94fe1f25bbcaac # @v1.3
84 - name: Setup msys and install required packages
85 if: runner.os == 'Windows'
86 uses: msys2/setup-msys2@v2
88 msystem: ${{ matrix.config.msys_sys }}
89 install: mingw-w64-${{ matrix.config.msys_env }} make git zip
91 - name: Download SDE package
92 if: runner.os == 'Linux' || runner.os == 'Windows'
93 uses: petarpetrovt/setup-sde@91a1a03434384e064706634125a15f7446d2aafb # @v2.3
95 environmentVariableName: SDE_DIR
98 - name: Download the used network from the fishtest framework
101 - name: Extract the bench number from the commit history
103 for hash in $(git rev-list -100 HEAD); do
104 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
106 [[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $hash" && echo "Reference bench: $benchref" || echo "No bench found"
108 - name: Check compiler
111 - name: Show g++ cpu info
112 if: runner.os != 'macOS'
113 run: g++ -Q -march=native --help=target
115 - name: Show clang++ cpu info
116 if: runner.os == 'macOS'
117 run: clang++ -E - -march=native -###
119 - name: Test help target
125 # Compile profile guided builds
127 - name: Compile ${{ matrix.binaries }} build
129 make -j2 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH="$SDE"
130 make strip ARCH=$BINARY COMP=$COMP
131 WINE_PATH="$SDE" ../tests/signature.sh $benchref
132 mv ./stockfish$EXT ../stockfish-$NAME-$BINARY$EXT
134 - name: Remove non src files
137 - name: Download wiki
139 git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki
142 - name: Create directory.
146 cp -r wiki stockfish/
148 cp stockfish-$NAME-$BINARY$EXT stockfish/
149 cp "Top CPU Contributors.txt" stockfish/
150 cp Copying.txt stockfish/
151 cp AUTHORS stockfish/
152 cp CITATION.cff stockfish/
153 cp README.md stockfish/
154 cp CONTRIBUTING.md stockfish/
157 if: runner.os != 'Windows'
160 tar -cvf stockfish-$NAME-$BINARY.tar stockfish
163 if: runner.os == 'Windows'
166 zip -r stockfish-$NAME-$BINARY.zip stockfish
168 - name: Upload binaries
169 if: runner.os != 'Windows'
170 uses: actions/upload-artifact@v3
172 name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
173 path: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.tar
175 # Artifacts automatically get zipped
176 # to avoid double zipping, we use the unzipped directory
177 - name: Upload binaries
178 if: runner.os == 'Windows'
179 uses: actions/upload-artifact@v3
181 name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
185 if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'
186 uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
188 files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
190 - name: Get last commit sha
192 run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
194 - name: Get commit date
196 run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
198 # Make sure that an old ci which still runs on master doesn't recreate a prerelease
199 - name: Check Pullable Commits
203 CHANGES=$(git rev-list HEAD..origin/master --count)
204 echo "CHANGES=$CHANGES" >> $GITHUB_ENV
207 if: github.ref_name == 'master' && env.CHANGES == '0'
208 continue-on-error: true
209 uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # @v1
211 name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
212 tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
214 files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}