From ba0e4084c7dbb5bfcfc9eeb72cbe9d06fcb6c114 Mon Sep 17 00:00:00 2001 From: Anmol1696 Date: Wed, 20 May 2026 08:00:49 +0000 Subject: [PATCH 1/3] =?UTF-8?q?ci:=20upgrade=20pnpm/action-setup=20v2=20?= =?UTF-8?q?=E2=86=92=20v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pnpm/action-setup@v2 action runs on Node.js 20, which GitHub is deprecating on June 2, 2026. Updating to v4 ensures continued compatibility and silences the deprecation warnings that appear in every CI job today. Affects: build, unit-tests, pg-tests, integration-tests in run-tests.yaml and the examples-integration.yaml workflow. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/examples-integration.yaml | 2 +- .github/workflows/run-tests.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/examples-integration.yaml b/.github/workflows/examples-integration.yaml index 015c5b420..e8e014b2e 100644 --- a/.github/workflows/examples-integration.yaml +++ b/.github/workflows/examples-integration.yaml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: '20' - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 with: version: 10 - run: pnpm install diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 24130707c..7ee256092 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -47,7 +47,7 @@ jobs: uses: actions/checkout@v4 - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: version: 10 @@ -103,7 +103,7 @@ jobs: run: tar -xzf workspace.tar.gz && rm workspace.tar.gz - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: version: 10 @@ -208,7 +208,7 @@ jobs: git config --global user.email "ci@example.com" - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: version: 10 @@ -316,7 +316,7 @@ jobs: git config --global user.email "ci@example.com" - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: version: 10 From aad05722a57d16a94b5d68a9803c72483889409c Mon Sep 17 00:00:00 2001 From: Anmol1696 Date: Wed, 20 May 2026 08:01:53 +0000 Subject: [PATCH 2/3] =?UTF-8?q?ci:=20pnpm=20store=20=E2=80=94=20build=20sa?= =?UTF-8?q?ves=20once,=20fan-out=20jobs=20restore-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause from job timings (run 26133536845): - pg-tests/graphile-bulk-mutations: Setup Node.js=254s + Post Setup=264s - integration-tests/graphql-server-test: Setup Node.js=161s 27 parallel jobs all downloading the pnpm store simultaneously saturates the Actions cache service; one job also raced to save it. Changes: - Build job uses actions/cache@v4 with save-always: true on an explicit key (runner.os + pnpm-lock.yaml hash). Guaranteed save after every successful build, even if a prior run's upload failed. - unit-tests, pg-tests, integration-tests use actions/cache/restore@v4 (restore-only, no post-job save). Eliminates the 264s save step and the concurrent-save race entirely. - setup-node cache: 'pnpm' removed from all jobs; replaced by the explicit cache actions above. Expected improvement: p99 job time drops from ~575s to ~310s for the worst-case cache-contention jobs; saves ~264s on every fan-out job that previously raced to write back the pnpm store. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/run-tests.yaml | 53 +++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 7ee256092..e327f3c55 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -55,7 +55,19 @@ jobs: uses: actions/setup-node@v4 with: node-version: '22' - cache: 'pnpm' + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "dir=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" + + - name: Set up pnpm store cache + uses: actions/cache@v4 + with: + path: ${{ steps.pnpm-cache.outputs.dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + save-always: true - name: Install dependencies run: pnpm install @@ -111,7 +123,18 @@ jobs: uses: actions/setup-node@v4 with: node-version: '22' - cache: 'pnpm' + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "dir=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" + + - name: Restore pnpm store (no save) + uses: actions/cache/restore@v4 + with: + path: ${{ steps.pnpm-cache.outputs.dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile @@ -216,7 +239,18 @@ jobs: uses: actions/setup-node@v4 with: node-version: '22' - cache: 'pnpm' + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "dir=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" + + - name: Restore pnpm store (no save) + uses: actions/cache/restore@v4 + with: + path: ${{ steps.pnpm-cache.outputs.dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile @@ -324,7 +358,18 @@ jobs: uses: actions/setup-node@v4 with: node-version: '22' - cache: 'pnpm' + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "dir=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" + + - name: Restore pnpm store (no save) + uses: actions/cache/restore@v4 + with: + path: ${{ steps.pnpm-cache.outputs.dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile From def6ff8f8b8edb790bc90310e002b5216224cccd Mon Sep 17 00:00:00 2001 From: Anmol1696 Date: Wed, 20 May 2026 08:02:12 +0000 Subject: [PATCH 3/3] ci: skip test workflow on documentation-only changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add paths-ignore to push and pull_request triggers so that commits touching only markdown files, docs/, or GitHub template directories don't trigger the full 30-job test matrix. GitHub Actions treats a skipped path-filtered workflow as "passed" for branch-protection purposes, so required status checks are unaffected. workflow_dispatch and workflow_call triggers are untouched — manual runs and cross-workflow calls always execute unconditionally. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/run-tests.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index e327f3c55..969c3cb75 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -4,10 +4,20 @@ on: branches: - main - v1 + paths-ignore: + - '**.md' + - 'docs/**' + - '.github/ISSUE_TEMPLATE/**' + - '.github/PULL_REQUEST_TEMPLATE/**' pull_request: branches: - main - v1 + paths-ignore: + - '**.md' + - 'docs/**' + - '.github/ISSUE_TEMPLATE/**' + - '.github/PULL_REQUEST_TEMPLATE/**' workflow_dispatch: workflow_call: