diff --git a/.github/scripts/cabal-cache.sh b/.github/scripts/cabal-cache.sh new file mode 100644 index 00000000..94b30011 --- /dev/null +++ b/.github/scripts/cabal-cache.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +case "$(uname -s)" in + MSYS_*|MINGW*) + ext=".exe" + ;; + *) + ext="" + ;; +esac + +if [ "${CABAL_CACHE_DISABLE}" = "yes" ] ; then + echo "cabal-cache disabled (CABAL_CACHE_DISABLE set)" +elif [ "${CABAL_CACHE_NONFATAL}" = "yes" ] ; then + time "cabal-cache${ext}" "$@" || echo "cabal-cache failed (CABAL_CACHE_NONFATAL set)" +else + time "cabal-cache${ext}" "$@" + exit $? +fi + diff --git a/.github/scripts/common.sh b/.github/scripts/common.sh index 1801045a..262c09b2 100644 --- a/.github/scripts/common.sh +++ b/.github/scripts/common.sh @@ -15,7 +15,7 @@ sync_from() { cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store" fi - cabal-cache sync-from-archive \ + cabal-cache.sh sync-from-archive \ --host-name-override=${S3_HOST} \ --host-port-override=443 \ --host-ssl-override=True \ @@ -29,7 +29,7 @@ sync_to() { cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store" fi - cabal-cache sync-to-archive \ + cabal-cache.sh sync-to-archive \ --host-name-override=${S3_HOST} \ --host-port-override=443 \ --host-ssl-override=True \ @@ -115,6 +115,10 @@ download_cabal_cache() { mv "cabal-cache${exe}" "${dest}${exe}" chmod +x "${dest}${exe}" fi + + # install shell wrapper + cp "${CI_PROJECT_DIR}"/.github/scripts/cabal-cache.sh "$HOME"/.local/bin/ + chmod +x "$HOME"/.local/bin/cabal-cache.sh ) } diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f1c736c5..096e5720 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,6 +12,10 @@ on: schedule: - cron: '0 2 * * *' +env: + CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }} + CABAL_CACHE_NONFATAL: yes + jobs: build-linux: name: Build linux binary