mirror of
https://github.com/pnpm/pnpm.git
synced 2026-03-27 11:31:45 -04:00
On non-main branches, run Windows tests only with Node.js 22.13.0 (the lowest supported version). The full Windows matrix still runs on main.
72 lines
2.5 KiB
YAML
72 lines
2.5 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
compile-and-lint:
|
|
# Skip pull_request events from PRs in the same repo. This prevents
|
|
# duplicate build jobs from running when creating a PR in the original repo.
|
|
# Exception: chore/update-lockfile PRs (created by automation with GITHUB_TOKEN, which doesn't trigger push events)
|
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository || github.head_ref == 'chore/update-lockfile' }}
|
|
|
|
name: Compile & Lint
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Commit
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
- name: Install pnpm
|
|
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
|
|
with:
|
|
standalone: true
|
|
- name: Setup Node
|
|
run: pnpm runtime -g set node 24.6.0
|
|
timeout-minutes: 2
|
|
- name: pnpm install
|
|
run: pnpm install
|
|
timeout-minutes: 3
|
|
- name: Compile TypeScript
|
|
run: pnpm run compile-only
|
|
- name: Lint
|
|
run: pnpm run lint
|
|
- name: Package compiled artifacts
|
|
run: tar -czf compiled.tar.gz --exclude='node_modules' $(find . -type d -name lib -not -path '*/node_modules/*') $(find . -name 'tsconfig.tsbuildinfo' -not -path '*/node_modules/*') pnpm/dist
|
|
- name: Upload compiled artifacts
|
|
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
|
with:
|
|
name: compiled-packages
|
|
path: compiled.tar.gz
|
|
retention-days: 1
|
|
|
|
test-smoke:
|
|
name: ubuntu-latest / Node.js 24
|
|
needs: compile-and-lint
|
|
uses: ./.github/workflows/test.yml
|
|
with:
|
|
node: '24.0.0'
|
|
platform: ubuntu-latest
|
|
|
|
test:
|
|
name: ${{ matrix.platform }} / Node.js ${{ matrix.node }}
|
|
needs: test-smoke
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node: ['22.13.0', '24.0.0', '25.0.0']
|
|
platform: [ubuntu-latest, windows-latest]
|
|
exclude:
|
|
- node: '24.0.0'
|
|
platform: ubuntu-latest
|
|
# On branches, only run Windows with the lowest supported Node.js
|
|
- node: ${{ github.ref != 'refs/heads/main' && '24.0.0' || 'none' }}
|
|
platform: windows-latest
|
|
- node: ${{ github.ref != 'refs/heads/main' && '25.0.0' || 'none' }}
|
|
platform: windows-latest
|
|
uses: ./.github/workflows/test.yml
|
|
with:
|
|
node: ${{ matrix.node }}
|
|
platform: ${{ matrix.platform }}
|