Skip to content

CI: run dialyzer on macOS and Windows #196

CI: run dialyzer on macOS and Windows

CI: run dialyzer on macOS and Windows #196

Workflow file for this run

name: Build
on: [push, pull_request]
jobs:
linux:
name: Build (${{ matrix.os }}, OTP-${{ matrix.otp_version }})
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
matrix:
otp_version: [20, 21, 22, 23, 24, 25, 26]
os: [ubuntu-latest]
container:
image: erlang:${{ matrix.otp_version }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get branch name
id: branch-name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
- name: Get some info
run: |
pwd
whoami
- name: Install system packages
run: |
apt update
apt install stockfish -y
apt install socat -y
- name: Run Stockfish as TCP service
run: |
export STOCKFISH_EXEC_PATH=/usr/games/stockfish
ls -l ${STOCKFISH_EXEC_PATH}
socat TCP-LISTEN:9010,reuseaddr,fork EXEC:${STOCKFISH_EXEC_PATH} &
- name: Cache Dialyzer PLTs
uses: actions/cache@v3
with:
path: |
~/.cache/rebar3/rebar3_*_plt
_build/default/rebar3_*_plt
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-otp-${{ matrix.otp_version }}-plt-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.config')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-otp-${{ matrix.otp_version }}-plt-
- name: Cache Hex packages
uses: actions/cache@v3
with:
path: ~/.cache/rebar3/hex/hexpm/packages
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-otp-${{ matrix.otp_version }}-hex-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.lock')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-otp-${{ matrix.otp_version }}-hex-
- name: Compile
run: rebar3 compile
- name: CT tests
run: |
export BINBO_UCI_ENGINE_PATH=/usr/games/stockfish
export BINBO_UCI_ENGINE_HOST=localhost
export BINBO_UCI_ENGINE_PORT=9010
rebar3 ct
- name: Dialyzer
run: rebar3 dialyzer
- name: Code coverage
run: rebar3 cover
- name: Generate coverage report
run: rebar3 covertool generate
- name: Upload coverage to Codecov
run: bash <(curl -s https://codecov.io/bash) -f _build/test/covertool/binbo.covertool.xml
macos:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
matrix:
os: [macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get branch name
id: branch-name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
- name: Install Erlang
run: brew install erlang
- name: Install rebar3
run: brew install rebar3
- name: Install Stockfish
run: brew install stockfish
- name: Start Stockfish TCP Server
run: launchctl load test/helper-files/org.stockfish.x86.plist
- name: Cache Dialyzer PLTs
uses: actions/cache@v3
with:
path: |
~/.cache/rebar3/rebar3_*_plt
_build/default/rebar3_*_plt
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-plt-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.config')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-plt-
- name: Cache Hex packages
uses: actions/cache@v3
with:
path: ~/.cache/rebar3/hex/hexpm/packages
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-hex-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.lock')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-hex-
- name: Compile
run: rebar3 compile
- name: CT tests
run: |
export BINBO_UCI_ENGINE_PATH=/usr/local/bin/stockfish
export BINBO_UCI_ENGINE_HOST=localhost
export BINBO_UCI_ENGINE_PORT=9010
rebar3 ct
- name: Dialyzer
run: rebar3 dialyzer
- name: Code coverage
run: rebar3 cover
windows:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
defaults:
run:
shell: powershell
strategy:
matrix:
os: [windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get branch name
id: branch-name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
- name: Install Erlang
run: choco install erlang -y
- name: Install rebar3
run: |
mkdir ~/rebar3-dl
Invoke-WebRequest -Uri https://github.com/erlang/rebar3/releases/download/3.22.1/rebar3 -OutFile ~/rebar3-dl/rebar3
Copy-Item -Path .\test\helper-files\rebar3.cmd -Destination ~/rebar3-dl/rebar3.cmd
- name: Install Stockfish
run: |
Invoke-WebRequest -Uri https://github.com/official-stockfish/Stockfish/releases/download/sf_16/stockfish-windows-x86-64.zip -OutFile ~/stockfish-windows-x86-64.zip
Expand-Archive -LiteralPath '~/stockfish-windows-x86-64.zip' -DestinationPath ~/
- name: Cache Dialyzer PLTs
uses: actions/cache@v3
with:
path: |
~/.cache/rebar3/rebar3_*_plt
_build/default/rebar3_*_plt
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-plt-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.config')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-plt-
- name: Cache Hex packages
uses: actions/cache@v3
with:
path: ~/.cache/rebar3/hex/hexpm/packages
key: ${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-hex-${{ hashFiles(format('{0}{1}', github.workspace, '/rebar.lock')) }}
restore-keys: |
${{ runner.os }}-${{ steps.branch-name.outputs.branch }}-hex-
- name: Compile
run: ~/rebar3-dl/rebar3.cmd compile
- name: CT tests
run: |
$env:BINBO_UCI_ENGINE_PATH = (Resolve-Path '~/stockfish/stockfish-windows-x86-64.exe').Path.replace('\', '/')
echo "BINBO_UCI_ENGINE_PATH=$env:BINBO_UCI_ENGINE_PATH"
~/rebar3-dl/rebar3.cmd ct
- name: Dialyzer
run: ~/rebar3-dl/rebar3.cmd dialyzer
- name: Code coverage
run: ~/rebar3-dl/rebar3.cmd cover