diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f51e0aee..858d859b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,8 @@ jobs: strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - agda: ["Agda-2.6.4", "Agda-2.7.0"] + agda: ["Agda-2.7.0"] + # agda: ["Agda-2.6.4", "Agda-2.7.0"] fail-fast: false # Steps represent a sequence of tasks that will be executed as part of the job @@ -41,9 +42,11 @@ jobs: cabal-update: false enable-stack: true + # $DIST is where the binary & its dependencies is placed - name: 🛠️ Setting variables run: | echo "STACK_LOCAL_BIN=$(stack path --local-bin)" >> "$GITHUB_ENV" + echo "DIST=${{ matrix.agda }}-${{ matrix.os }}" >> "$GITHUB_ENV" - name: 🔍 Reviewing variables run: | @@ -53,7 +56,8 @@ jobs: echo "stack-path = ${{ steps.haskell-setup.outputs.stack-path }}" echo "stack-exe = ${{ steps.haskell-setup.outputs.stack-exe }}" echo "stack-root = ${{ steps.haskell-setup.outputs.stack-root }}" - echo "STACK_LOCAL_BIN = $STACK_LOCAL_BIN" + echo "STACK_LOCAL_BIN = $STACK_LOCAL_BIN" + echo "DIST = $DIST" # cached stuff to be restored: - name: 💾 Restore cached stack global package db @@ -74,13 +78,19 @@ jobs: restore-keys: | ${{ runner.os }}-stack-binaries + - name: 💾 Restore Agda from ${{ env.DIST }} + id: agda-binaries + uses: actions/cache/restore@v4 + with: + path: ${{ env.DIST }} + key: ${{ env.DIST }} + restore-keys: | + ${{ env.DIST }} + - name: ⏬ Setup Node.js environment uses: actions/setup-node@v4 with: node-version: 20.x - - - name: 🛠️ Add Stack install directory to PATH - run: echo $STACK_LOCAL_BIN >> $GITHUB_PATH - name: 🔍 Check if Agda has been installed id: check-agda @@ -91,8 +101,30 @@ jobs: if: ${{ steps.check-agda.outcome == 'failure'}} run: | stack install --resolver=lts-20.26 ${{ matrix.agda }} - which agda - agda --version + + - name: 📦 Move artefacts to ${{ env.DIST }} + continue-on-error: true + run: | + dist=${{ env.DIST }} + mkdir -p "${dist}" + + if [[ ${{ runner.os }} == "Windows" ]]; then + cp ${{ env.STACK_LOCAL_BIN }}/agda "${dist}" + + else + cp ${{ env.STACK_LOCAL_BIN }}/agda "${dist}" + fi + + ls "${dist}" + strip "${dist}"/agda + file "${dist}"/agda + + - name: 🛠️ Add ${{ env.DIST }} to PATH + run: echo ${{ env.DIST }} >> $GITHUB_PATH + + - name: 🔍 Check if Agda has been installed again + continue-on-error: true + run: which agda # things to be cached - name: 💾 Cache stack global package db @@ -108,6 +140,13 @@ jobs: with: path: ${{ env.STACK_LOCAL_BIN }} key: ${{ steps.stack-binaries.outputs.cache-primary-key }} + + - name: 💾 Cache Agda in ${{ env.DIST }} + if: always() && env.AGDA_INSTALLED != '0' && steps. agda-binaries.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ${{ env.DIST }} + key: ${{ steps.agda-binaries.outputs.cache-primary-key }} - name: ⏬ Install NPM Dependencies run: npm install @@ -115,10 +154,19 @@ jobs: - name: 🔨 Build stuff run: npm run build - - name: 🚗 Run tests (Linux) - if: runner.os == 'Linux' - run: xvfb-run -a npm test + # - name: 🚗 Run tests (Linux) + # if: runner.os == 'Linux' + # run: xvfb-run -a npm test + + # - name: 🚗 Run tests (Windows, MacOS) + # if: runner.os != 'Linux' + # run: npm test + + - name: 🚗 Run tests + run: | + if [[ ${{ runner.os }} == "Linux" ]]; then + xvfb-run -a npm test + else + npm test + fi - - name: 🚗 Run tests (Windows, MacOS) - if: runner.os != 'Linux' - run: npm test