diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index d103f3d..2a0d02c 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -17,7 +17,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 18
+          node-version: 20.9.0
           registry-url: https://registry.npmjs.org/
       - name: Install dependencies
         run: yarn install --network-concurrency 1
@@ -33,7 +33,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 18
+          node-version: 20.9.0
           registry-url: https://npm.pkg.github.com/
           scope: '@owlebot'
         env:
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index a5eedcb..39eedcd 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -13,15 +13,13 @@ on:
 jobs:
   lint:
     runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        node-version: [18.x]
     steps:
       - uses: actions/checkout@v3
-      - name: Use Node.js ${{ matrix.node-version }}
+      - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: ${{ matrix.node-version }}
+          node-version: 20.9.0
+          cache: yarn
       - name: Install SSH key
         uses: shimataro/ssh-key-action@v2
         continue-on-error: true
@@ -36,15 +34,13 @@ jobs:
         run: yarn lint
   test:
     runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        node-version: [18.x]
     steps:
       - uses: actions/checkout@v3
-      - name: Use Node.js ${{ matrix.node-version }}
+      - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: ${{ matrix.node-version }}
+          node-version: 20.9.0
+          cache: yarn
       - name: Install SSH key
         uses: shimataro/ssh-key-action@v2
         continue-on-error: true