name: Haskell CI on: push: branches: - master pull_request: jobs: build: name: GHC ${{ matrix.name }} env: # packcheck environment variables LC_ALL: C.UTF-8 BUILD: ${{ matrix.build }} GHCVER: ${{ matrix.ghc_version }} DISABLE_DOCS: ${{ matrix.disable_docs }} DISABLE_TEST: ${{ matrix.disable_test }} DISABLE_DIST_CHECKS: ${{ matrix.disable_dist_checks }} SDIST_OPTIONS: ${{ matrix.sdist_options }} DISABLE_SDIST_BUILD: ${{ matrix.disable_sdist_build }} # Cabal options CABAL_REINIT_CONFIG: y CABAL_BUILD_OPTIONS: ${{ matrix.cabal_build_options }} --flag limit-build-mem CABAL_BUILD_TARGETS: ${{ matrix.cabal_build_targets }} CABAL_PROJECT: ${{ matrix.cabal_project }} CABAL_CHECK_RELAX: y # Stack options STACK_UPGRADE: "y" RESOLVER: ${{ matrix.resolver }} STACK_YAML: ${{ matrix.stack_yaml }} STACK_BUILD_OPTIONS: ${{ matrix.stack_build_options }} # packcheck location and revision PACKCHECK_LOCAL_PATH: "./packcheck.sh" PACKCHECK_GITHUB_URL: "https://raw.githubusercontent.com/composewell/packcheck" PACKCHECK_GITHUB_COMMIT: "35efa99b2082d13722b8a0183ac6455df98e91b9" # Pull token from "secrets" setting of the github repo COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }} COVERAGE: ${{ matrix.coverage }} runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: name: - 9.0.1 - 8.10.4+stack+nightly-2021-06-10 - 8.10.4+macOS - 8.10.4+linux+coverage+cabal - 8.8.4 - 8.8.4+inspection+fusion-plugin+Werror - 8.6.5+fusion-plugin - 8.6.5+streamk - 8.4.4+debug - doctests cabal_version: ["3.4"] include: - name: 9.0.1 ghc_version: 9.0.1 build: cabal-v2 cabal_build_options: "--allow-newer=hsc2hs" disable_sdist_build: "y" runner: ubuntu-latest - name: 8.10.4+stack+nightly-2021-06-10 build: stack resolver: nightly-2021-06-10 stack_yaml: stack.yaml sdist_options: "--ignore-check" stack_build_options: "--flag streamly-benchmarks:-opt" runner: ubuntu-latest - name: 8.10.4+macOS ghc_version: 8.10.4 build: cabal-v2 disable_sdist_build: "y" runner: macos-latest - name: 8.10.4+linux+coverage+cabal ghc_version: 8.10.4 coverage: "y" runner: ubuntu-latest - name: 8.8.4+inspection+fusion-plugin+Werror ghc_version: 8.8.4 build: cabal-v2 cabal_project: cabal.project.ci cabal_build_options: "--flag fusion-plugin --flag inspection" runner: ubuntu-latest - name: 8.8.4 ghc_version: 8.8.4 build: cabal cabal_project: cabal.project cabal_build_options: "--flag -opt" runner: ubuntu-latest - name: 8.6.5+streamk ghc_version: 8.6.5 build: cabal-v2 cabal_project: cabal.project cabal_build_options: "--flag streamk --flag -opt" runner: ubuntu-latest - name: 8.6.5+fusion-plugin ghc_version: 8.6.5 build: cabal-v2 cabal_project: cabal.project cabal_build_options: "--flag fusion-plugin" # haddock generation does not work with 8.6.5+fusion-plugin disable_docs: "y" runner: ubuntu-latest - name: 8.4.4+debug ghc_version: 8.4.4 build: cabal-v2 cabal_project: cabal.project cabal_build_options: "--flag debug --flag -opt" runner: ubuntu-latest - name: doctests ghc_version: 8.8.3 build: cabal-v2 cabal_build_options: "--flag doctests" cabal_build_targets: doctests disable_sdist_build: "y" disable_dist_checks: "y" runner: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: haskell/actions/setup@v1 with: ghc-version: ${{ matrix.ghc_version }} cabal-version: ${{ matrix.cabal_version }} - uses: actions/cache@v1 name: Cache ~/.cabal with: path: ~/.cabal # Bump the key version to clear the cache key: ${{ runner.os }}-${{ matrix.ghc_version }}-cabal-v1 - name: Download packcheck run: | # Get packcheck if needed CURL=$(which curl) PACKCHECK_URL=${PACKCHECK_GITHUB_URL}/${PACKCHECK_GITHUB_COMMIT}/packcheck.sh if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi; chmod +x $PACKCHECK_LOCAL_PATH - name: Run tests run: | if test -z "$COVERAGE" then export TOOLS_DIR=/opt # /usr/local/opt/curl/bin for macOS export PATH=$HOME/.local/bin:$HOME/.ghcup/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/opt/curl/bin bash -c "$PACKCHECK_LOCAL_PATH $BUILD" else # Run tests with coverage cabal update cabal user-config update -a "jobs: 1" # Build hpc-coveralls if needed sudo apt-get install -y libcurl4-gnutls-dev export PATH=$HOME/.cabal/bin:$PATH which hpc-coveralls 2>/dev/null || cabal install --project-file cabal.project.hpc-coveralls hpc-coveralls # Run tests and upload results to coveralls.io bin/test.sh --coverage --raw hpc-coveralls --repo-token="$COVERALLS_TOKEN" --coverage-mode=StrictlyFullLines fi