-1

I have installed the latest version of NodeJs (v18.14.0), but it still fails to do jobs, what should I do? this is the code from my workflow and the screenshot of the error.

# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs

name: Node.js CI

on:
  push:
    branches: ['main']
  pull_request:
    branches: ['*']

jobs:
  quality:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x, 16.x, 18.x]

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install
      - run: npm test

  publish:
    runs-on: ubuntu-latest
    if: ${{ github.ref == 'refs/heads/main' }}
    needs: [quality]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install
      - run: npm run semantic-release
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

enter image description here

I've tried installing everything from scratch by removing node_modules and package.lock.json then I did an npm install, but the result is still the same. When pushed to the repository it always fails to run the job

jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
Sandi-s
  • 13
  • 3

1 Answers1

1

The strategy is missing for the publish job. You have to define it under publish too.

Using ${{ matrix.node-version }} is invalid here without strategy:

publish:
    runs-on: ubuntu-latest
    # ...
    steps:
      # ...
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }} # invalid

You need to verify which version actions/setup-node installs under publish with that invalid value. Apparently, only the default preinstalled Node.js 16.19.0 is there.

NOTE: The default preinstalled NodeJS version will be set to 18 from tomorrow (Monday - February 13th, 2023).


Apart from that, the error in that image:

[semantic-release]: node version >=18 is required. Found v16.19.0.

means that this step can only run on NodeJS v18+. Installing other lower versions i.e. 14.x and 16.x would result in failures. This makes strategy completely redundant because you only need v18:

      - uses: actions/setup-node@v3
        with:
          node-version: 18

You might want to lint your workflows with https://rhysd.github.io/actionlint/ to identify potential issues.

Azeem
  • 11,148
  • 4
  • 27
  • 40