Set up your GitHub Actions workflow with a specific version of node.js
Find a file
2020-12-16 12:31:13 +03:00
.github Update build-test.yml 2020-12-15 13:38:55 +03:00
.licenses/npm Swap to env files (#200) 2020-10-01 12:03:22 -04:00
.vscode download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
__tests__ Merge branch 'main' of github.com:actions/setup-node into main 2020-12-15 11:52:46 -06:00
dist Merge branch 'main' of github.com:actions/setup-node into main 2020-12-15 11:52:46 -06:00
docs Initial Import 2019-08-03 21:49:54 -04:00
externals Initial Import 2019-08-03 21:49:54 -04:00
src Merge branch 'main' of github.com:actions/setup-node into main 2020-12-15 11:52:46 -06:00
validate download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.gitattributes Merge branch 'main' into arch 2020-09-15 21:30:00 -05:00
.gitignore download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.licensed.yml Add Licensed To Help Verify Prod Licenses (#180) 2020-09-10 09:23:54 -04:00
.prettierrc.json Initial Import 2019-08-03 21:49:54 -04:00
action.yml Rename node-arch to architecture 2020-12-08 16:24:02 -06:00
CODEOWNERS Add CODEOWNERS 2020-12-07 16:08:14 -05:00
CONDUCT add code of conduct 2020-04-16 14:00:00 -04:00
jest.config.js Initial Import 2019-08-03 21:49:54 -04:00
LICENSE Initial Import 2019-08-03 21:49:54 -04:00
package-lock.json Swap to env files (#200) 2020-10-01 12:03:22 -04:00
package.json Swap to env files (#200) 2020-10-01 12:03:22 -04:00
README.md Update README.md 2020-12-15 13:36:18 +03:00
tsconfig.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00

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/checkout@v2
- uses: actions/setup-node@v2
  with:
    node-version: '12'

It 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. It will pull LTS versions from main branch of node-versions repository and on miss or failure, it will fall back to the previous behavior of download directly from node dist.

The node-version input is optional. If not supplied, node which is in your 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:

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
  with:
    node-version: '12'
- run: npm install
- run: npm test

Check latest version:

In basic example, without check-latest flag, the action tries to resolve version from local cache firstly and download only if it is not found. Local cache on image is updated with a couple of weeks latency.
check-latest flag forces the action to check if the cached version is the latest one. It reduces latency significantly but it is much more likely to incur version downloading.

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
  with:
    node-version: '12'
    check-latest: true
- run: npm install
- run: npm test

Matrix Testing:

jobs:
  build:
    runs-on: ubuntu-16.04
    strategy:
      matrix:
        node: [ '10', '12' ]
    name: Node ${{ matrix.node }} sample
    steps:
      - uses: actions/checkout@v2
      - name: Setup node
        uses: actions/setup-node@v2
        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.

jobs:
  build:
    runs-on: windows-latest
    name: Node sample
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        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/checkout@v2
      - name: Setup node
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node_version }}
          architecture: ${{ matrix.architecture }}
      - run: npm install
      - run: npm test

Publish to npmjs and GPR with npm:

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
  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/setup-node@v2
  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:

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
  with:
    node-version: '10.x'
    registry-url: <registry url>
- run: yarn install
- run: yarn publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }}
- uses: actions/setup-node@v2
  with:
    registry-url: 'https://npm.pkg.github.com'
- run: yarn publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Use private packages:

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
  with:
    node-version: '10.x'
    registry-url: 'https://registry.npmjs.org'
# Skip post-install scripts here, as a malicious
# script could steal NODE_AUTH_TOKEN.
- run: npm install --ignore-scripts
  env:
    NODE_AUTH_TOKEN: ${{ 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

👋 Be nice. See our code of conduct