name: "Hackage, Cabal, Linux" on: pull_request: push: branches: - master schedule: - cron: "45 02 * * *" env: cabalConfig: --enable-tests --disable-optimization --enable-deterministic jobs: build10: name: "GHC" runs-on: ubuntu-latest strategy: matrix: packageRoot: [ hnix-store-remote ] ghc: [ "9.0", "8.6" ] defaults: run: working-directory: "./${{ matrix.packageRoot }}" steps: - name: "Git checkout" uses: actions/checkout@v2 with: submodules: recursive - name: "Haskell env setup" id: HaskEnvSetup uses: haskell/actions/setup@v1 with: ghc-version: ${{ matrix.ghc }} - name: "Repository update" run: cabal v2-update - name: "Install additional system packages" run: sudo apt install libsodium-dev # Still required for Remote - name: "Install Nix" uses: cachix/install-nix-action@v16 if: matrix.packageRoot == 'hnix-store-remote' # Remote: Enabling testsuite, because it requires networking in the default Nix environment. - name: "Project-specific Cabal configuration" if: matrix.packageRoot == 'hnix-store-remote' run: echo "cabalConfig=$cabalConfig -f io-testsuite" >> $GITHUB_ENV # NOTE: Freeze is for the caching - name: "Configuration freeze" run: cabal v2-freeze $cabalConfig - name: "Hack: Copy freeze file to the root dir" run: cp -a cabal.project.freeze ../cabal.project.freeze - name: "Configuring GitHub cache" uses: actions/cache@v2 with: path: | ${{ steps.HaskEnvSetup.outputs.cabal-store }} dist-newstyle key: ${{ matrix.packageRoot }}-${{ runner.os }}-Cabal-${{ matrix.ghc }}-${{ hashFiles( 'cabal.project.freeze' ) }} restore-keys: ${{ matrix.packageRoot }}-${{ runner.os }}-Cabal-${{ matrix.ghc }}- - name: "Build" run: cabal v2-build $cabalConfig - name: "Tests" run: cabal v2-test $cabalConfig - name: "Source distribution file" if: ${{ matrix.ghc == '9.0' }} run: cabal v2-sdist