diff --git a/.github/actions/setup-node-pnpm/action.yml b/.github/actions/setup-node-pnpm/action.yml new file mode 100644 index 000000000..5ee43fe0e --- /dev/null +++ b/.github/actions/setup-node-pnpm/action.yml @@ -0,0 +1,43 @@ +name: 'Setup Node with Corepack and pnpm' +description: 'Sets up Node.js with Corepack-managed pnpm and caching' + +inputs: + node-version-file: + description: 'Path to Node version file' + required: false + default: '.node-version' + node-version: + description: 'Node version (overrides node-version-file)' + required: false + registry-url: + description: 'Registry URL for npm authentication' + required: false + +runs: + using: 'composite' + steps: + - name: Setup Node.js + uses: actions/setup-node@v6 + id: setup-node + with: + node-version: ${{ inputs.node-version }} + node-version-file: ${{ inputs.node-version && '' || inputs.node-version-file }} + registry-url: ${{ inputs.registry-url }} + + - name: Enable Corepack + shell: bash + run: corepack enable + + - name: Setup pnpm cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/.pnpm-store + key: ${{ runner.os }}-node-${{ steps.setup-node.outputs.node-version }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-node-${{ steps.setup-node.outputs.node-version }}-pnpm-store- + + - name: Install dependencies + shell: bash + env: + PNPM_STORE_DIR: ${{ github.workspace }}/.pnpm-store + run: pnpm install --frozen-lockfile diff --git a/.github/workflows/conformance.yml b/.github/workflows/conformance.yml index 47606314e..18550a433 100644 --- a/.github/workflows/conformance.yml +++ b/.github/workflows/conformance.yml @@ -18,17 +18,8 @@ jobs: runs-on: ubuntu-latest continue-on-error: true steps: - - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - run_install: false - - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - run: pnpm install + - uses: actions/checkout@v6 + - uses: ./.github/actions/setup-node-pnpm - run: pnpm run build:all - run: pnpm run test:conformance:client:all @@ -36,16 +27,7 @@ jobs: runs-on: ubuntu-latest continue-on-error: true steps: - - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - run_install: false - - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - run: pnpm install + - uses: actions/checkout@v6 + - uses: ./.github/actions/setup-node-pnpm - run: pnpm run build:all - run: pnpm run test:conformance:server diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 73162fba5..e3d9ca3bd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,19 +17,7 @@ jobs: steps: - uses: actions/checkout@v6 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - id: pnpm-install - with: - run_install: false - - uses: actions/setup-node@v6 - with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - - run: pnpm install + - uses: ./.github/actions/setup-node-pnpm - run: pnpm run check:all - run: pnpm run build:all @@ -42,20 +30,9 @@ jobs: steps: - uses: actions/checkout@v6 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - id: pnpm-install - with: - run_install: false - - uses: actions/setup-node@v6 + - uses: ./.github/actions/setup-node-pnpm with: node-version: ${{ matrix.node-version }} - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - - run: pnpm install - - run: pnpm test:all publish: @@ -69,20 +46,10 @@ jobs: id-token: write steps: - - uses: actions/checkout@v4 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - id: pnpm-install - with: - run_install: false - - uses: actions/setup-node@v4 + - uses: actions/checkout@v6 + - uses: ./.github/actions/setup-node-pnpm with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml registry-url: 'https://registry.npmjs.org' - - run: pnpm install - name: Determine npm tag id: npm-tag @@ -120,22 +87,11 @@ jobs: contents: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 # Fetch all history for all branches and tags - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - run_install: false - - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - - name: Install dependencies - run: pnpm install + - uses: ./.github/actions/setup-node-pnpm - name: Configure Git run: | diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a180396b6..01389c942 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,23 +17,10 @@ jobs: steps: - uses: actions/checkout@v6 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - run_install: false - - - name: Setup Node.js - uses: actions/setup-node@v6 + - uses: ./.github/actions/setup-node-pnpm with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml registry-url: 'https://registry.npmjs.org' - - name: Install dependencies - run: pnpm install - - name: Build packages run: pnpm run build:all diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ed0b1061b..373a117b4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,23 +17,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - run_install: false - - - name: Setup Node.js - uses: actions/setup-node@v6 + - uses: ./.github/actions/setup-node-pnpm with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml registry-url: 'https://registry.npmjs.org' - - name: Install dependencies - run: pnpm install - - name: Create Release Pull Request or Publish to npm id: changesets uses: changesets/action@v1 diff --git a/.github/workflows/update-spec-types.yml b/.github/workflows/update-spec-types.yml index 4a54f76c5..446067dcd 100644 --- a/.github/workflows/update-spec-types.yml +++ b/.github/workflows/update-spec-types.yml @@ -17,21 +17,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - name: Install pnpm - uses: pnpm/action-setup@v4 - id: pnpm-install - with: - run_install: false - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: 24 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - - name: Install dependencies - run: pnpm install + - uses: ./.github/actions/setup-node-pnpm - name: Fetch latest spec types run: pnpm run fetch:spec-types diff --git a/.node-version b/.node-version new file mode 100644 index 000000000..11c309c52 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +v24.13.1