You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Marko Zivic 5b949b50c3
Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file
Add support for asdf format as Node.js version file
3 years ago
.github Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
.licenses/npm update licenses 3 years ago
.vscode download from node-versions and fallback to node dist (#147) 5 years ago
__tests__ Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
dist Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
docs Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
externals Initial Import 6 years ago
src Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
.gitattributes remove eol in gitattributes 4 years ago
.gitignore download from node-versions and fallback to node dist (#147) 5 years ago
.licensed.yml regenerate license (#7) 4 years ago
.prettierrc.json Initial Import 6 years ago
CODEOWNERS Update CODEOWNERS to actions-service 3 years ago
CODE_OF_CONDUCT.md Convert CONDUCT to CODE_OF_CONDUCT.md (#391) 3 years ago
LICENSE Initial Import 6 years ago
README.md README.md: Encourage testing on current Node.js (#533) 3 years ago
action.yml Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file 3 years ago
jest.config.js Initial Import 6 years ago
package-lock.json Update the version of @actions/cache library to 3.0.0 3 years ago
package.json Update unit-tests for cache-save.ts file, add coverage option to Jest 3 years ago
tsconfig.json fix tsc build error for @actions/http-client (#402) 3 years ago

README.md

setup-node

build-test versions proxy

This action provides the following functionality for GitHub Actions users:

  • Optionally downloading and caching distribution of the requested Node.js version, and adding it to the PATH
  • Optionally caching npm/yarn/pnpm dependencies
  • Registering problem matchers for error output
  • Configuring authentication for GPR or npm

Usage

See action.yml

Basic:

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
  with:
    node-version: 16
- run: npm ci
- run: npm test

The node-version input is optional. If not supplied, the node version from PATH will be used. However, it is recommended to always specify Node.js version and don't rely on the system one.

The action will first check the local cache for a semver match. If unable to find a specific version in the cache, the action will attempt to download a version of Node.js. It 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.

For information regarding locally cached versions of Node.js on GitHub hosted runners, check out GitHub Actions Virtual Environments.

Supported version syntax

The node-version input supports the Semantic Versioning Specification, for more detailed examples please refer to the documentation.

Examples:

  • Major versions: 14, 16, 18
  • More specific versions: 10.15, 16.15.1 , 18.4.0
  • NVM LTS syntax: lts/erbium, lts/fermium, lts/*, lts/-n
  • Latest release: * or latest/current/node

Note: Like the other values, * will get the latest locally-cached Node.js version, or the latest version from actions/node-versions, depending on the check-latest input.

current/latest/node always resolve to the latest dist version. That version is then downloaded from actions/node-versions if possible, or directly from Node.js if not. Since it will not be cached always, there is possibility of hitting rate limit when downloading from dist

Checking in lockfiles

It's always recommended to commit the lockfile of your package manager for security and performance reasons. For more information consult the "Working with lockfiles" section of the Advanced usage guide.

Caching global packages data

The action has a built-in functionality for caching and restoring dependencies. It uses actions/cache under the hood for caching global packages data but requires less configuration settings. Supported package managers are npm, yarn, pnpm (v6.10+). The cache input is optional, and caching is turned off by default.

The action defaults to search for the dependency file (package-lock.json, npm-shrinkwrap.json or yarn.lock) in the repository root, and uses its hash as a part of the cache key. Use cache-dependency-path for cases when multiple dependency files are used, or they are located in different subdirectories.

Note: The action does not cache node_modules

See the examples of using cache for yarn/pnpm and cache-dependency-path input in the Advanced usage guide.

Caching npm dependencies:

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
  with:
    node-version: 16
    cache: 'npm'
- run: npm ci
- run: npm test

Caching npm dependencies in monorepos:

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
  with:
    node-version: 16
    cache: 'npm'
    cache-dependency-path: subdir/package-lock.json
- run: npm ci
- run: npm test

Matrix Testing

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [ 14, 16, 18 ]
    name: Node ${{ matrix.node }} sample
    steps:
      - uses: actions/checkout@v3
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci
      - run: npm test

Advanced usage

  1. Check latest version
  2. Using a node version file
  3. Using different architectures
  4. Caching packages data
  5. Using multiple operating systems and architectures
  6. Publishing to npmjs and GPR with npm
  7. Publishing to npmjs and GPR with yarn
  8. Using private packages

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