133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # Advanced usage
 | ||
|  | 
 | ||
|  | ### Check latest version:
 | ||
|  | 
 | ||
|  | The `check-latest` flag defaults to `false`. When set to `false`, 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](https://github.com/actions/node-versions/releases) and on miss or failure will fall back to the previous behavior of downloading directly from [node dist](https://nodejs.org/dist/). Use the default or set `check-latest` to `false` if you prefer stability and if you want to ensure a specific version of Node.js 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.js will then be downloaded. Set `check-latest` to `true` it you want the most up-to-date version of Node.js to always be used. | ||
|  | 
 | ||
|  | > Setting `check-latest` to `true` has performance implications as downloading versions of Node is slower than using cached versions.
 | ||
|  | 
 | ||
|  | ```yaml | ||
|  | steps: | ||
|  | - uses: actions/checkout@v2 | ||
|  | - uses: actions/setup-node@v2 | ||
|  |   with: | ||
|  |     node-version: '14' | ||
|  |     check-latest: true | ||
|  | - run: npm install | ||
|  | - run: npm test | ||
|  | ``` | ||
|  | 
 | ||
|  | ### Architecture:
 | ||
|  | 
 | ||
|  | You can use any of the [supported operating systems](https://docs.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners), 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/checkout@v2 | ||
|  |       - uses: actions/setup-node@v2 | ||
|  |         with: | ||
|  |           node-version: '14' | ||
|  |           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:
 | ||
|  | 
 | ||
|  | ```yaml | ||
|  | 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:
 | ||
|  | ```yaml | ||
|  | steps: | ||
|  | - uses: actions/checkout@v2 | ||
|  | - uses: actions/setup-node@v2 | ||
|  |   with: | ||
|  |     node-version: '14.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:
 | ||
|  | ```yaml | ||
|  | steps: | ||
|  | - uses: actions/checkout@v2 | ||
|  | - uses: actions/setup-node@v2 | ||
|  |   with: | ||
|  |     node-version: '14.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:
 | ||
|  | ```yaml | ||
|  | steps: | ||
|  | - uses: actions/checkout@v2 | ||
|  | - uses: actions/setup-node@v2 | ||
|  |   with: | ||
|  |     node-version: '14.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 | ||
|  | ``` |