name: CI tests on: push: branches: - '*' - '!rc/*' - '!typst-writer' paths-ignore: - 'doc/*.md' - 'MANUAL.txt' - '*.md' - '.cirrus.yml' - 'RELEASE_CHECKLIST' - 'BUGS' - 'README.template' - 'hie.yaml' - '*.nix' - 'tools/**' - 'linux/**' - 'macos/**' - 'windows/**' - 'man/**' pull_request: paths-ignore: - 'doc/*.md' - 'MANUAL.txt' - '*.md' - 'RELEASE_CHECKLIST' - 'BUGS' - 'README.template' - 'hie.yaml' - '*.nix' - 'tools/**' - 'linux/**' - 'macos/**' - 'windows/**' - 'man/**' permissions: contents: read jobs: linux: runs-on: ubuntu-latest strategy: fail-fast: true matrix: versions: - ghc: '8.10' cabal: 'latest' cabalopts: '' - ghc: '9.0' cabal: 'latest' cabalopts: '' - ghc: '9.2' cabal: 'latest' cabalopts: '' - ghc: '9.4' cabal: 'latest' cabalopts: '' - ghc: '9.6' cabal: 'latest' cabalopts: '' steps: - uses: actions/checkout@v3 # needed by memory - name: Install numa run: sudo apt-get install libnuma-dev - name: Workaround runner image issue # https://github.com/actions/runner-images/issues/7061 run: sudo chown -R $USER /usr/local/.ghcup - name: Install cabal/ghc run: | ghcup install ghc --set ${{ matrix.versions.ghc }} ghcup install cabal --set ${{ matrix.versions.cabal }} # declare/restore cached things - name: Cache cabal global package db id: cabal-global uses: actions/cache@v3 with: path: | ~/.local/state/cabal key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-global-${{ secrets.CACHE_VERSION }} - name: Cache cabal work id: cabal-local uses: actions/cache@v3 with: path: | dist-newstyle key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local-${{ secrets.CACHE_VERSION }} - name: Update cabal run: | cabal update - name: Build and test run: | cabal test ${{ matrix.versions.cabalopts }} --enable-tests --disable-optimization --ghc-options=-Werror all linux-stack: runs-on: ubuntu-latest strategy: fail-fast: true steps: - uses: actions/checkout@v3 # needed by memory - name: Install numa run: sudo apt-get install libnuma-dev # declare/restore cached things - name: Cache stack global package db id: stack-global uses: actions/cache@v3 with: path: | ~/.stack key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-stack-global-${{ secrets.CACHE_VERSION }} - name: Cache stack work id: stack-local uses: actions/cache@v3 with: path: | .stack-work key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-stack-local-${{ secrets.CACHE_VERSION }} - name: Build and test run: | stack test --fast linux-nix-cabal: runs-on: ubuntu-latest strategy: fail-fast: true steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v22 with: nix_path: nixpkgs=channel:nixos-unstable - name: Cache cabal global package db id: cabal-global uses: actions/cache@v3 with: path: | ~/.local/state/cabal key: ${{ runner.os }}-nix-cabal-global-${{ secrets.CACHE_VERSION }} - name: Cache cabal work id: cabal-local uses: actions/cache@v3 with: path: | dist-newstyle key: ${{ runner.os }}-nix-cabal-local-${{ secrets.CACHE_VERSION }} - run: | nix-shell --run "cabal update && cabal test --enable-tests --disable-optimization --ghc-options=-Werror all" windows: runs-on: windows-2019 steps: - uses: actions/checkout@v3 - name: Install ghc run: | ghcup install ghc --set 9.4.4 # declare/restore cached things - name: Cache cabal global package db id: cabal-global uses: actions/cache@v3 with: path: | C:\cabal\store key: ${{ runner.os }}-appdata-cabal-${{ hashFiles('cabal.project') }}-${{ secrets.CACHE_VERSION }} - name: Cache cabal work id: cabal-local uses: actions/cache@v3 with: path: | dist-newstyle key: ${{ runner.os }}-stack-work-${{ hashFiles('cabal.project') }}-${{ secrets.CACHE_VERSION }} - name: Install dependencies run: | cabal update cabal test ${{ matrix.versions.cabalopts }} --enable-tests --disable-optimization --ghc-options=-Werror all # We no longer run the macos tests, to make CI faster. # macos: # runs-on: macos-11 # strategy: # fail-fast: true # matrix: # versions: # - ghc: '8.8.4' # cabal: '3.2' # steps: # - uses: actions/checkout@v3 # - name: Install cabal/ghc # run: | # ghcup install ghc --set ${{ matrix.versions.ghc }} # ghcup install cabal ${{ matrix.versions.cabal }} # # declare/restore cached things # - name: Cache cabal global package db # id: cabal-global # uses: actions/cache@v3 # with: # path: | # ~/.cabal # key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-global-${{ secrets.CACHE_VERSION }} # - name: Cache cabal work # id: cabal-local # uses: actions/cache@v3 # with: # path: | # dist-newstyle # key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local-${{ secrets.CACHE_VERSION }} # - name: Install dependencies # run: | # cabal v2-update # cabal v2-build --dependencies-only --enable-tests --disable-optimization # - name: Build and test # run: | # cabal v2-build --enable-tests --disable-optimization 2>&1 | tee build.log # # fail if warnings in local build # ! grep -q ": *[Ww]arning:" build.log || exit 1 # cabal v2-test --disable-optimization --test-option=--hide-successes --test-option=--ansi-tricks=false