Set up visibility controls on output libraries #36
Workflow file for this run
This file contains 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: ffistan tests | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
workflow_dispatch: {} | |
env: | |
CACHE_VERSION: 2 | |
# only run one copy per PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ${{matrix.os}} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Stan build caching | |
# note: not quite working since we use a development branch of Stan | |
uses: actions/cache@v3 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
# we use the cache here to build the Stan models once for multiple interfaces | |
- name: Set up test model cache | |
uses: actions/cache@v3 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Build test models (Unix) | |
if: matrix.os != 'windows-latest' && steps.test-models.outputs.cache-hit != 'true' | |
run: | | |
make O=2 test_models -j2 | |
shell: bash | |
- name: Build test models (Windows) | |
if: matrix.os == 'windows-latest' && steps.test-models.outputs.cache-hit != 'true' | |
run: | | |
mingw32-make.exe O=2 test_models -j2 | |
shell: pwsh | |
python: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: ["3.9", "3.12"] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore Stan | |
uses: actions/cache@v3 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v3 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Install package | |
run: | | |
cd clients/python/ | |
pip install pytest | |
pip install . | |
- name: Test import | |
run: | | |
python -c "import ffistan" | |
- name: Run tests | |
run: | | |
pytest -v clients/python/ | |
env: | |
FFISTAN: ${{ github.workspace }} | |
- name: Run example | |
run: | | |
python clients/python/example.py | |
env: | |
FFISTAN: ${{ github.workspace }} | |
Rlang: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install R | |
uses: r-lib/actions/[email protected] | |
- name: Install R dependencies | |
uses: r-lib/actions/[email protected] | |
with: | |
packages: | | |
any::R6 | |
any::testthat | |
any::devtools | |
- name: Restore Stan | |
uses: actions/cache@v3 | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v3 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
# needed for R tests until they have compilation utilities and can set this themselves. | |
- name: Set up TBB | |
if: matrix.os == 'windows-latest' | |
run: | | |
Add-Content $env:GITHUB_PATH "$(pwd)/stan/lib/stan_math/lib/tbb" | |
- name: Run tests | |
if: matrix.os != 'windows-latest' | |
run: | | |
cd clients/R | |
Rscript -e "install.packages(getwd(), repos=NULL, type=\"source\")" | |
Rscript -e "devtools::test(reporter = c(\"summary\", \"fail\"))" | |
- name: Run tests (windows) | |
if: matrix.os == 'windows-latest' | |
run: | | |
cd clients/R | |
Rscript -e 'install.packages(getwd(), repos=NULL, type=\"source\")' | |
Rscript -e 'devtools::test(reporter = c(\"summary\", \"fail\"))' | |
- name: Run example | |
run: | | |
Rscript clients/R/example.R | |
julia: | |
needs: [build] | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
julia-version: ["1"] | |
fail-fast: false | |
steps: | |
- name: Check out github | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Julia | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: ${{ matrix.julia-version }} | |
- name: Restore Stan | |
uses: actions/cache@v3 | |
id: stan-cache | |
with: | |
path: ./stan/ | |
key: ${{ runner.os }}-stan-${{ hashFiles('stan/src/stan/version.hpp') }}-v${{ env.CACHE_VERSION }} | |
- name: Restore built models | |
uses: actions/cache@v3 | |
id: test-models | |
with: | |
path: ./test_models/ | |
key: ${{ hashFiles('**/*.stan', 'src/*', 'stan/src/stan/version.hpp', 'Makefile') }}-${{ matrix.os }}-v${{ env.CACHE_VERSION }} | |
- name: Check import | |
run: | | |
cd clients/julia/ | |
julia --project=. -e "using Pkg; Pkg.instantiate()" | |
julia --project=. -e "using FFIStan" | |
env: | |
FFISTAN: ${{ github.workspace }} | |
- name: Run tests | |
run: | | |
julia --project=clients/julia -t 2 -e "using Pkg; Pkg.test()" | |
env: | |
FFISTAN: ${{ github.workspace }} | |
- name: Run examples | |
run: | | |
julia --project=clients/julia clients/julia/example.jl | |
env: | |
FFISTAN: ${{ github.workspace }} | |