From e9456a0e3061d02c4d3c5a5137105f3dc3635724 Mon Sep 17 00:00:00 2001 From: Bryan Richter Date: Mon, 13 Apr 2026 09:36:45 +0300 Subject: [PATCH] Run stack-test regularly to keep cache warm --- .github/workflows/build.yml | 20 +------------------- .github/workflows/cache-warmup.yaml | 9 +++++++++ .github/workflows/stack-test.yml | 25 +++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/cache-warmup.yaml create mode 100644 .github/workflows/stack-test.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd14fd6..84332c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,25 +9,7 @@ concurrency: cancel-in-progress: true jobs: stack-test: - name: stack test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: haskell/ghcup-setup@v1 - id: ghcup - with: - stack-hook: true - - uses: actions/cache@v4 - with: - path: | - ${{ steps.ghcup.outputs.basedir }} - ~/.stack - key: stack-${{ runner.os }}-${{ hashFiles('stack.yaml') }} - restore-keys: | - stack-${{ runner.os }}- - ${{ runner.os }}- - - run: ghcup install stack - - run: stack test + uses: ./.github/workflows/stack-test.yml flake-no-push: name: flake check (no push) diff --git a/.github/workflows/cache-warmup.yaml b/.github/workflows/cache-warmup.yaml new file mode 100644 index 0000000..625cba4 --- /dev/null +++ b/.github/workflows/cache-warmup.yaml @@ -0,0 +1,9 @@ +name: biweekly cache warmup +on: + schedule: + # Every Monday and Thursday at 11:23 UTC + - cron: '23 11 * * mon,thu' + workflow_dispatch: +jobs: + stack-test: + uses: ./.github/workflows/stack-test.yml diff --git a/.github/workflows/stack-test.yml b/.github/workflows/stack-test.yml new file mode 100644 index 0000000..bab0438 --- /dev/null +++ b/.github/workflows/stack-test.yml @@ -0,0 +1,25 @@ +# Reusable workflow used by the others. Not called directly usually. +name: stack test +on: + workflow_call: +jobs: + stack-test: + name: stack test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: haskell/ghcup-setup@v1 + id: ghcup + with: + stack-hook: true + - uses: actions/cache@v4 + with: + path: | + ${{ steps.ghcup.outputs.basedir }} + ~/.stack + key: stack-${{ runner.os }}-${{ hashFiles('stack.yaml') }} + restore-keys: | + stack-${{ runner.os }}- + ${{ runner.os }}- + - run: ghcup install stack + - run: stack test