name: CI tests on: push: branches: - '*' - '!rc/*' - '!djot' 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-option=-Werror' - ghc: '9.0' cabal: 'latest' cabalopts: '--ghc-option=-Werror' - ghc: '9.2' cabal: 'latest' cabalopts: '--ghc-option=-Werror' - ghc: '9.4' cabal: 'latest' cabalopts: '--ghc-option=-Werror' - ghc: '9.6' cabal: 'latest' cabalopts: '--ghc-option=-Werror' - ghc: '9.8' cabal: 'latest' cabalopts: '--ghc-option=-Werror' - ghc: '9.10' cabal: 'latest' cabalopts: '--ghc-option=-Werror --ghc-option=-Wno-unused-imports' - ghc: '9.12' cabal: 'latest' cabalopts: '--allow-newer --ghc-option=-Werror --ghc-option=-Wno-unused-imports --ghc-option=-Wno-deriving-typeable' steps: - uses: actions/checkout@v5 # 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@v4 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@v4 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 build ${{ matrix.versions.cabalopts }} --enable-tests --disable-optimization all cabal test ${{ matrix.versions.cabalopts }} --disable-optimization all linux-stack: runs-on: ubuntu-latest strategy: fail-fast: true steps: - uses: actions/checkout@v5 # 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@v4 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@v4 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@v5 # - uses: cachix/install-nix-action@v30 # with: # nix_path: nixpkgs=channel:nixos-24.05 # - name: Cache cabal global package db # id: cabal-global # uses: actions/cache@v4 # with: # path: | # ~/.local/state/cabal # key: ${{ runner.os }}-nix-cabal-global-${{ secrets.CACHE_VERSION }} # - name: Cache cabal work # id: cabal-local # uses: actions/cache@v4 # 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-2022 steps: - uses: actions/checkout@v5 - name: Install ghc run: | ghcup install ghc --set 9.4.4 ghcup install cabal --set 3.10 # declare/restore cached things - name: Cache cabal global package db id: cabal-global uses: actions/cache@v4 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@v4 with: path: | dist-newstyle key: ${{ runner.os }}-stack-work-${{ hashFiles('cabal.project') }}-${{ secrets.CACHE_VERSION }} - name: Build and test 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-12 # strategy: # fail-fast: true # matrix: # versions: # - ghc: '8.8.4' # cabal: '3.2' # steps: # - uses: actions/checkout@v5 # - 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@v4 # 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@v4 # 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