version: 0.5.0.0 #101
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: ci | |
# Trigger the workflow on push or pull request, but only for the master branch | |
on: | |
pull_request: | |
push: | |
jobs: | |
# cabal: | |
# name: ${{ matrix.os }} / ghc ${{ matrix.ghc }} | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# os: [ubuntu-latest] | |
# ghc: | |
# - "8.6.5" | |
# - "8.8.4" | |
# - "8.10.7" | |
# - "9.0.2" | |
# - "9.2.4" | |
# steps: | |
# - name: Install libraries | |
# run: | | |
# sudo apt update | |
# sudo apt install -y libzmq5-dev libpcre3-dev | |
# - uses: actions/checkout@v2 | |
# if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' | |
# - uses: haskell/actions/setup@v1 | |
# id: setup-haskell-cabal | |
# name: Setup Haskell | |
# with: | |
# ghc-version: ${{ matrix.ghc }} | |
# cabal-version: "latest" | |
# - name: Freeze | |
# run: | | |
# cabal freeze | |
# - uses: actions/cache@v1 | |
# name: Cache ~/.cabal/store | |
# with: | |
# path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} | |
# key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }} | |
# - name: Build | |
# run: | | |
# cabal configure --enable-tests --enable-benchmarks --test-show-details=direct | |
# cabal build all | |
# - name: Test | |
# run: | | |
# cabal test all | |
nix: | |
name: nix (${{ matrix.output }}) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Test one non-static one | |
- output: "ghc90" | |
- output: "ghc810-static" | |
- output: "ghc90-static" | |
- output: "ghc92-static" | |
- output: "ghc94-static" | |
- output: "ghc96-static" | |
- output: "ghc98-static" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:release-23.05 | |
- run: | | |
nix build .#${{ matrix.output }} | |
- name: Static outputs have an empty closure | |
run: | | |
if [[ "${{ matrix.output }}" == *"static"* ]]; then | |
nix path-info ./result/bin/haskell-notebook-language-server -r | |
# Only allow up to 3 Nix store references. | |
# One should be the static binary itself. | |
# For some reason, our builds with GHC <= 9.4 have a couple more dependencies, which are | |
# the musl library and the ncurses library. We should track down why this is and stop | |
# it from happening. | |
# For now, we do this to make sure it doesn't regress further. | |
# c.f. the print-static-closures alias | |
NUM_REFERENCES=$(nix path-info ./result/bin/haskell-notebook-language-server -r | wc -l) | |
[[ "$NUM_REFERENCES" -le 3 ]] || { | |
echo "Found $NUM_REFERENCES Nix store references; only allowed up to 3" | |
exit 1 | |
} | |
fi | |
stack: | |
name: stack / ghc ${{ matrix.ghc }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- ghc: "8.10" | |
yaml: "stack/stack-8.10.7.yaml" | |
- ghc: "9.0" | |
yaml: "stack/stack-9.0.2.yaml" | |
- ghc: "9.2" | |
yaml: "stack/stack-9.2.8.yaml" | |
- ghc: "9.4" | |
yaml: "stack/stack-9.4.8.yaml" | |
- ghc: "9.6" | |
yaml: "stack/stack-9.6.4.yaml" | |
- ghc: "9.8" | |
yaml: "stack/stack-9.8.2.yaml" | |
steps: | |
- name: Install libraries | |
run: | | |
sudo apt update | |
sudo apt install -y libzmq5-dev libpcre3-dev | |
- uses: actions/checkout@v3 | |
- uses: haskell-actions/setup@v2 | |
name: Setup Haskell Stack | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
stack-version: "latest" | |
enable-stack: true | |
- uses: actions/cache@v3 | |
name: Cache ~/.stack | |
with: | |
path: ~/.stack | |
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.yaml }} | |
- name: Build | |
run: | | |
stack build --stack-yaml ${{matrix.yaml}} --system-ghc --test --bench --no-run-tests --no-run-benchmarks | |
- name: Test | |
run: | | |
stack test --stack-yaml ${{matrix.yaml}} --system-ghc --test-arguments --print |