feat(FN-4100): refactor ci workflows to use reusable setup-node-pnpm compos

Refactors GitHub Actions workflow setup into a reusable composite action, consolidating repeated setup logic across CI, mobile, release, test-release, and version workflows (176 lines removed). Adds corresponding tests for the workflow configuration.

Fusion-Task-Id: FN-4100
This commit is contained in:
Fusion
2026-05-12 14:17:47 -07:00
committed by gsxdsm
parent 1a11369832
commit d518bcf516
8 changed files with 57 additions and 176 deletions

View File

@@ -9,6 +9,14 @@ inputs:
description: Arguments passed to pnpm install
required: false
default: "--frozen-lockfile"
registry-url:
description: Optional npm registry URL passed to actions/setup-node
required: false
default: ""
skip-install:
description: Set to 'true' to skip the pnpm install step; caller runs install themselves
required: false
default: "false"
runs:
using: composite
steps:
@@ -20,7 +28,9 @@ runs:
with:
node-version: ${{ inputs.node-version }}
cache: pnpm
registry-url: ${{ inputs.registry-url }}
- name: Install dependencies
if: ${{ inputs.skip-install != 'true' }}
shell: bash
run: pnpm install ${{ inputs.install-args }}

View File

@@ -10,20 +10,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Lint
run: pnpm lint
@@ -37,20 +25,8 @@ jobs:
shard: [1, 2, 3]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Install Bun
uses: oven-sh/setup-bun@v2
@@ -64,20 +40,8 @@ jobs:
needs: [lint, test-shards]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Build workspace
run: pnpm build

View File

@@ -10,32 +10,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Build dashboard client
run: pnpm --filter @fusion/dashboard build
@@ -53,29 +29,8 @@ jobs:
needs: build-web
steps:
- name: Checkout
uses: actions/checkout@v4
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Cache iOS DerivedData
uses: actions/cache@v4
@@ -85,9 +40,6 @@ jobs:
restore-keys: |
${{ runner.os }}-derived-data-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download dashboard artifact
uses: actions/download-artifact@v4
with:
@@ -147,21 +99,8 @@ jobs:
needs: build-web
steps:
- name: Checkout
uses: actions/checkout@v4
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Setup Java 17
uses: actions/setup-java@v4
@@ -169,14 +108,6 @@ jobs:
distribution: temurin
java-version: "17"
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Cache Android Gradle caches
uses: actions/cache@v4
with:
@@ -185,9 +116,6 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download dashboard artifact
uses: actions/download-artifact@v4
with:

View File

@@ -40,28 +40,14 @@ jobs:
binary: fn-windows-x64.exe
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
install-args: ""
- name: Install Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build

View File

@@ -31,28 +31,12 @@ jobs:
binary: fn-windows-x64.exe
steps:
- name: Checkout
uses: actions/checkout@v4
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
- name: Setup Node and install dependencies
uses: ./.github/actions/setup-node-pnpm
- name: Install Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build

View File

@@ -20,22 +20,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node and pnpm
uses: ./.github/actions/setup-node-pnpm
with:
node-version: "24"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: "24"
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: "24"
cache: pnpm
registry-url: "https://registry.npmjs.org"
skip-install: "true"
- name: Ensure modern npm (OIDC support)
run: npm install -g npm@11.6.4