Pin Node.js v22 version (#16491) #25891
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: Prod | |
on: | |
push: | |
branches: | |
- main | |
- patch-release | |
- next | |
pull_request: | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Build | |
uses: ./.github/workflows/_build.yml | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: "yarn" | |
- name: Install Dependencies | |
run: yarn install --immutable | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Lint Code | |
run: yarn test:dist-lint | |
test: | |
timeout-minutes: 90 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- "ubuntu-latest" | |
- "macos-latest" | |
- "windows-latest" | |
node: | |
# Latest even version | |
- "22.4.1" | |
# Minimal version for production | |
- "14" | |
include: | |
- os: "ubuntu-latest" | |
# Pick a version that is fast (normally highest LTS version) | |
node: "22.4.1" | |
FULL_TEST: true | |
# Versions not tested on linux, normally only even versions | |
# If latest version is an odd number, it can be listed below too | |
- os: "ubuntu-latest" | |
node: "20" | |
- os: "ubuntu-latest" | |
node: "18" | |
- os: "ubuntu-latest" | |
node: "16" | |
# Tests on Intel Mac x Node.js 14 | |
- os: "macos-13" | |
node: "14" | |
# setup-node does not support Node.js 14 x M1 Mac | |
exclude: | |
- os: "macos-latest" | |
node: "14" | |
env: | |
FULL_TEST: ${{ matrix.FULL_TEST }} | |
name: ${{ matrix.FULL_TEST && '[Full Test] ' || '' }} Node.js ${{ matrix.node }} on ${{ startsWith(matrix.os, 'macos') && 'MacOS' || startsWith(matrix.os, 'windows') && 'Windows' || 'Linux' }} | |
runs-on: ${{ matrix.os }} | |
needs: [build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install yarn@3 | |
if: ${{ matrix.node == '14' || matrix.node == '16' }} | |
run: | | |
yarn set version 3 | |
cat .yarnrc.yml | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "yarn" | |
# `[email protected]` is the last version that supports Node.js v14 | |
- name: Install [email protected] | |
if: ${{ matrix.node == '14' }} | |
run: node ./scripts/prepare-nodejs-14-test.js | |
- name: Install Dependencies(yarn@3,mutable) | |
if: ${{ matrix.node == '14' || matrix.node == '16' }} | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: yarn install | |
- name: Install Dependencies | |
run: yarn install --immutable | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Run Tests | |
run: yarn test:dist | |
- name: Run Format Tests (standalone) | |
run: yarn test:dist-standalone | |
cli: | |
name: CLI | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "0.10.48" | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Validate Node.js Version | |
run: node -v | grep "v0.10.48" || exit 1 | |
- name: Run CLI on Node.js v0.10.48 | |
run: node dist/bin/prettier.cjs --version 2>&1 >/dev/null | grep "prettier requires at least version 14 of Node, please upgrade" || exit 1 |