Skip to content

massiv-CI

massiv-CI #412

Workflow file for this run

name: massiv-CI
on:
push:
branches: [ "master", "release/**" ]
pull_request:
branches: [ "**" ]
schedule:
- cron: "0 5 * * 5"
defaults: { run: { shell: bash } }
# Cancel running workflows when a new workflow on the same PR or branch is started,
# but put scheduled workflows into their own group
concurrency:
group: ${{
format('{0}-{1}{2}',
github.workflow,
github.event.pull_request.number || github.ref,
github.event_name == 'schedule' && '-scheduled' || '')}}
cancel-in-progress: true
jobs:
massiv-test-with-stack:
name: Stack
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-13, windows-latest]
resolver: [lts-11, lts-12, lts-14, lts-16, lts-18, lts-19, lts-20, lts-21, lts-22, nightly]
include:
- resolver: lts-11
ghc: '8.2.2'
- resolver: lts-12
ghc: '8.4.4'
- resolver: lts-14
ghc: '8.6.5'
- resolver: lts-16
ghc: '8.8.4'
- resolver: lts-18
ghc: '8.10.7'
- resolver: lts-19
ghc: '9.0.2'
- resolver: lts-20
ghc: '9.2.8'
- resolver: lts-21
ghc: '9.4.8'
- resolver: lts-22
ghc: '9.6.5'
- resolver: nightly
ghc: '9.8.2'
# exclude:
# - resolver: lts-12
# os: windows-latest
# - resolver: lts-14
# os: windows-latest
# # - resolver: lts-16
# # os: windows-latest # OOM on building Test.Massiv.VectorSpec
# - resolver: lts-18
# os: windows-latest # Too buggy, occasional ghc crashes
env:
STACK_YAML: 'stack.ghc-${{ matrix.ghc }}.yaml'
STACK_ARGS: '--resolver=${{ matrix.resolver }} --system-ghc'
cache-version: v7 # bump up this version to invalidate currently stored cache
steps:
- uses: actions/checkout@v3
- uses: haskell-actions/setup@v2
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
enable-stack: true
stack-version: '2.15.5'
- name: Cache
id: cache
uses: actions/cache@v3
with:
path: |
${{ steps.setup-haskell-cabal.outputs.stack-root }}
.stack-work-root
massiv/.stack-work-root
massiv-test/.stack-work-root
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
restore-keys: |
${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
- name: Windows Cache
id: cache-windows
uses: actions/cache@v3
if: matrix.os == 'windows-latest'
with:
path: |
C:\\Users\\RUNNER~1\\AppData\\Local\\Programs\\stack
key: ${{ runner.os }}-${{ matrix.ghc }}-programs-${{ env.cache-version }}
restore-keys: |
${{ runner.os }}-${{ matrix.ghc }}-programs-${{ env.cache-version }}
- name: Reset modtime
run: |
set -ex
curl -sSL https://raw.githubusercontent.com/lehins/utils/master/haskell/git-modtime/git-modtime.hs -o git-modtime.hs
runhaskell -- git-modtime.hs -f .stack-work-root/tree-contents.txt
- name: Build
env:
COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
run: |
set -ex
if [ "${{ matrix.os }}.${{ matrix.resolver }}" == "ubuntu-latest.lts-21" ] && [ -n "${COVERALLS_TOKEN}" ]; then
stack $STACK_ARGS test massiv-test:tests --coverage --no-run-tests --haddock --no-haddock-deps
else
stack $STACK_ARGS test --no-run-tests --haddock --no-haddock-deps
fi
- name: Test
env:
COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
run: |
set -ex
if [ "${{ matrix.os }}.${{ matrix.resolver }}" == "ubuntu-latest.lts-21" ] && [ -n "${COVERALLS_TOKEN}" ]; then
stack $STACK_ARGS test massiv-test:tests --coverage
stack $STACK_ARGS hpc report --all
curl -L https://github.com/rubik/stack-hpc-coveralls/releases/download/v0.0.7.0/shc-Linux-X64.tar.bz2 | tar xj shc
./shc --repo-token="$COVERALLS_TOKEN" --partial-coverage --fetch-coverage combined custom
else
stack $STACK_ARGS test massiv:doctests
stack $STACK_ARGS test massiv-test:tests
fi
massiv-test-with-cabal:
name: Cabal
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, ghc: "8.0.2" }
- { os: ubuntu-latest, ghc: "8.2.2" }
- { os: ubuntu-latest, ghc: "8.4.4" }
- { os: ubuntu-latest, ghc: "8.6.5" }
- { os: ubuntu-latest, ghc: "8.8.4" }
- { os: ubuntu-latest, ghc: "8.10.7" }
- { os: ubuntu-latest, ghc: "9.0.2" }
- { os: ubuntu-latest, ghc: "9.2.8" }
- { os: ubuntu-latest, ghc: "9.4.8" }
- { os: ubuntu-latest, ghc: "9.6.5" }
- { os: ubuntu-latest, ghc: "9.8.2" }
- { os: ubuntu-latest, ghc: "9.10.1" }
# - { os: windows-latest, ghc: "8.0.2" } # Linker errors
# - { os: windows-latest, ghc: "8.2.2" } # Linker errors
- { os: windows-latest, ghc: "8.4.4" }
- { os: windows-latest, ghc: "8.6.5" }
- { os: windows-latest, ghc: "8.8.4" }
- { os: windows-latest, ghc: "8.10.7" }
- { os: windows-latest, ghc: "9.0.2" }
- { os: windows-latest, ghc: "9.2.8" }
- { os: windows-latest, ghc: "9.4.8" }
- { os: windows-latest, ghc: "9.6.5" }
- { os: windows-latest, ghc: "9.8.2" }
- { os: windows-latest, ghc: "9.10.1" }
- { os: macOS-13, ghc: "8.0.2" }
- { os: macOS-13, ghc: "8.2.2" }
- { os: macOS-13, ghc: "8.4.4" }
- { os: macOS-13, ghc: "8.6.5" }
- { os: macOS-13, ghc: "8.8.4" }
- { os: macOS-13, ghc: "8.10.7" }
- { os: macOS-13, ghc: "9.0.2" }
- { os: macOS-latest, ghc: "9.2.8" }
- { os: macOS-latest, ghc: "9.4.8" }
- { os: macOS-latest, ghc: "9.6.5" }
- { os: macOS-latest, ghc: "9.8.2" }
- { os: macOS-latest, ghc: "9.10.1" }
env:
cache-version: v3 # bump up this version to invalidate currently stored cache
steps:
- uses: actions/checkout@v3
- uses: haskell-actions/setup@v2
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
- name: Cache Cabal Store
id: cache
uses: actions/cache@v3
with:
path: |
${{ steps.setup-haskell-cabal.outputs.cabal-store }}
dist-newstyle
massiv/dist-newstyle
massiv-test/dist-newstyle
key: cabal-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
restore-keys: |
cabal-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
- name: Build
run: |
set -ex
cabal configure --haddock-all --enable-tests --project-file cabal-ci.project
cabal build all --write-ghc-environment-files=always --project-file cabal-ci.project
- name: Test
run: |
set -ex
cabal test all --project-file cabal-ci.project
# - name: Check Cabal Files
# run: |
# set -ex
# cd massiv
# cabal -vnormal check
# cd ..
massiv-bench:
name: Benchmarks
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
resolver: [lts-22]
include:
- resolver: lts-22
ghc: 9.6.5
env:
STACK_ARGS: '--resolver ${{ matrix.resolver }} --system-ghc'
cache-version: v2 # bump up this version to invalidate currently stored cache
steps:
- uses: actions/checkout@v3
- uses: haskell-actions/setup@v2
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
enable-stack: true
stack-version: 'latest'
- name: Cache
id: cache
uses: actions/cache@v3
with:
path: |
${{ steps.setup-haskell-cabal.outputs.stack-root }}
massiv/.stack-work-bench
massiv-bench/.stack-work-bench
key: bench-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
restore-keys: |
bench-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
- name: Reset modtime
run: |
set -ex
curl -sSL https://raw.githubusercontent.com/lehins/utils/master/haskell/git-modtime/git-modtime.hs -o git-modtime.hs
runhaskell -- git-modtime.hs -f massiv-bench/.stack-work-bench/tree-contents.txt
- name: Build
run: |
set -ex
cd massiv-bench
stack $STACK_ARGS build --bench --no-run-benchmarks
massiv-examples:
name: Examples
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
ghc: [9.6.5]
env:
STACK_ARGS: '--system-ghc'
steps:
- uses: actions/checkout@v3
- uses: haskell-actions/setup@v2
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
enable-stack: true
stack-version: 'latest'
- name: Cache
uses: actions/cache@v3
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
${{ steps.setup-haskell-cabal.outputs.stack-root }}
"massiv/.stack-work-examples"
"massiv-examples/.stack-work-examples"
"massiv-examples/*/.stack-work-examples"
key: bench-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
restore-keys: |
bench-${{ runner.os }}-${{ matrix.ghc }}-${{ env.cache-version }}
- name: Build and Test
run: |
sudo apt-get update
sudo apt-get install freeglut3-dev
cd massiv-examples
stack test $STACK_ARGS --bench --no-run-benchmarks --haddock --no-haddock-deps