diff --git a/.github/actions/pnpm-install/action.yml b/.github/actions/pnpm-install/action.yml index 3f310773..b4225457 100644 --- a/.github/actions/pnpm-install/action.yml +++ b/.github/actions/pnpm-install/action.yml @@ -1,10 +1,13 @@ name: Install dependencies -description: Set up pnpm and Node.js, restore the pnpm store from the cache and run pnpm install +description: Set up pnpm and Node.js, restore caches and run pnpm install inputs: node-version: description: Node.js version passed to actions/setup-node required: true + ignore-scripts: + description: Skip the prepare scripts that build the workspace packages + default: "false" runs: using: composite @@ -28,8 +31,22 @@ runs: key: pnpm-store-${{ runner.os }}-${{ steps.store.outputs.week }}-${{ hashFiles('**/package.json', 'pnpm-workspace.yaml') }} restore-keys: pnpm-store-${{ runner.os }}- + # The prepare scripts run tsc --build and webpack, both incremental when + # their previous output is present. Every run saves its output and the + # next run starts from the most recent one. + - if: inputs.ignore-scripts != 'true' + uses: actions/cache@v6 + with: + path: | + packages/*/dist + plugins/*/dist + packages/*/node_modules/.cache + plugins/*/node_modules/.cache + key: build-${{ runner.os }}-${{ github.sha }} + restore-keys: build-${{ runner.os }}- + - shell: bash - run: pnpm i --no-frozen-lockfile + run: pnpm i --no-frozen-lockfile ${{ inputs.ignore-scripts == 'true' && '--ignore-scripts' || '' }} # Drop packages the restored store had but this install did not use, so # the snapshot does not grow with every version bump. - shell: bash diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index caa9a1a0..8b321f19 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -96,6 +96,7 @@ jobs: - uses: ./.github/actions/pnpm-install with: node-version: ${{ env.NODE_VERSION }} + ignore-scripts: true - run: pnpm run lint build: @@ -106,6 +107,7 @@ jobs: - uses: ./.github/actions/pnpm-install with: node-version: ${{ env.NODE_VERSION }} + ignore-scripts: true - run: pnpm run build-mod # Upload build to artifacts - name: Upload build to artifacts