From bb1bf8cbd5d0d385ab64e99a23d3968c4757bb9a Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 07:47:41 -0600 Subject: [PATCH 01/40] ci: add initial ci scripts Add test & preflight CI scripts to test that I'm doing this right lol --- .github/workflows/ci.yaml | 28 ++++++++++++++++++++++++++++ .github/workflows/preflight.yaml | 19 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/preflight.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..ec35e68 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,28 @@ +name: CI + +on: [push, pull_request] + +jobs: + setup: + name: Setup + runs-on: ubuntu-latest + steps: + - name: Set up Deno + uses: denoland/setup-deno@v2 + with: + cache: true + # This should warm up the Deno cache for subsequent jobs + - name: Install dependencies + run: deno install + test-cache: + name: Test caching + needs: [setup] + runs-on: ubuntu-latest + steps: + # Now the Deno cache should be warmed up, so this should be much faster + - name: Set up Deno + uses: denoland/setup-deno@v2 + with: + cache: true + - name: Install dependencies + run: deno install diff --git a/.github/workflows/preflight.yaml b/.github/workflows/preflight.yaml new file mode 100644 index 0000000..1fa8182 --- /dev/null +++ b/.github/workflows/preflight.yaml @@ -0,0 +1,19 @@ +name: Preflight + +on: + push: + branches: + # - main + # - dev + # This allows us to test our actions as soon as we push them + - actions/**/* + +jobs: + main: + name: Main + runs-on: ubuntu-latest + steps: + - name: Log event name + run: echo "This workflow was automatically triggered by a ${{ github.event_name }} event" + - name: Log ref data + run: echo "The ref that triggered this workflow is ${{ github.ref }}" \ No newline at end of file From 4bb8397f04769ed75a563e14e05cea49a8f02d35 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 07:51:14 -0600 Subject: [PATCH 02/40] ci: add repo checkout steps (duh) --- .github/workflows/ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ec35e68..aa6542f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,6 +11,7 @@ jobs: uses: denoland/setup-deno@v2 with: cache: true + - uses: actions/checkout@v5 # This should warm up the Deno cache for subsequent jobs - name: Install dependencies run: deno install @@ -24,5 +25,6 @@ jobs: uses: denoland/setup-deno@v2 with: cache: true + - uses: actions/checkout@v5 - name: Install dependencies run: deno install From 39b7c249dfc3c769e56d43cce4084eff9cdf791a Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 08:36:34 -0600 Subject: [PATCH 03/40] ci: add dependency caching, polish other steps --- .github/workflows/ci.yaml | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aa6542f..1294894 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,6 +2,12 @@ name: CI on: [push, pull_request] +env: + # Used to forcefully bust the cache + CACHE_VERSION: v1 + # Used to differentiate from other slices of the cache for other workflow runs + CACHE_SLICE_NAME: ci + jobs: setup: name: Setup @@ -11,8 +17,16 @@ jobs: uses: denoland/setup-deno@v2 with: cache: true - - uses: actions/checkout@v5 - # This should warm up the Deno cache for subsequent jobs + - name: Checkout repository + uses: actions/checkout@v5 + - name: Set up Deno dependencies cache + uses: actions/cache@v3 + with: + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + path: ~/.deno + key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - name: Install dependencies run: deno install test-cache: @@ -24,7 +38,18 @@ jobs: - name: Set up Deno uses: denoland/setup-deno@v2 with: + deno-version: 2.x cache: true - - uses: actions/checkout@v5 + - name: Checkout repository + uses: actions/checkout@v5 + - name: Set up or restore Deno dependencies cache + uses: actions/cache@v3 + with: + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + path: ~/.deno + key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} + # Now the Deno dependencies cache should be warmed up, so this should be much faster - name: Install dependencies run: deno install From 31a99838f2c3b8ccc1e410ec478c5d2880980e9b Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 08:37:37 -0600 Subject: [PATCH 04/40] ci: add fn-setup reusable workflow Add fn-setup to encapsulate all setup steps and DRY up the main ci workflow --- .github/workflows/fn-setup.yaml | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/fn-setup.yaml diff --git a/.github/workflows/fn-setup.yaml b/.github/workflows/fn-setup.yaml new file mode 100644 index 0000000..d7ff3d9 --- /dev/null +++ b/.github/workflows/fn-setup.yaml @@ -0,0 +1,39 @@ +name: Setup + +on: + workflow_call: + inputs: + cache-version: + description: A string to forcefully bust the cache + type: string + required: false + default: v1 + cache-slice-name: + description: A string to differentiate from other slices of the cache for other workflow runs + type: string + required: false + +jobs: + setup: + name: Setup + runs-on: ubuntu-latest + steps: + - name: Set up Deno + uses: denoland/setup-deno@v2 + with: + cache: true + + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up Deno dependencies cache + uses: actions/cache@v3 + with: + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + path: ~/.deno + key: ${{ runner.os }}-${{ inputs.cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-${{ inputs.cache-slice-name }}@${{ inputs.cache-version }} + + - name: Install dependencies + run: deno install From 84a3dcecd36e17eea77ddba2474f5643a5e3aeca Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 08:40:21 -0600 Subject: [PATCH 05/40] ci: debug deno directory --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1294894..5f2abef 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,6 +29,7 @@ jobs: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - name: Install dependencies run: deno install + - run: echo $DENO_DIR test-cache: name: Test caching needs: [setup] From 00aae3a10b668651467b2eea5c5eade8dc221081 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 08:55:16 -0600 Subject: [PATCH 06/40] ci: test out whether specifying DENO_DIR makes caching work properly --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5f2abef..5bf9ca8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,6 +7,7 @@ env: CACHE_VERSION: v1 # Used to differentiate from other slices of the cache for other workflow runs CACHE_SLICE_NAME: ci + DENO_DIR: ~/.deno jobs: setup: From 45994396fe21ad1411cbdd3157b314018e39d3f4 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 08:59:11 -0600 Subject: [PATCH 07/40] ci: add DENO_DIR env variable to Set up Deno action --- .github/workflows/ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5bf9ca8..91ebd4a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,7 +17,10 @@ jobs: - name: Set up Deno uses: denoland/setup-deno@v2 with: + deno-version: 2.x cache: true + env: + DENO_DIR: ${{ env.DENO_DIR }} - name: Checkout repository uses: actions/checkout@v5 - name: Set up Deno dependencies cache From 36f608dbb108eb1ca51c2baf5226b15a05c8efb6 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:00:40 -0600 Subject: [PATCH 08/40] ci: switch up debugging, remove DENO_DIR --- .github/workflows/ci.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 91ebd4a..9b0819a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,7 +7,6 @@ env: CACHE_VERSION: v1 # Used to differentiate from other slices of the cache for other workflow runs CACHE_SLICE_NAME: ci - DENO_DIR: ~/.deno jobs: setup: @@ -19,8 +18,6 @@ jobs: with: deno-version: 2.x cache: true - env: - DENO_DIR: ${{ env.DENO_DIR }} - name: Checkout repository uses: actions/checkout@v5 - name: Set up Deno dependencies cache @@ -33,7 +30,7 @@ jobs: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - name: Install dependencies run: deno install - - run: echo $DENO_DIR + - run: which deno test-cache: name: Test caching needs: [setup] From fa9d20368a53f06992412bab86f89869e66dbf30 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:13:14 -0600 Subject: [PATCH 09/40] ci: change debug command --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9b0819a..6c2e531 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,7 +30,7 @@ jobs: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - name: Install dependencies run: deno install - - run: which deno + - run: which deno | ls test-cache: name: Test caching needs: [setup] From 0c1e197fe34e57d22e17e96b2d0985b0ca01d63c Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:21:11 -0600 Subject: [PATCH 10/40] ci: try using cache dir from cache action docs --- .github/workflows/ci.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6c2e531..8f235eb 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,10 @@ jobs: uses: actions/cache@v3 with: # Don't add more paths below, since they'll be invalidated whenever Deno deps change - path: ~/.deno + # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux + path: | + ~/.deno + ~/.cache/deno key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} restore-keys: | ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} @@ -48,7 +51,10 @@ jobs: uses: actions/cache@v3 with: # Don't add more paths below, since they'll be invalidated whenever Deno deps change - path: ~/.deno + # https://github.com/actions/cache/blob/main/examples.md#linux + path: | + ~/.deno + ~/.cache/deno key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} restore-keys: | ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} From 28d3fcd014d1b5ad68ca1f5682092d0f615cb40e Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:45:16 -0600 Subject: [PATCH 11/40] ci: update setup fn workflow with fixes from ci workflow --- .github/workflows/fn-setup.yaml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/fn-setup.yaml b/.github/workflows/fn-setup.yaml index d7ff3d9..450f383 100644 --- a/.github/workflows/fn-setup.yaml +++ b/.github/workflows/fn-setup.yaml @@ -4,15 +4,25 @@ on: workflow_call: inputs: cache-version: - description: A string to forcefully bust the cache + description: A string to forcefully bust the cache when changed type: string required: false default: v1 - cache-slice-name: - description: A string to differentiate from other slices of the cache for other workflow runs + deno-deps-cache-slice-name: + description: + A string to differentiate the Deno dependencies slice from other slices of the cache. \ + This is needed only if there are other slices that shouldn't be confused with this slice. type: string required: false +env: + DENO_CACHE_SLICE_NAME: deno + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux + DENO_DEPS_CACHE_PATH: | + ~/.deno + ~/.cache/deno + jobs: setup: name: Setup @@ -21,7 +31,9 @@ jobs: - name: Set up Deno uses: denoland/setup-deno@v2 with: + deno-version: 2.x cache: true + cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} - name: Checkout repository uses: actions/checkout@v5 @@ -29,11 +41,10 @@ jobs: - name: Set up Deno dependencies cache uses: actions/cache@v3 with: - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - path: ~/.deno - key: ${{ runner.os }}-${{ inputs.cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} + path: ${{ env.DENO_DEPS_CACHE_PATH }} + key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} restore-keys: | - ${{ runner.os }}-${{ inputs.cache-slice-name }}@${{ inputs.cache-version }} + ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} - name: Install dependencies run: deno install From 2b4d0c10071c2109194a8f904a7a614e7116c4f5 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:45:48 -0600 Subject: [PATCH 12/40] ci: refactor ci workflow to use setup fn workflow and run tests --- .github/workflows/ci.yaml | 54 +++++++++------------------------------ 1 file changed, 12 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8f235eb..b3decc8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,51 +13,21 @@ jobs: name: Setup runs-on: ubuntu-latest steps: - - name: Set up Deno - uses: denoland/setup-deno@v2 + - name: Set up Repository + uses: ./.github/workflows/fn-setup.yaml with: - deno-version: 2.x - cache: true - - name: Checkout repository - uses: actions/checkout@v5 - - name: Set up Deno dependencies cache - uses: actions/cache@v3 - with: - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux - path: | - ~/.deno - ~/.cache/deno - key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} - restore-keys: | - ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - - name: Install dependencies - run: deno install - - run: which deno | ls - test-cache: - name: Test caching + cache-version: ${{ env.CACHE_VERSION }} + deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + test: + name: Test needs: [setup] runs-on: ubuntu-latest steps: # Now the Deno cache should be warmed up, so this should be much faster - - name: Set up Deno - uses: denoland/setup-deno@v2 - with: - deno-version: 2.x - cache: true - - name: Checkout repository - uses: actions/checkout@v5 - - name: Set up or restore Deno dependencies cache - uses: actions/cache@v3 + - name: Set up Repository + uses: ./.github/workflows/fn-setup.yaml with: - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # https://github.com/actions/cache/blob/main/examples.md#linux - path: | - ~/.deno - ~/.cache/deno - key: ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }}-${{ hashFiles('deno.lock') }} - restore-keys: | - ${{ runner.os }}-${{ env.CACHE_SLICE_NAME }}@${{ env.CACHE_VERSION }} - # Now the Deno dependencies cache should be warmed up, so this should be much faster - - name: Install dependencies - run: deno install + cache-version: ${{ env.CACHE_VERSION }} + deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + - name: Test + run: deno test --allow-read From b9894378cbba9f807803d2b61984c0a548a76f59 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:47:28 -0600 Subject: [PATCH 13/40] ci: move checkout action to outside workflow fn --- .github/workflows/ci.yaml | 4 ++++ .github/workflows/fn-setup.yaml | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b3decc8..480b762 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,6 +13,8 @@ jobs: name: Setup runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v5 - name: Set up Repository uses: ./.github/workflows/fn-setup.yaml with: @@ -23,6 +25,8 @@ jobs: needs: [setup] runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v5 # Now the Deno cache should be warmed up, so this should be much faster - name: Set up Repository uses: ./.github/workflows/fn-setup.yaml diff --git a/.github/workflows/fn-setup.yaml b/.github/workflows/fn-setup.yaml index 450f383..76a2945 100644 --- a/.github/workflows/fn-setup.yaml +++ b/.github/workflows/fn-setup.yaml @@ -35,9 +35,6 @@ jobs: cache: true cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} - - name: Checkout repository - uses: actions/checkout@v5 - - name: Set up Deno dependencies cache uses: actions/cache@v3 with: From 7c8a60817ccb754efe24e76a1faef9179c2c9998 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:55:43 -0600 Subject: [PATCH 14/40] ci: fix using workflow fn --- .github/workflows/ci.yaml | 16 ++++++---------- .github/workflows/fn-setup.yaml | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 480b762..e5ae5a2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,16 +10,12 @@ env: jobs: setup: - name: Setup - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v5 - - name: Set up Repository - uses: ./.github/workflows/fn-setup.yaml - with: - cache-version: ${{ env.CACHE_VERSION }} - deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + name: Setup Repository + uses: ./.github/workflows/fn-setup.yaml + with: + cache-version: v1 + deno-deps-cache-slice-name: ci + test: name: Test needs: [setup] diff --git a/.github/workflows/fn-setup.yaml b/.github/workflows/fn-setup.yaml index 76a2945..ed2f28a 100644 --- a/.github/workflows/fn-setup.yaml +++ b/.github/workflows/fn-setup.yaml @@ -10,7 +10,7 @@ on: default: v1 deno-deps-cache-slice-name: description: - A string to differentiate the Deno dependencies slice from other slices of the cache. \ + A string to differentiate the Deno dependencies slice from other slices of the cache. This is needed only if there are other slices that shouldn't be confused with this slice. type: string required: false From 0186cd58a7496c0c9263b57e2cb9a81ac66c839b Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:03:13 -0600 Subject: [PATCH 15/40] ci: remove preflight --- .github/workflows/preflight.yaml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .github/workflows/preflight.yaml diff --git a/.github/workflows/preflight.yaml b/.github/workflows/preflight.yaml deleted file mode 100644 index 1fa8182..0000000 --- a/.github/workflows/preflight.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: Preflight - -on: - push: - branches: - # - main - # - dev - # This allows us to test our actions as soon as we push them - - actions/**/* - -jobs: - main: - name: Main - runs-on: ubuntu-latest - steps: - - name: Log event name - run: echo "This workflow was automatically triggered by a ${{ github.event_name }} event" - - name: Log ref data - run: echo "The ref that triggered this workflow is ${{ github.ref }}" \ No newline at end of file From 5191bf3bc9849fc762002e26fad218749eb66ce6 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:03:41 -0600 Subject: [PATCH 16/40] ci: rename CI workflow to proper file extension --- .github/workflows/{ci.yaml => ci.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{ci.yaml => ci.yml} (100%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/ci.yaml rename to .github/workflows/ci.yml From 7a82caecc2d2d709ad6c2297bbddc1a3f50f58e2 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:06:51 -0600 Subject: [PATCH 17/40] ci: rename setup fn workflow to proper file extension --- .github/workflows/{fn-setup.yaml => fn-setup.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{fn-setup.yaml => fn-setup.yml} (100%) diff --git a/.github/workflows/fn-setup.yaml b/.github/workflows/fn-setup.yml similarity index 100% rename from .github/workflows/fn-setup.yaml rename to .github/workflows/fn-setup.yml From fff4dbd7c98c57535268f396c7e89a8d1f0a42c3 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:24:51 -0600 Subject: [PATCH 18/40] ci: create fn-setup composite workflow --- .github/actions/fn-setup/action.yml | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/actions/fn-setup/action.yml diff --git a/.github/actions/fn-setup/action.yml b/.github/actions/fn-setup/action.yml new file mode 100644 index 0000000..9c0e1b4 --- /dev/null +++ b/.github/actions/fn-setup/action.yml @@ -0,0 +1,40 @@ +name: Setup +description: Setup the repository + +inputs: + cache-version: + description: A string to forcefully bust the cache when changed + required: false + default: v1 + deno-deps-cache-slice-name: + description: A string to differentiate the Deno dependencies slice from other slices of the cache. This is needed only if there are other slices that shouldn't be confused with this slice. + required: false + +runs: + using: composite + steps: + - name: Set up Deno + uses: denoland/setup-deno@v2 + env: + DENO_CACHE_SLICE_NAME: deno + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux + DENO_DEPS_CACHE_PATH: | + ~/.deno + ~/.cache/deno + with: + deno-version: 2.x + cache: true + cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} + + - name: Set up Deno dependencies cache + uses: actions/cache@v3 + with: + path: ${{ env.DENO_DEPS_CACHE_PATH }} + key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} + + - name: Install dependencies + run: deno install + shell: bash From b4ebb94b1ba0064c5222bf6b98164e5d8997daab Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:25:09 -0600 Subject: [PATCH 19/40] ci: try using composite workflow instead of reusable workflow --- .github/workflows/ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e5ae5a2..f54a0a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,11 +10,17 @@ env: jobs: setup: - name: Setup Repository - uses: ./.github/workflows/fn-setup.yaml - with: - cache-version: v1 - deno-deps-cache-slice-name: ci + name: Setup + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up Repository + uses: ./.github/actions/fn-setup + with: + cache-version: ${{ env.CACHE_VERSION }} + deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} test: name: Test @@ -23,11 +29,13 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v5 + # Now the Deno cache should be warmed up, so this should be much faster - name: Set up Repository - uses: ./.github/workflows/fn-setup.yaml + uses: ./.github/actions/fn-setup with: cache-version: ${{ env.CACHE_VERSION }} deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + - name: Test run: deno test --allow-read From 6da686decc554b54462ab496690912be5ddf2011 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:32:02 -0600 Subject: [PATCH 20/40] ci: supply paths to deno deps cache action --- .github/actions/fn-setup/action.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/actions/fn-setup/action.yml b/.github/actions/fn-setup/action.yml index 9c0e1b4..adeb537 100644 --- a/.github/actions/fn-setup/action.yml +++ b/.github/actions/fn-setup/action.yml @@ -17,11 +17,6 @@ runs: uses: denoland/setup-deno@v2 env: DENO_CACHE_SLICE_NAME: deno - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux - DENO_DEPS_CACHE_PATH: | - ~/.deno - ~/.cache/deno with: deno-version: 2.x cache: true @@ -29,6 +24,12 @@ runs: - name: Set up Deno dependencies cache uses: actions/cache@v3 + env: + # Don't add more paths below, since they'll be invalidated whenever Deno deps change + # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux + DENO_DEPS_CACHE_PATH: | + ~/.deno + ~/.cache/deno with: path: ${{ env.DENO_DEPS_CACHE_PATH }} key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} From 35b1746807c262deaeb25200fd322bfe82e15d40 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:40:58 -0600 Subject: [PATCH 21/40] ci: clean up naming --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f54a0a7..8a7605d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - name: Set up Repository + - name: Set up repository uses: ./.github/actions/fn-setup with: cache-version: ${{ env.CACHE_VERSION }} @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@v5 # Now the Deno cache should be warmed up, so this should be much faster - - name: Set up Repository + - name: Set up repository uses: ./.github/actions/fn-setup with: cache-version: ${{ env.CACHE_VERSION }} From 58604d5890f4fd1c6ca0a7cddd3d73cce85c98fa Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:16:12 -0600 Subject: [PATCH 22/40] ci: debug: what happens when we remove the deps cache --- .github/actions/fn-setup/action.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/actions/fn-setup/action.yml b/.github/actions/fn-setup/action.yml index adeb537..4948153 100644 --- a/.github/actions/fn-setup/action.yml +++ b/.github/actions/fn-setup/action.yml @@ -22,19 +22,19 @@ runs: cache: true cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} - - name: Set up Deno dependencies cache - uses: actions/cache@v3 - env: - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux - DENO_DEPS_CACHE_PATH: | - ~/.deno - ~/.cache/deno - with: - path: ${{ env.DENO_DEPS_CACHE_PATH }} - key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} - restore-keys: | - ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} + # - name: Set up Deno dependencies cache + # uses: actions/cache@v3 + # env: + # # Don't add more paths below, since they'll be invalidated whenever Deno deps change + # # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux + # DENO_DEPS_CACHE_PATH: | + # ~/.deno + # ~/.cache/deno + # with: + # path: ${{ env.DENO_DEPS_CACHE_PATH }} + # key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} + # restore-keys: | + # ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} - name: Install dependencies run: deno install From 4bd3d879af564bd0b084fafc68a80a473f616943 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:20:10 -0600 Subject: [PATCH 23/40] ci: debug: now what happens if we take away the cache hash --- .github/actions/fn-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/fn-setup/action.yml b/.github/actions/fn-setup/action.yml index 4948153..e673fe7 100644 --- a/.github/actions/fn-setup/action.yml +++ b/.github/actions/fn-setup/action.yml @@ -20,7 +20,7 @@ runs: with: deno-version: 2.x cache: true - cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} + # cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} # - name: Set up Deno dependencies cache # uses: actions/cache@v3 From 136600fa95a5761ce96e6b79a79d94dfdaffdc3f Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:37:46 -0600 Subject: [PATCH 24/40] ci: simplify everything back down to a single CI workflow --- .github/actions/fn-setup/action.yml | 41 ---------------------- .github/workflows/ci.yml | 53 +++++++++++++++++++++-------- .github/workflows/fn-setup.yml | 47 ------------------------- 3 files changed, 39 insertions(+), 102 deletions(-) delete mode 100644 .github/actions/fn-setup/action.yml delete mode 100644 .github/workflows/fn-setup.yml diff --git a/.github/actions/fn-setup/action.yml b/.github/actions/fn-setup/action.yml deleted file mode 100644 index e673fe7..0000000 --- a/.github/actions/fn-setup/action.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Setup -description: Setup the repository - -inputs: - cache-version: - description: A string to forcefully bust the cache when changed - required: false - default: v1 - deno-deps-cache-slice-name: - description: A string to differentiate the Deno dependencies slice from other slices of the cache. This is needed only if there are other slices that shouldn't be confused with this slice. - required: false - -runs: - using: composite - steps: - - name: Set up Deno - uses: denoland/setup-deno@v2 - env: - DENO_CACHE_SLICE_NAME: deno - with: - deno-version: 2.x - cache: true - # cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} - - # - name: Set up Deno dependencies cache - # uses: actions/cache@v3 - # env: - # # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux - # DENO_DEPS_CACHE_PATH: | - # ~/.deno - # ~/.cache/deno - # with: - # path: ${{ env.DENO_DEPS_CACHE_PATH }} - # key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} - # restore-keys: | - # ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} - - - name: Install dependencies - run: deno install - shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a7605d..222a6a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,24 +3,34 @@ name: CI on: [push, pull_request] env: - # Used to forcefully bust the cache - CACHE_VERSION: v1 - # Used to differentiate from other slices of the cache for other workflow runs - CACHE_SLICE_NAME: ci + # Used to differentiate from other slices of the cache for other workflow runs, and to forcefully bust the cache when renamed + CACHE_KEY_BASE: ci@v1 jobs: setup: name: Setup runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v5 + - name: Set up Deno + id: deno-install-and-cache + uses: denoland/setup-deno@v2 + with: + deno-version: 2.x + cache: true - - name: Set up repository - uses: ./.github/actions/fn-setup + - name: Set up Deno dependencies cache + id: deno-deps-cache + uses: actions/cache@v3 with: - cache-version: ${{ env.CACHE_VERSION }} - deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + path: | + ~/.deno + ~/.cache/deno + key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + restore-keys: ${{ env.CACHE_KEY_BASE }} + + - name: Install dependencies + id: deno-deps-install + run: deno install test: name: Test @@ -31,11 +41,26 @@ jobs: uses: actions/checkout@v5 # Now the Deno cache should be warmed up, so this should be much faster - - name: Set up repository - uses: ./.github/actions/fn-setup + - name: Set up Deno + id: deno-install-and-cache + uses: denoland/setup-deno@v2 with: - cache-version: ${{ env.CACHE_VERSION }} - deno-deps-cache-slice-name: ${{ env.CACHE_SLICE_NAME }} + deno-version: 2.x + cache: true + + - name: Set up Deno dependencies cache + id: deno-deps-cache + uses: actions/cache@v3 + with: + path: | + ~/.deno + ~/.cache/deno + key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + restore-keys: ${{ env.CACHE_KEY_BASE }} + + - name: Install dependencies + id: deno-deps-install + run: deno install - name: Test run: deno test --allow-read diff --git a/.github/workflows/fn-setup.yml b/.github/workflows/fn-setup.yml deleted file mode 100644 index ed2f28a..0000000 --- a/.github/workflows/fn-setup.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Setup - -on: - workflow_call: - inputs: - cache-version: - description: A string to forcefully bust the cache when changed - type: string - required: false - default: v1 - deno-deps-cache-slice-name: - description: - A string to differentiate the Deno dependencies slice from other slices of the cache. - This is needed only if there are other slices that shouldn't be confused with this slice. - type: string - required: false - -env: - DENO_CACHE_SLICE_NAME: deno - # Don't add more paths below, since they'll be invalidated whenever Deno deps change - # Yoinked from https://github.com/actions/cache/blob/main/examples.md#linux - DENO_DEPS_CACHE_PATH: | - ~/.deno - ~/.cache/deno - -jobs: - setup: - name: Setup - runs-on: ubuntu-latest - steps: - - name: Set up Deno - uses: denoland/setup-deno@v2 - with: - deno-version: 2.x - cache: true - cache-hash: ${{ runner.os }}-${{ env.DENO_CACHE_SLICE_NAME }}@${{ inputs.cache-version }} - - - name: Set up Deno dependencies cache - uses: actions/cache@v3 - with: - path: ${{ env.DENO_DEPS_CACHE_PATH }} - key: ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }}-${{ hashFiles('deno.lock') }} - restore-keys: | - ${{ runner.os }}-${{ inputs.deno-deps-cache-slice-name }}@${{ inputs.cache-version }} - - - name: Install dependencies - run: deno install From ae2c41f4031f24eec27975ba8cb60a6eaf05c349 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:39:21 -0600 Subject: [PATCH 25/40] ci: be sure to check out repository again --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 222a6a8..153a726 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,9 @@ jobs: name: Setup runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v5 + - name: Set up Deno id: deno-install-and-cache uses: denoland/setup-deno@v2 From 0a62ace16c3d8527600634253c42f32b0f33f811 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:42:38 -0600 Subject: [PATCH 26/40] ci: debug: what happens when we remove deps cache --- .github/workflows/ci.yml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 153a726..c67afe7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,15 +21,15 @@ jobs: deno-version: 2.x cache: true - - name: Set up Deno dependencies cache - id: deno-deps-cache - uses: actions/cache@v3 - with: - path: | - ~/.deno - ~/.cache/deno - key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - restore-keys: ${{ env.CACHE_KEY_BASE }} + # - name: Set up Deno dependencies cache + # id: deno-deps-cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.deno + # ~/.cache/deno + # key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + # restore-keys: ${{ env.CACHE_KEY_BASE }} - name: Install dependencies id: deno-deps-install @@ -51,15 +51,15 @@ jobs: deno-version: 2.x cache: true - - name: Set up Deno dependencies cache - id: deno-deps-cache - uses: actions/cache@v3 - with: - path: | - ~/.deno - ~/.cache/deno - key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - restore-keys: ${{ env.CACHE_KEY_BASE }} + # - name: Set up Deno dependencies cache + # id: deno-deps-cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.deno + # ~/.cache/deno + # key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + # restore-keys: ${{ env.CACHE_KEY_BASE }} - name: Install dependencies id: deno-deps-install From 3e2132ca7bead43f8ae122fe1b137964acadbac6 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:46:13 -0600 Subject: [PATCH 27/40] ci: debug: what happens when we take out explicit caching and only specify a hash --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c67afe7..4952582 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache: true + cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} # - name: Set up Deno dependencies cache # id: deno-deps-cache From 712ad90c0edc5283062b9043c20ed37e8560ca38 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:47:51 -0600 Subject: [PATCH 28/40] ci: debug: what happens when we use it for both --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4952582..b4fdc09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,7 +49,7 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache: true + cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} # - name: Set up Deno dependencies cache # id: deno-deps-cache From 6e787e1578fe09fb94218d9621f3d937d27ff16c Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:53:45 -0600 Subject: [PATCH 29/40] ci: officially remove vestigial caching --- .github/workflows/ci.yml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4fdc09..98f762b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,16 +21,6 @@ jobs: deno-version: 2.x cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - # - name: Set up Deno dependencies cache - # id: deno-deps-cache - # uses: actions/cache@v3 - # with: - # path: | - # ~/.deno - # ~/.cache/deno - # key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - # restore-keys: ${{ env.CACHE_KEY_BASE }} - - name: Install dependencies id: deno-deps-install run: deno install @@ -51,16 +41,6 @@ jobs: deno-version: 2.x cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - # - name: Set up Deno dependencies cache - # id: deno-deps-cache - # uses: actions/cache@v3 - # with: - # path: | - # ~/.deno - # ~/.cache/deno - # key: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - # restore-keys: ${{ env.CACHE_KEY_BASE }} - - name: Install dependencies id: deno-deps-install run: deno install From 084c16e6cc4aaf907ef7b20a75b8ed97feb0c99c Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:54:35 -0600 Subject: [PATCH 30/40] ci: debug: what happens when we disable caching for test job --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98f762b..14ca3ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,8 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + cache: false + # cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Install dependencies id: deno-deps-install From 5f65b7e8ad337c273460a2fa605e5d2496ccb420 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:56:11 -0600 Subject: [PATCH 31/40] ci: reactivate test job caching --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14ca3ae..98f762b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,8 +39,7 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache: false - # cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Install dependencies id: deno-deps-install From 0ca723291b38948dddbc1c9fb00a28653fe38afe Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:58:01 -0600 Subject: [PATCH 32/40] ci: remove redundant runner.os parameter --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98f762b..c0915bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Install dependencies id: deno-deps-install @@ -39,7 +39,7 @@ jobs: uses: denoland/setup-deno@v2 with: deno-version: 2.x - cache-hash: ${{ runner.os }}-${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Install dependencies id: deno-deps-install From ac36641718074ebee2adcbb2ba68b5eb890773c1 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:01:26 -0600 Subject: [PATCH 33/40] ci: debug: what happens when we omit installing deps in test job --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c0915bc..5ec9adf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,9 +41,9 @@ jobs: deno-version: 2.x cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - - name: Install dependencies - id: deno-deps-install - run: deno install + # - name: Install dependencies + # id: deno-deps-install + # run: deno install - name: Test run: deno test --allow-read From 3d4e730db8e3bcebf5a103e015231b82e1cf149f Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:02:53 -0600 Subject: [PATCH 34/40] ci: officially remove vestigial deno install --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ec9adf..619e9cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,9 +41,5 @@ jobs: deno-version: 2.x cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - # - name: Install dependencies - # id: deno-deps-install - # run: deno install - - name: Test run: deno test --allow-read From 026ac440f4defac803e58c70fc949184880511d5 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:08:30 -0600 Subject: [PATCH 35/40] ci: remove vestigial id props --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 619e9cc..c64073a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,14 +15,12 @@ jobs: uses: actions/checkout@v5 - name: Set up Deno - id: deno-install-and-cache uses: denoland/setup-deno@v2 with: deno-version: 2.x cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Install dependencies - id: deno-deps-install run: deno install test: @@ -35,7 +33,6 @@ jobs: # Now the Deno cache should be warmed up, so this should be much faster - name: Set up Deno - id: deno-install-and-cache uses: denoland/setup-deno@v2 with: deno-version: 2.x From 5290965984d5d601e68dc2da17254b2b1c8dee34 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:09:44 -0600 Subject: [PATCH 36/40] ci: add biome linting step --- .github/workflows/ci.yml | 18 ++++++++++++++++++ deno.lock | 1 + 2 files changed, 19 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c64073a..d5b4026 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,3 +40,21 @@ jobs: - name: Test run: deno test --allow-read + + lint: + name: Lint + needs: [setup] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + # Now the Deno cache should be warmed up, so this should be much faster + - name: Set up Deno + uses: denoland/setup-deno@v2 + with: + deno-version: 2.x + cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + + - name: Test + run: deno run --allow-read --allow-env --allow-run npm:@biomejs/biome ci diff --git a/deno.lock b/deno.lock index 025bcef..a563605 100644 --- a/deno.lock +++ b/deno.lock @@ -16,6 +16,7 @@ "jsr:@std/path@^1.1.1": "1.1.2", "jsr:@std/path@^1.1.2": "1.1.2", "jsr:@std/testing@*": "1.0.16", + "npm:@biomejs/biome@*": "2.2.6", "npm:@biomejs/biome@2.2.6": "2.2.6", "npm:@types/node@*": "24.2.0", "npm:chevrotain@^11.0.3": "11.0.3" From 53b9431e9e3157260585a7f07c91e423fa1a08aa Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:35:44 -0600 Subject: [PATCH 37/40] ci: clarify when CI workflow runs --- .github/workflows/ci.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5b4026..3238963 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,17 @@ name: CI -on: [push, pull_request] +on: + push: + branches: + - "*" + tags: + - "*" + pull_request: + types: + - opened + - reopened + branches: + - "*" env: # Used to differentiate from other slices of the cache for other workflow runs, and to forcefully bust the cache when renamed From c47d4edcfa3eba6d526cc75d4b2f1af9be97da37 Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:36:10 -0600 Subject: [PATCH 38/40] ci: make deno permissions stricter --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3238963..5ad3181 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - name: Test - run: deno test --allow-read + run: deno test --allow-read --no-prompt lint: name: Lint @@ -67,5 +67,5 @@ jobs: deno-version: 2.x cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} - - name: Test - run: deno run --allow-read --allow-env --allow-run npm:@biomejs/biome ci + - name: Lint + run: deno run --allow-env --allow-run --no-prompt npm:@biomejs/biome ci From 64fd474775b2ef73d1e53d1a7319c9d51f2eb9ef Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:37:09 -0600 Subject: [PATCH 39/40] ci: broaden scopes to original breadth --- .github/workflows/ci.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ad3181..3407ede 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,16 +2,7 @@ name: CI on: push: - branches: - - "*" - tags: - - "*" pull_request: - types: - - opened - - reopened - branches: - - "*" env: # Used to differentiate from other slices of the cache for other workflow runs, and to forcefully bust the cache when renamed From 6cbc34b7ba613e6a58be9ea799b872aaf9dd217c Mon Sep 17 00:00:00 2001 From: Benjamin Laird <86321957+ben-laird@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:45:35 -0600 Subject: [PATCH 40/40] ci: add check command --- .github/workflows/ci.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3407ede..6d81b54 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,3 +60,21 @@ jobs: - name: Lint run: deno run --allow-env --allow-run --no-prompt npm:@biomejs/biome ci + + check: + name: Check + needs: [setup] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + # Now the Deno cache should be warmed up, so this should be much faster + - name: Set up Deno + uses: denoland/setup-deno@v2 + with: + deno-version: 2.x + cache-hash: ${{ env.CACHE_KEY_BASE }}-${{ hashFiles('deno.lock') }} + + - name: Lint + run: deno check