More stable matetrack CI #5974
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Stockfish | |
| on: | |
| push: | |
| tags: | |
| - "*" | |
| branches: | |
| - master | |
| - tools | |
| - github_ci | |
| pull_request: | |
| branches: | |
| - master | |
| - tools | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| Prerelease: | |
| name: Prerelease | |
| if: github.repository == 'official-stockfish/Stockfish' && (github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag')) | |
| runs-on: ubuntu-latest | |
| needs: [Matrix, ARMCompilation, UniversalCompilation] | |
| permissions: | |
| contents: write # For deleting/creating a prerelease | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| fetch-depth: 0 | |
| # returns null if no pre-release exists | |
| - name: Get Commit SHA of Latest Pre-release | |
| run: | | |
| # Install required packages | |
| sudo apt-get update | |
| sudo apt-get install -y curl jq | |
| echo "COMMIT_SHA_TAG=$(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 | |
| - run: gh release delete ${{ env.COMMIT_SHA_TAG }} --cleanup-tag | |
| if: env.COMMIT_SHA_TAG != 'null' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # 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: 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 | |
| - name: Official Release? | |
| id: official_release | |
| # Check for "Official release version of Stockfish" in the commit message | |
| run: | | |
| if git log -1 --pretty=%B | grep -q "Official release version of Stockfish"; then | |
| echo "OFFICIAL_RELEASE=true" >> $GITHUB_ENV | |
| else | |
| echo "OFFICIAL_RELEASE=false" >> $GITHUB_ENV | |
| fi | |
| # Get recent commits for release body | |
| - name: Get commits in this push | |
| id: recent_commits | |
| run: | | |
| COMMITS=$(git log \ | |
| --format="- [\`%h\`](https://github.com/${{ github.repository }}/commit/%H) *%s*" \ | |
| ${{ github.event.before }}..HEAD) | |
| echo "COMMITS<<EOF" >> $GITHUB_OUTPUT | |
| echo "$COMMITS" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| # Create a new pre-release, the other upload_binaries.yml will upload the binaries | |
| # to this pre-release. | |
| - name: Create Prerelease | |
| if: github.ref_name == 'master' && env.CHANGES == '0' && env.OFFICIAL_RELEASE == 'false' | |
| uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 | |
| with: | |
| name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} | |
| tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} | |
| prerelease: true | |
| body: | | |
| Precompiled binaries of the latest Stockfish development version, built automatically on every commit. | |
| > [!NOTE] | |
| > For stable, thoroughly tested builds use the [official releases](https://github.com/official-stockfish/Stockfish/releases). | |
| > Pre-releases may contain bugs. | |
| *Some platforms ship a **universal binary** that automatically selects the best | |
| instruction set for your CPU - no manual selection needed.* | |
| --- | |
| ## Commits | |
| ${{ steps.recent_commits.outputs.COMMITS }} | |
| [View all commits →](https://github.com/${{ github.repository }}/commits/master) | |
| Matrix: | |
| name: Prepare matrices | |
| runs-on: ubuntu-latest | |
| outputs: | |
| arm_matrix: ${{ steps.set-arm-matrix.outputs.arm_matrix }} | |
| universal_matrix: ${{ steps.set-universal-matrix.outputs.universal_matrix }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - id: set-arm-matrix | |
| run: | | |
| ARM_MATRIX=$(jq -c '.' .github/ci/arm_matrix.json) | |
| echo "ARM_MATRIX=$ARM_MATRIX" >> $GITHUB_OUTPUT | |
| - id: set-universal-matrix | |
| run: | | |
| UNIVERSAL_MATRIX=$(jq -c '.' .github/ci/universal_matrix.json) | |
| echo "UNIVERSAL_MATRIX=$UNIVERSAL_MATRIX" >> $GITHUB_OUTPUT | |
| # Testing Jobs | |
| IWYU: | |
| name: IWYU | |
| uses: ./.github/workflows/iwyu.yml | |
| Sanitizers: | |
| name: Sanitizers | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/sanitizers.yml | |
| Tests: | |
| name: Tests | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/tests.yml | |
| Matetrack: | |
| name: Matetrack | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/matetrack.yml | |
| Games: | |
| name: Games | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/games.yml | |
| CompilerCheck: | |
| name: Compiler check | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/avx2_compilers.yml | |
| WASMCompilation: | |
| name: WASM compilation | |
| if: ${{ always() }} | |
| uses: ./.github/workflows/wasm_compilation.yml | |
| # Release Jobs | |
| ARMCompilation: | |
| name: Android builds | |
| needs: [Matrix, Sanitizers, Tests, Matetrack, Games, CompilerCheck] | |
| uses: ./.github/workflows/arm_compilation.yml | |
| with: | |
| matrix: ${{ needs.Matrix.outputs.arm_matrix }} | |
| UniversalCompilation: | |
| name: "Universal builds" | |
| needs: [Matrix, Sanitizers, Tests, Matetrack, Games, CompilerCheck] | |
| uses: ./.github/workflows/universal_compilation.yml | |
| ARM_Binaries: | |
| if: github.repository == 'official-stockfish/Stockfish' | |
| name: Android uploads | |
| needs: [Prerelease, Matrix] | |
| uses: ./.github/workflows/upload_binaries.yml | |
| with: | |
| matrix: ${{ needs.Matrix.outputs.arm_matrix }} | |
| permissions: | |
| contents: write # For deleting/creating a (pre)release | |
| secrets: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| Universal_Binaries: | |
| if: github.repository == 'official-stockfish/Stockfish' | |
| name: Universal binaries | |
| needs: [Prerelease, Matrix] | |
| uses: ./.github/workflows/upload_binaries.yml | |
| with: | |
| matrix: ${{ needs.Matrix.outputs.universal_matrix }} | |
| permissions: | |
| contents: write # For deleting/creating a (pre)release | |
| secrets: | |
| token: ${{ secrets.GITHUB_TOKEN }} |