Set up your GitHub Actions workflow with a specific version of node.js
Go to file Use this template
Konrad Pabjan 60c1140889
Clarifications to the README (#167)
* Update README.md

* Update README.md

Co-authored-by: Bryan MacFarlane <bryanmacfarlane@github.com>
2021-01-20 11:27:33 -05:00
.github Implement "check-latest" flag to check if pre-cached version is latest one (#165) 2020-06-29 14:56:37 -04:00
.vscode download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
__tests__ Implement "check-latest" flag to check if pre-cached version is latest one (#165) 2020-06-29 14:56:37 -04:00
dist Switch from "master" to "main" branch (#171) 2020-07-20 12:50:59 -04:00
docs Initial Import 2019-08-03 21:49:54 -04:00
externals Initial Import 2019-08-03 21:49:54 -04:00
src Switch from "master" to "main" branch (#171) 2020-07-20 12:50:59 -04:00
validate download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.gitignore download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.prettierrc.json Initial Import 2019-08-03 21:49:54 -04:00
CONDUCT add code of conduct 2020-04-16 14:00:00 -04:00
LICENSE Initial Import 2019-08-03 21:49:54 -04:00
README.md Clarifications to the README (#167) 2021-01-20 11:27:33 -05:00
action.yml Implement "check-latest" flag to check if pre-cached version is latest one (#165) 2020-06-29 14:56:37 -04:00
jest.config.js Initial Import 2019-08-03 21:49:54 -04:00
package-lock.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
package.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
tsconfig.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00

README.md

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-beta

A beta release which adds reliability for pulling node distributions from a cache of node releases is available by referencing the v2-beta tag.

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

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
  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/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@v1
        with:
          node-version: ${{ matrix.node }}
      - run: npm install
      - run: npm test

Publish to npmjs and GPR with npm:

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