From f115fe559221b2d474ecc37436ae51669930d2ae Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 21 Nov 2024 13:56:30 +0800 Subject: [PATCH] [ ci ] Make Agda binary distributable hence cachable --- .github/workflows/test.yml | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f51e0aee..976aaff9 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 @@ -78,9 +82,6 @@ jobs: 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 @@ -94,6 +95,30 @@ jobs: 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 if: always() && env.AGDA_INSTALLED != '0' && steps.stack-global.outputs.cache-hit != 'true'