Add ability to define export conditions per modules #14173
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Node CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
merge_group: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
prepare-yarn-cache-ubuntu: | |
uses: ./.github/workflows/prepare-cache.yml | |
with: | |
os: ubuntu-latest | |
prepare-yarn-cache-macos: | |
uses: ./.github/workflows/prepare-cache.yml | |
with: | |
os: macos-latest | |
prepare-yarn-cache-windows: | |
uses: ./.github/workflows/prepare-cache.yml | |
with: | |
os: windows-latest | |
ts-compatibility: | |
name: TypeScript Compatibility | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: install | |
run: yarn --immutable | |
- name: build | |
run: yarn build | |
- name: ts integration | |
run: yarn test-ts --selectProjects ts-integration | |
- name: type tests | |
run: yarn test-types --target 5.0,current | |
- name: verify [email protected] compatibility | |
run: yarn verify-old-ts | |
- name: run ESLint with type info | |
run: yarn lint-ts-files | |
- name: Run tests depending on type information | |
run: yarn test-with-type-info | |
typecheck: | |
name: Typecheck Examples and Tests | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: install | |
run: yarn --immutable | |
- name: build | |
run: yarn build:ts | |
- name: typecheck examples | |
run: yarn typecheck:examples | |
- name: typecheck tests | |
run: yarn typecheck:tests | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: install | |
run: yarn --immutable | |
- name: build | |
run: yarn build:js | |
- name: verify Yarn PnP compatibility | |
run: yarn verify-pnp | |
- name: run eslint | |
run: yarn lint | |
- name: run prettier | |
run: yarn lint:prettier:ci | |
- name: check changelog | |
run: yarn check-changelog | |
- name: check copyright headers | |
run: yarn check-copyright-headers | |
yarn-validate: | |
name: Validate Yarn dependencies and constraints | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: 'Check for unmet constraints (fix w/ "yarn constraints --fix")' | |
run: yarn constraints | |
- name: 'Check for duplicate dependencies (fix w/ "yarn dedupe")' | |
run: yarn dedupe --check | |
test-ubuntu: | |
uses: ./.github/workflows/test.yml | |
needs: prepare-yarn-cache-ubuntu | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: ['1/4', '2/4', '3/4', '4/4'] | |
name: Ubuntu with shard ${{ matrix.shard }} | |
with: | |
os: ubuntu-latest | |
shard: ${{ matrix.shard }} | |
test-macos: | |
uses: ./.github/workflows/test.yml | |
needs: prepare-yarn-cache-macos | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: ['1/3', '2/3', '3/3'] | |
name: macOS with shard ${{ matrix.shard }} | |
with: | |
os: macos-latest | |
shard: ${{ matrix.shard }} | |
test-windows: | |
uses: ./.github/workflows/test.yml | |
needs: prepare-yarn-cache-windows | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: ['1/4', '2/4', '3/4', '4/4'] | |
name: Windows with shard ${{ matrix.shard }} | |
with: | |
os: windows-latest | |
shard: ${{ matrix.shard }} | |
test-leak: | |
name: Node LTS on Ubuntu with leak detection | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js LTS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: install | |
run: yarn --immutable | |
- name: build | |
run: yarn build:js | |
- name: run tests with leak detection | |
run: yarn test-leak | |
test-coverage: | |
name: Node LTS on Ubuntu with coverage (${{ matrix.shard }}) | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: ['1/4', '2/4', '3/4', '4/4'] | |
runs-on: ubuntu-latest | |
needs: prepare-yarn-cache-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js LTS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: yarn | |
- name: install | |
run: yarn --immutable | |
- name: build | |
run: yarn build:js | |
- name: Get number of CPU cores | |
id: cpu-cores | |
uses: SimenB/github-actions-cpu-cores@v2 | |
- name: run tests with coverage | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
retry_on: error | |
command: yarn jest-coverage --color --config jest.config.ci.mjs --max-workers ${{ steps.cpu-cores.outputs.count }} --shard=${{ matrix.shard }} | |
- name: map coverage | |
run: node ./scripts/mapCoverage.mjs | |
if: always() | |
- uses: codecov/codecov-action@v4 | |
if: always() | |
with: | |
directory: ./coverage |