diff options
| author | John MacFarlane <[email protected]> | 2022-09-27 09:32:51 -0700 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-09-27 09:34:57 -0700 |
| commit | e6db2780613ccc102bd14f455463455c8fc3767d (patch) | |
| tree | 381fd7b5ecf67f4e1aa94fbe052fd2380f866fe1 /.github/workflows/benchmark.yml | |
| parent | e92f1a5ecf374473447fdac7e5961845346df4ad (diff) | |
Split benchmarks out of CI into separate action.
The benchmark action is only run on manual dispatch.
Rationale: this action dramatically slows down CI.
It is nice to run benchmarks, but we don't need them all the time.
We add (non-optimized) testing of benchmark compilation to one of
the CI builds.
Diffstat (limited to '.github/workflows/benchmark.yml')
| -rw-r--r-- | .github/workflows/benchmark.yml | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000..8b01d406f --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,58 @@ +name: benchmarks + +on: workflow_dispatch + +permissions: + contents: read + +jobs: + benchmark: + + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + versions: + - ghc: '8.10.7' + cabal: '3.2' + - ghc: '9.2.2' + cabal: '3.6' + 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: benchmark-${{ 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: benchmark-${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local-${{ secrets.CACHE_VERSION }} + + - name: Install dependencies + run: | + v2=$([ "${{ matrix.versions.cabal }}" = "2.2" ] && printf 'new' || printf 'v2') + cabal $v2-update + cabal $v2-build --dependencies-only --enable-optimization=1 --enable-benchmarks --disable-tests + + - name: Build and test + run: | + v2=$([ "${{ matrix.versions.cabal }}" = "2.2" ] && printf 'new' || printf 'v2') + cabal $v2-build --enable-optimization=1 --enable-benchmarks --disable-tests 2>&1 | tee build.log + # fail if warnings in local build + ! grep -q ": *[Ww]arning:" build.log || exit 1 + cabal $v2-bench --enable-optimization=1 --benchmark-options='--timeout=6 +RTS -T -RTS' |
