name: versions on: pull_request: paths-ignore: - '**.md' push: branches: - main - releases/* paths-ignore: - '**.md' jobs: local-cache: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [18, 20, 22] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: __tests__/verify-node.sh "${{ matrix.node-version }}" shell: bash lts-syntax: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-13] node-version: [lts/dubnium, lts/erbium, lts/fermium, lts/*, lts/-1] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} check-latest: true - if: runner.os != 'Windows' && runner.os != 'macOS' name: Verify node and npm run: | . "$NVM_DIR/nvm.sh" [[ $(nvm version-remote "${{ matrix.node-version }}") =~ ^v([^.]+) ]] __tests__/verify-node.sh "${BASH_REMATCH[1]}" shell: bash v8-canary-syntax: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [ '20-v8-canary', '20.0.0-v8-canary', '20.0.0-v8-canary20221101e50e45c9f8' ] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: | canaryVersion="${{ matrix.node-version }}" majorVersion=$(echo $canaryVersion | cut -d- -f1) __tests__/verify-node.sh "$majorVersion" shell: bash nightly-syntax: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [20.11.0-nightly202312211a0be537da, 21-nightly, 18.0.0-nightly] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: | nightlyVersion="${{ matrix.node-version }}" majorVersion=$(echo $nightlyVersion | cut -d- -f1) __tests__/verify-node.sh "$majorVersion" shell: bash rc-syntax: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [20.0.0-rc.1, 18.0.0-rc.2, 19.0.0-rc.0] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: | rcVersion="${{ matrix.node-version }}" majorVersion=$(echo $rcVersion | cut -d- -f1) __tests__/verify-node.sh "$majorVersion" shell: bash manifest: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [18.20.0, 20.10.0, 22.0.0] steps: - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: __tests__/verify-node.sh "${{ matrix.node-version }}" shell: bash check-latest: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [18, 20, 22] steps: - uses: actions/checkout@v4 - name: Setup Node and check latest uses: ./ with: node-version: ${{ matrix.node-version }} check-latest: true - name: Verify node and npm run: __tests__/verify-node.sh "${{ matrix.node-version }}" shell: bash version-file: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version-file: [.nvmrc, .tool-versions, .tool-versions-node, package.json, .npmrc] steps: - uses: actions/checkout@v4 - name: Setup node from node version file uses: ./ with: node-version-file: '__tests__/data/${{ matrix.node-version-file }}' - name: Verify node run: __tests__/verify-node.sh 20 version-file-volta: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 - name: Setup node from node version file uses: ./ with: node-version-file: '__tests__/data/package-volta.json' - name: Verify node run: __tests__/verify-node.sh 20 version-file-volta-extends: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 - name: Setup node from node version file uses: ./ with: node-version-file: '__tests__/data/package-volta-extends.json' - name: Verify node run: __tests__/verify-node.sh 20 node-dist: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [17, 19] steps: - uses: actions/checkout@v4 - name: Setup Node from dist uses: ./ with: node-version: ${{ matrix.node-version }} - name: Verify node and npm run: __tests__/verify-node.sh "${{ matrix.node-version }}" shell: bash old-versions: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-13] steps: - uses: actions/checkout@v4 # test old versions which didn't have npm and layout different - name: Setup node 0.12.18 from dist uses: ./ with: node-version: 0.12.18 - name: Verify node run: __tests__/verify-node.sh 0.12.18 SKIP_NPM shell: bash arch: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Setup node 20 x86 from dist uses: ./ with: node-version: '20' architecture: 'x86' - name: Verify node run: __tests__/verify-arch.sh "ia32" shell: bash node-latest-aliases: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [current, latest, node] steps: - name: Get node version run: | latestNodeVersion=$(curl https://nodejs.org/dist/index.json | jq -r '. [0].version') echo "LATEST_NODE_VERSION=$latestNodeVersion" >> $GITHUB_OUTPUT id: version shell: bash - uses: actions/checkout@v4 - name: Setup Node uses: ./ with: node-version: ${{ matrix.node-version }} - name: Retrieve version after install run: | updatedVersion=$(echo $(node --version)) echo "NODE_VERSION_UPDATED=$updatedVersion" >> $GITHUB_OUTPUT id: updatedVersion shell: bash - name: Compare versions if: ${{ steps.version.outputs.LATEST_NODE_VERSION != steps.updatedVersion.outputs.NODE_VERSION_UPDATED}} run: | echo "Latest node version failed to download." exit 1