diff --git a/.github/workflows/stack.yml b/.github/workflows/stack.yml index 6eaf573a8..b12c96047 100644 --- a/.github/workflows/stack.yml +++ b/.github/workflows/stack.yml @@ -40,19 +40,34 @@ jobs: - name: Setup Stack uses: haskell-actions/setup@v2 + id: setup with: ghc-version: ${{ matrix.vers.ghc }} cabal-version: ${{ matrix.cabal }} enable-stack: true - stack-version: "latest" + stack-version: '2.15.7' - - name: Cache ~/.stack and .stack-work - uses: actions/cache@v3 + - name: Configure stack + run: | + stack config set system-ghc --global true + stack config set install-ghc --global false + + - name: List dependencies + run: stack ls dependencies json | jq > stack-deps.json + + - name: Restore cached dependency of Pantry (Stackage package index) + uses: actions/cache/restore@v4 + id: pantry + env: + key: ghc-${{ steps.setup.outputs.ghc-version }}-stack-${{ steps.setup.outputs.stack-version }} with: - path: | - ~/.stack - .stack-work - key: ${{ runner.os }}-${{ matrix.ghc }}-stack-${{ hashFiles('**/*.cabal', './stack.yaml', './stack.yaml.lock') }} + path: ${{ steps.setup.outputs.stack-root }}/pantry + key: ${{ env.key }}-plan-${{ hashFiles('stack-deps.json') }} + restore-keys: ${{ env.key }}- + + - name: Recompute Stackage package index (~/.stack/pantry) + if: steps.pantry.outputs.cache-hit != 'true' + run: stack update - name: Stack resolver check if: ${{ matrix.vers.ghc == matrix.ghc-default }} @@ -63,7 +78,14 @@ jobs: run: stack test --no-run-tests --dry-run --lock-file=error-on-write - name: Build - run: stack test --no-run-tests $STACK_FLAGS --resolver ${{ matrix.vers.stackage }} + run: stack test --no-run-tests $STACK_FLAGS --resolver ${{ matrix.vers.stackage }} --lock-file=ignore - name: Test - run: stack test --test-arguments "--color=always" $STACK_FLAGS --resolver ${{ matrix.vers.stackage }} + run: stack test --test-arguments "--color=always" $STACK_FLAGS --resolver ${{ matrix.vers.stackage }} --lock-file=ignore + + - name: Save cached dependencies of Pantry + uses: actions/cache/save@v4 + if: steps.pantry.outputs.cache-hit != 'true' + with: + path: ${{ steps.setup.outputs.stack-root }}/pantry + key: ${{ steps.cache.outputs.cache-primary-key }}