Need help with setup-node?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

actions
895 Stars 360 Forks MIT License 107 Commits 64 Opened issues

Description

Set up your GitHub Actions workflow with a specific version of node.js

Services available

!
?

Need anything else?

Contributors list

setup-node

build-test status versions status proxy status

This action sets by node environment for use in actions by:

  • optionally downloading and caching a version of node - npm by version spec and add to PATH
  • registering problem matchers for error output
  • configuring authentication for GPR or npm

v2

This release adds reliability for pulling node distributions from a cache of node releases.

steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '12'

The action will first check the local cache for a semver match. The hosted images have been updated with the latest of each LTS from v8, v10, v12, and v14.

self-hosted
machines will benefit from the cache as well only downloading once. The action will pull LTS versions from node-versions releases and on miss or failure will fall back to the previous behavior of downloading directly from node dist.

The

node-version
input is optional. If not supplied, the node version that is PATH will be used. However, this action will still register problem matchers and support auth features. So setting up the node environment is still a valid scenario without downloading and caching versions.

Usage

See action.yml

Basic:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '12'
- run: npm install
- run: npm test

Check latest version:

In the basic example above, the

check-latest
flag defaults to
false
. When set to
false
, the action tries to first resolve a version of node from the local cache. For information regarding locally cached versions of Node on GitHub hosted runners, check out GitHub Actions Virtual Environments. The local version of Node in cache gets updated every couple of weeks. If unable to find a specific version in the cache, the action will then attempt to download a version of Node. Use the default or set
check-latest
to
false
if you prefer stability and if you want to ensure a specific version of Node is always used.

If

check-latest
is set to
true
, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, a version of Node will then be downloaded. Set
check-latest
to
true
it you want the most up-to-date version of Node to always be used.

Setting

check-latest
to
true
has performance implications as downloading versions of Node is slower than using cached versions
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '12'
    check-latest: true
- run: npm install
- run: npm test

Matrix Testing:

yaml
jobs:
  build:
    runs-on: ubuntu-16.04
    strategy:
      matrix:
        node: [ '10', '12' ]
    name: Node ${{ matrix.node }} sample
    steps:
      - uses: actions/[email protected]
      - name: Setup node
        uses: actions/[email protected]
        with:
          node-version: ${{ matrix.node }}
      - run: npm install
      - run: npm test

Architecture:

You can use any of the supported operating systems, and the compatible

architecture
can be selected using
architecture
. Values are
x86
,
x64
,
arm64
,
armv6l
,
armv7l
,
ppc64le
,
s390x
(not all of the architectures are available on all platforms).

When using

architecture
,
node-version
must be provided as well.
yaml
jobs:
  build:
    runs-on: windows-latest
    name: Node sample
    steps:
      - uses: actions/[email protected]
      - uses: actions/[email protected]
        with:
          node-version: '12'
          architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default
      - run: npm install
      - run: npm test

Multiple Operating Systems and Architectures:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
        node_version:
          - 10
          - 12
          - 14
        architecture:
          - x64
        # an extra windows-x86 run:
        include:
          - os: windows-2016
            node_version: 12
            architecture: x86
    name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }}
    steps:
      - uses: actions/[email protected]
      - name: Setup node
        uses: actions/[email protected]
        with:
          node-version: ${{ matrix.node_version }}
          architecture: ${{ matrix.architecture }}
      - run: npm install
      - run: npm test

Publish to npmjs and GPR with npm:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '10.x'
    registry-url: 'https://registry.npmjs.org'
- run: npm install
- run: npm publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- uses: actions/[email protected]
  with:
    registry-url: 'https://npm.pkg.github.com'
- run: npm publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Publish to npmjs and GPR with yarn:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '10.x'
    registry-url: 
- run: yarn install
- run: yarn publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }}
- uses: actions/[email protected]
  with:
    registry-url: 'https://npm.pkg.github.com'
- run: yarn publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Use private packages: ```yaml steps: - uses: actions/[email protected] - uses: actions/[email protected] with: node-version: '10.x' registry-url: 'https://registry.npmjs.org'

Skip post-install scripts here, as a malicious

script could steal NODEAUTHTOKEN.

  • run: npm install --ignore-scripts env: NODEAUTHTOKEN: ${{ secrets.NPM_TOKEN }} #
    npm rebuild
    will run all those post-install scripts for us.
  • run: npm rebuild && npm run prepare --if-present ```

License

The scripts and documentation in this project are released under the MIT License

Contributions

Contributions are welcome! See Contributor's Guide

Code of Conduct

:wave: Be nice. See our code of conduct

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.