mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-31 07:47:14 +00:00 
			
		
		
		
	Compare commits
	
		
			24 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | eb416799cf | ||
|   | 5f10e344c2 | ||
|   | 40e244d750 | ||
|   | c8711b5525 | ||
|   | d5ae932ee7 | ||
|   | 56899e050a | ||
|   | 4bb8c45053 | ||
|   | a251a519bf | ||
|   | 44c9c18728 | ||
|   | e715d9a456 | ||
|   | b1f2e78536 | ||
|   | 55897e37f3 | ||
|   | 46903d1fb1 | ||
|   | 28505ad4d3 | ||
|   | 2d53d29868 | ||
|   | 1e163ded31 | ||
|   | ffde538781 | ||
|   | 339aa41a8d | ||
|   | 641e88986e | ||
|   | e99a7e62b2 | ||
|   | 0dc69b3a71 | ||
|   | 52eb8a7524 | ||
|   | 83c9f7a7df | ||
|   | ada4b782b3 | 
							
								
								
									
										22
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @@ -28,7 +28,13 @@ jobs: | ||||
|         run: __tests__/verify-no-unstaged-changes.sh | ||||
|  | ||||
|   test: | ||||
|     runs-on: ubuntu-latest | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-latest, windows-latest] | ||||
|     defaults: | ||||
|       run: | ||||
|         shell: bash | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - name: Clear tool cache | ||||
| @@ -40,6 +46,20 @@ jobs: | ||||
|       - name: Verify node and npm | ||||
|         run: __tests__/verify-node.sh 10 | ||||
|  | ||||
|   test-fallback: | ||||
|     runs-on: windows-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - name: Clear tool cache | ||||
|         run: mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old" | ||||
|       - name: Setup node 0.12.18 # For non LTS versions of Node, the zip is not always available | ||||
|         uses: ./                 # and falls back to downloading node.exe and node.lib | ||||
|         with: | ||||
|           node-version: 0.12.18 | ||||
|       - name: Verify node | ||||
|         shell: bash | ||||
|         run: __tests__/verify-node.sh 0.12.18 SKIP_NPM | ||||
|  | ||||
|   test-proxy: | ||||
|     runs-on: ubuntu-latest | ||||
|     container: | ||||
|   | ||||
							
								
								
									
										76
									
								
								CONDUCT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								CONDUCT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| # Contributor Covenant Code of Conduct | ||||
|  | ||||
| ## Our Pledge | ||||
|  | ||||
| In the interest of fostering an open and welcoming environment, we as | ||||
| contributors and maintainers pledge to make participation in our project and | ||||
| our community a harassment-free experience for everyone, regardless of age, body | ||||
| size, disability, ethnicity, sex characteristics, gender identity and expression, | ||||
| level of experience, education, socio-economic status, nationality, personal | ||||
| appearance, race, religion, or sexual identity and orientation. | ||||
|  | ||||
| ## Our Standards | ||||
|  | ||||
| Examples of behavior that contributes to creating a positive environment | ||||
| include: | ||||
|  | ||||
| * Using welcoming and inclusive language | ||||
| * Being respectful of differing viewpoints and experiences | ||||
| * Gracefully accepting constructive criticism | ||||
| * Focusing on what is best for the community | ||||
| * Showing empathy towards other community members | ||||
|  | ||||
| Examples of unacceptable behavior by participants include: | ||||
|  | ||||
| * The use of sexualized language or imagery and unwelcome sexual attention or | ||||
|   advances | ||||
| * Trolling, insulting/derogatory comments, and personal or political attacks | ||||
| * Public or private harassment | ||||
| * Publishing others' private information, such as a physical or electronic | ||||
|   address, without explicit permission | ||||
| * Other conduct which could reasonably be considered inappropriate in a | ||||
|   professional setting | ||||
|  | ||||
| ## Our Responsibilities | ||||
|  | ||||
| Project maintainers are responsible for clarifying the standards of acceptable | ||||
| behavior and are expected to take appropriate and fair corrective action in | ||||
| response to any instances of unacceptable behavior. | ||||
|  | ||||
| Project maintainers have the right and responsibility to remove, edit, or | ||||
| reject comments, commits, code, wiki edits, issues, and other contributions | ||||
| that are not aligned to this Code of Conduct, or to ban temporarily or | ||||
| permanently any contributor for other behaviors that they deem inappropriate, | ||||
| threatening, offensive, or harmful. | ||||
|  | ||||
| ## Scope | ||||
|  | ||||
| This Code of Conduct applies within all project spaces, and it also applies when | ||||
| an individual is representing the project or its community in public spaces. | ||||
| Examples of representing a project or community include using an official | ||||
| project e-mail address, posting via an official social media account, or acting | ||||
| as an appointed representative at an online or offline event. Representation of | ||||
| a project may be further defined and clarified by project maintainers. | ||||
|  | ||||
| ## Enforcement | ||||
|  | ||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||||
| reported by contacting the project team at opensource@github.com. All | ||||
| complaints will be reviewed and investigated and will result in a response that | ||||
| is deemed necessary and appropriate to the circumstances. The project team is | ||||
| obligated to maintain confidentiality with regard to the reporter of an incident. | ||||
| Further details of specific enforcement policies may be posted separately. | ||||
|  | ||||
| Project maintainers who do not follow or enforce the Code of Conduct in good | ||||
| faith may face temporary or permanent repercussions as determined by other | ||||
| members of the project's leadership. | ||||
|  | ||||
| ## Attribution | ||||
|  | ||||
| This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, | ||||
| available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html | ||||
|  | ||||
| [homepage]: https://www.contributor-covenant.org | ||||
|  | ||||
| For answers to common questions about this code of conduct, see | ||||
| https://www.contributor-covenant.org/faq | ||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| # setup-node | ||||
| # setup-node servicing v1 | ||||
|  | ||||
| <p align="left"> | ||||
|   <a href="https://github.com/actions/setup-node"><img alt="GitHub Actions status" src="https://github.com/actions/setup-node/workflows/Main%20workflow/badge.svg"></a> | ||||
| @@ -16,7 +16,7 @@ See [action.yml](action.yml) | ||||
| Basic: | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v1 | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-node@v1 | ||||
|   with: | ||||
|     node-version: '10.x' | ||||
| @@ -34,7 +34,7 @@ jobs: | ||||
|         node: [ '10', '8' ] | ||||
|     name: Node ${{ matrix.node }} sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v1 | ||||
|       - uses: actions/checkout@v2 | ||||
|       - name: Setup node | ||||
|         uses: actions/setup-node@v1 | ||||
|         with: | ||||
| @@ -46,7 +46,7 @@ jobs: | ||||
| Publish to npmjs and GPR with npm: | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v1 | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-node@v1 | ||||
|   with: | ||||
|     node-version: '10.x' | ||||
| @@ -66,7 +66,7 @@ steps: | ||||
| Publish to npmjs and GPR with yarn: | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v1 | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-node@v1 | ||||
|   with: | ||||
|     node-version: '10.x' | ||||
| @@ -86,7 +86,7 @@ steps: | ||||
| Use private packages: | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v1 | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-node@v1 | ||||
|   with: | ||||
|     node-version: '10.x' | ||||
| @@ -108,3 +108,7 @@ The scripts and documentation in this project are released under the [MIT Licens | ||||
| # Contributions | ||||
|  | ||||
| Contributions are welcome!  See [Contributor's Guide](docs/contributors.md) | ||||
|  | ||||
| ## Code of Conduct | ||||
|  | ||||
| :wave: Be nice.  See [our code of conduct](CONDUCT) | ||||
|   | ||||
| @@ -1,8 +1,13 @@ | ||||
| import io = require('@actions/io'); | ||||
| import fs = require('fs'); | ||||
| import path = require('path'); | ||||
| import * as io from '@actions/io'; | ||||
| import * as fs from 'fs'; | ||||
| import * as path from 'path'; | ||||
| import * as auth from '../src/authutil'; | ||||
|  | ||||
| const tempDir = path.join( | ||||
| let rcFile: string; | ||||
|  | ||||
| describe('installer tests', () => { | ||||
|   beforeAll(async () => { | ||||
|     const tempDir = path.join( | ||||
|       __dirname, | ||||
|       'runner', | ||||
|       path.join( | ||||
| @@ -11,18 +16,12 @@ const tempDir = path.join( | ||||
|           .substring(7) | ||||
|       ), | ||||
|       'temp' | ||||
| ); | ||||
|  | ||||
| const rcFile = path.join(tempDir, '.npmrc'); | ||||
|  | ||||
| process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; | ||||
| process.env['RUNNER_TEMP'] = tempDir; | ||||
| import * as auth from '../src/authutil'; | ||||
|  | ||||
| describe('installer tests', () => { | ||||
|   beforeAll(async () => { | ||||
|     ); | ||||
|     await io.rmRF(tempDir); | ||||
|     await io.mkdirP(tempDir); | ||||
|     process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; | ||||
|     process.env['RUNNER_TEMP'] = tempDir; | ||||
|     rcFile = path.join(tempDir, '.npmrc'); | ||||
|   }, 100000); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|   | ||||
| @@ -1,9 +1,16 @@ | ||||
| import io = require('@actions/io'); | ||||
| import fs = require('fs'); | ||||
| import os = require('os'); | ||||
| import path = require('path'); | ||||
| import * as io from '@actions/io'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as fs from 'fs'; | ||||
| import * as os from 'os'; | ||||
| import * as path from 'path'; | ||||
| import * as installer from '../src/installer'; | ||||
|  | ||||
| const toolDir = path.join( | ||||
| const isWindows = process.platform === 'win32'; | ||||
| let toolDir: string; | ||||
|  | ||||
| describe('installer tests', () => { | ||||
|   beforeAll(async () => { | ||||
|     toolDir = path.join( | ||||
|       __dirname, | ||||
|       'runner', | ||||
|       path.join( | ||||
| @@ -12,8 +19,8 @@ const toolDir = path.join( | ||||
|           .substring(7) | ||||
|       ), | ||||
|       'tools' | ||||
| ); | ||||
| const tempDir = path.join( | ||||
|     ); | ||||
|     const tempDir = path.join( | ||||
|       __dirname, | ||||
|       'runner', | ||||
|       path.join( | ||||
| @@ -22,18 +29,11 @@ const tempDir = path.join( | ||||
|           .substring(7) | ||||
|       ), | ||||
|       'temp' | ||||
| ); | ||||
|  | ||||
| process.env['RUNNER_TOOL_CACHE'] = toolDir; | ||||
| process.env['RUNNER_TEMP'] = tempDir; | ||||
| import * as installer from '../src/installer'; | ||||
|  | ||||
| const IS_WINDOWS = process.platform === 'win32'; | ||||
|  | ||||
| describe('installer tests', () => { | ||||
|   beforeAll(async () => { | ||||
|     ); | ||||
|     await io.rmRF(toolDir); | ||||
|     await io.rmRF(tempDir); | ||||
|     process.env['RUNNER_TOOL_CACHE'] = toolDir; | ||||
|     process.env['RUNNER_TEMP'] = tempDir; | ||||
|   }, 100000); | ||||
|  | ||||
|   it('Acquires version of node if no matching version is installed', async () => { | ||||
| @@ -41,14 +41,14 @@ describe('installer tests', () => { | ||||
|     const nodeDir = path.join(toolDir, 'node', '10.16.0', os.arch()); | ||||
|  | ||||
|     expect(fs.existsSync(`${nodeDir}.complete`)).toBe(true); | ||||
|     if (IS_WINDOWS) { | ||||
|     if (isWindows) { | ||||
|       expect(fs.existsSync(path.join(nodeDir, 'node.exe'))).toBe(true); | ||||
|     } else { | ||||
|       expect(fs.existsSync(path.join(nodeDir, 'bin', 'node'))).toBe(true); | ||||
|     } | ||||
|   }, 100000); | ||||
|  | ||||
|   if (IS_WINDOWS) { | ||||
|   if (isWindows) { | ||||
|     it('Falls back to backup location if first one doesnt contain correct version', async () => { | ||||
|       await installer.getNode('5.10.1'); | ||||
|       const nodeDir = path.join(toolDir, 'node', '5.10.1', os.arch()); | ||||
| @@ -81,14 +81,15 @@ describe('installer tests', () => { | ||||
|     const nodeDir = path.join(toolDir, 'node', '8.8.1', os.arch()); | ||||
|  | ||||
|     expect(fs.existsSync(`${nodeDir}.complete`)).toBe(true); | ||||
|     if (IS_WINDOWS) { | ||||
|     if (isWindows) { | ||||
|       expect(fs.existsSync(path.join(nodeDir, 'node.exe'))).toBe(true); | ||||
|     } else { | ||||
|       expect(fs.existsSync(path.join(nodeDir, 'bin', 'node'))).toBe(true); | ||||
|     } | ||||
|   }, 100000); | ||||
|  | ||||
|   it('Uses version of node installed in cache', async () => { | ||||
|   // Usage of pre-cached Node.js is temporarily disabled. | ||||
|   xit('Uses version of node installed in cache', async () => { | ||||
|     const nodeDir: string = path.join(toolDir, 'node', '250.0.0', os.arch()); | ||||
|     await io.mkdirP(nodeDir); | ||||
|     fs.writeFileSync(`${nodeDir}.complete`, 'hello'); | ||||
| @@ -111,7 +112,8 @@ describe('installer tests', () => { | ||||
|     return; | ||||
|   }); | ||||
|  | ||||
|   it('Resolves semantic versions of node installed in cache', async () => { | ||||
|   // Usage of pre-cached Node.js is temporarily disabled. | ||||
|   xit('Resolves semantic versions of node installed in cache', async () => { | ||||
|     const nodeDir: string = path.join(toolDir, 'node', '252.0.0', os.arch()); | ||||
|     await io.mkdirP(nodeDir); | ||||
|     fs.writeFileSync(`${nodeDir}.complete`, 'hello'); | ||||
|   | ||||
| @@ -7,13 +7,17 @@ fi | ||||
|  | ||||
| node_version="$(node --version)" | ||||
| echo "Found node version '$node_version'" | ||||
| if [ -z "$(echo $node_version | grep v$1)" ]; then | ||||
| if [ -z "$(echo $node_version | grep --fixed-strings v$1)" ]; then | ||||
|   echo "Unexpected version" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| echo "Testing npm install" | ||||
| mkdir -p test-npm-install | ||||
| cd test-npm-install | ||||
| npm init -y || exit 1 | ||||
| npm install @actions/core || exit 1 | ||||
| if [ -z "$2" ]; then | ||||
|   echo "Testing npm install" | ||||
|   mkdir -p test-npm-install | ||||
|   cd test-npm-install | ||||
|   npm init -y || exit 1 | ||||
|   npm install @actions/core || exit 1 | ||||
| else | ||||
|   echo "Skip testing npm" | ||||
| fi | ||||
|   | ||||
							
								
								
									
										374
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										374
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -2883,6 +2883,32 @@ const windowsRelease = release => { | ||||
| module.exports = windowsRelease; | ||||
|  | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 82: | ||||
| /***/ (function(__unusedmodule, exports) { | ||||
|  | ||||
| "use strict"; | ||||
|  | ||||
| // We use any as a valid input type | ||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| /** | ||||
|  * Sanitizes an input into a string so it can be passed into issueCommand safely | ||||
|  * @param input input to sanitize into a string | ||||
|  */ | ||||
| function toCommandValue(input) { | ||||
|     if (input === null || input === undefined) { | ||||
|         return ''; | ||||
|     } | ||||
|     else if (typeof input === 'string' || input instanceof String) { | ||||
|         return input; | ||||
|     } | ||||
|     return JSON.stringify(input); | ||||
| } | ||||
| exports.toCommandValue = toCommandValue; | ||||
| //# sourceMappingURL=utils.js.map | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 87: | ||||
| @@ -2892,6 +2918,42 @@ module.exports = require("os"); | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 102: | ||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||
|  | ||||
| "use strict"; | ||||
|  | ||||
| // For internal use, subject to change. | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||||
|     result["default"] = mod; | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| // We use any as a valid input type | ||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||
| const fs = __importStar(__webpack_require__(747)); | ||||
| const os = __importStar(__webpack_require__(87)); | ||||
| const utils_1 = __webpack_require__(82); | ||||
| function issueCommand(command, message) { | ||||
|     const filePath = process.env[`GITHUB_${command}`]; | ||||
|     if (!filePath) { | ||||
|         throw new Error(`Unable to find environment variable for file command ${command}`); | ||||
|     } | ||||
|     if (!fs.existsSync(filePath)) { | ||||
|         throw new Error(`Missing file at path: ${filePath}`); | ||||
|     } | ||||
|     fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { | ||||
|         encoding: 'utf8' | ||||
|     }); | ||||
| } | ||||
| exports.issueCommand = issueCommand; | ||||
| //# sourceMappingURL=file-command.js.map | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 118: | ||||
| /***/ (function(module, __unusedexports, __webpack_require__) { | ||||
|  | ||||
| @@ -7596,6 +7658,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const os = __importStar(__webpack_require__(87)); | ||||
| const utils_1 = __webpack_require__(82); | ||||
| /** | ||||
|  * Commands | ||||
|  * | ||||
| @@ -7650,13 +7713,13 @@ class Command { | ||||
|     } | ||||
| } | ||||
| function escapeData(s) { | ||||
|     return (s || '') | ||||
|     return utils_1.toCommandValue(s) | ||||
|         .replace(/%/g, '%25') | ||||
|         .replace(/\r/g, '%0D') | ||||
|         .replace(/\n/g, '%0A'); | ||||
| } | ||||
| function escapeProperty(s) { | ||||
|     return (s || '') | ||||
|     return utils_1.toCommandValue(s) | ||||
|         .replace(/%/g, '%25') | ||||
|         .replace(/\r/g, '%0D') | ||||
|         .replace(/\n/g, '%0A') | ||||
| @@ -9581,6 +9644,8 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const command_1 = __webpack_require__(431); | ||||
| const file_command_1 = __webpack_require__(102); | ||||
| const utils_1 = __webpack_require__(82); | ||||
| const os = __importStar(__webpack_require__(87)); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| /** | ||||
| @@ -9603,11 +9668,21 @@ var ExitCode; | ||||
| /** | ||||
|  * Sets env variable for this action and future actions in the job | ||||
|  * @param name the name of the variable to set | ||||
|  * @param val the value of the variable | ||||
|  * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||
| function exportVariable(name, val) { | ||||
|     process.env[name] = val; | ||||
|     command_1.issueCommand('set-env', { name }, val); | ||||
|     const convertedVal = utils_1.toCommandValue(val); | ||||
|     process.env[name] = convertedVal; | ||||
|     const filePath = process.env['GITHUB_ENV'] || ''; | ||||
|     if (filePath) { | ||||
|         const delimiter = '_GitHubActionsFileCommandDelimeter_'; | ||||
|         const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; | ||||
|         file_command_1.issueCommand('ENV', commandValue); | ||||
|     } | ||||
|     else { | ||||
|         command_1.issueCommand('set-env', { name }, convertedVal); | ||||
|     } | ||||
| } | ||||
| exports.exportVariable = exportVariable; | ||||
| /** | ||||
| @@ -9623,7 +9698,13 @@ exports.setSecret = setSecret; | ||||
|  * @param inputPath | ||||
|  */ | ||||
| function addPath(inputPath) { | ||||
|     const filePath = process.env['GITHUB_PATH'] || ''; | ||||
|     if (filePath) { | ||||
|         file_command_1.issueCommand('PATH', inputPath); | ||||
|     } | ||||
|     else { | ||||
|         command_1.issueCommand('add-path', {}, inputPath); | ||||
|     } | ||||
|     process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; | ||||
| } | ||||
| exports.addPath = addPath; | ||||
| @@ -9646,12 +9727,22 @@ exports.getInput = getInput; | ||||
|  * Sets the value of an output. | ||||
|  * | ||||
|  * @param     name     name of the output to set | ||||
|  * @param     value    value to store | ||||
|  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||
| function setOutput(name, value) { | ||||
|     command_1.issueCommand('set-output', { name }, value); | ||||
| } | ||||
| exports.setOutput = setOutput; | ||||
| /** | ||||
|  * Enables or disables the echoing of commands into stdout for the rest of the step. | ||||
|  * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. | ||||
|  * | ||||
|  */ | ||||
| function setCommandEcho(enabled) { | ||||
|     command_1.issue('echo', enabled ? 'on' : 'off'); | ||||
| } | ||||
| exports.setCommandEcho = setCommandEcho; | ||||
| //----------------------------------------------------------------------- | ||||
| // Results | ||||
| //----------------------------------------------------------------------- | ||||
| @@ -9668,6 +9759,13 @@ exports.setFailed = setFailed; | ||||
| //----------------------------------------------------------------------- | ||||
| // Logging Commands | ||||
| //----------------------------------------------------------------------- | ||||
| /** | ||||
|  * Gets whether Actions Step Debug is on or not | ||||
|  */ | ||||
| function isDebug() { | ||||
|     return process.env['RUNNER_DEBUG'] === '1'; | ||||
| } | ||||
| exports.isDebug = isDebug; | ||||
| /** | ||||
|  * Writes debug message to user log | ||||
|  * @param message debug message | ||||
| @@ -9678,18 +9776,18 @@ function debug(message) { | ||||
| exports.debug = debug; | ||||
| /** | ||||
|  * Adds an error issue | ||||
|  * @param message error issue message | ||||
|  * @param message error issue message. Errors will be converted to string via toString() | ||||
|  */ | ||||
| function error(message) { | ||||
|     command_1.issue('error', message); | ||||
|     command_1.issue('error', message instanceof Error ? message.toString() : message); | ||||
| } | ||||
| exports.error = error; | ||||
| /** | ||||
|  * Adds an warning issue | ||||
|  * @param message warning issue message | ||||
|  * @param message warning issue message. Errors will be converted to string via toString() | ||||
|  */ | ||||
| function warning(message) { | ||||
|     command_1.issue('warning', message); | ||||
|     command_1.issue('warning', message instanceof Error ? message.toString() : message); | ||||
| } | ||||
| exports.warning = warning; | ||||
| /** | ||||
| @@ -9747,8 +9845,9 @@ exports.group = group; | ||||
|  * Saves state for current action, the state can only be retrieved by this action's post job execution. | ||||
|  * | ||||
|  * @param     name     name of the state to store | ||||
|  * @param     value    value to store | ||||
|  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||
| function saveState(name, value) { | ||||
|     command_1.issueCommand('save-state', { name }, value); | ||||
| } | ||||
| @@ -10096,9 +10195,12 @@ const os = __importStar(__webpack_require__(87)); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| const httpm = __importStar(__webpack_require__(539)); | ||||
| const semver = __importStar(__webpack_require__(280)); | ||||
| const stream = __importStar(__webpack_require__(794)); | ||||
| const util = __importStar(__webpack_require__(669)); | ||||
| const v4_1 = __importDefault(__webpack_require__(826)); | ||||
| const exec_1 = __webpack_require__(986); | ||||
| const assert_1 = __webpack_require__(357); | ||||
| const retry_helper_1 = __webpack_require__(979); | ||||
| class HTTPError extends Error { | ||||
|     constructor(httpStatusCode) { | ||||
|         super(`Unexpected HTTP response: ${httpStatusCode}`); | ||||
| @@ -10109,31 +10211,6 @@ class HTTPError extends Error { | ||||
| exports.HTTPError = HTTPError; | ||||
| const IS_WINDOWS = process.platform === 'win32'; | ||||
| const userAgent = 'actions/tool-cache'; | ||||
| // On load grab temp directory and cache directory and remove them from env (currently don't want to expose this) | ||||
| let tempDirectory = process.env['RUNNER_TEMP'] || ''; | ||||
| let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; | ||||
| // If directories not found, place them in common temp locations | ||||
| if (!tempDirectory || !cacheRoot) { | ||||
|     let baseLocation; | ||||
|     if (IS_WINDOWS) { | ||||
|         // On windows use the USERPROFILE env variable | ||||
|         baseLocation = process.env['USERPROFILE'] || 'C:\\'; | ||||
|     } | ||||
|     else { | ||||
|         if (process.platform === 'darwin') { | ||||
|             baseLocation = '/Users'; | ||||
|         } | ||||
|         else { | ||||
|             baseLocation = '/home'; | ||||
|         } | ||||
|     } | ||||
|     if (!tempDirectory) { | ||||
|         tempDirectory = path.join(baseLocation, 'actions', 'temp'); | ||||
|     } | ||||
|     if (!cacheRoot) { | ||||
|         cacheRoot = path.join(baseLocation, 'actions', 'cache'); | ||||
|     } | ||||
| } | ||||
| /** | ||||
|  * Download a tool from an url and stream it into a file | ||||
|  * | ||||
| @@ -10143,52 +10220,71 @@ if (!tempDirectory || !cacheRoot) { | ||||
|  */ | ||||
| function downloadTool(url, dest) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         // Wrap in a promise so that we can resolve from within stream callbacks | ||||
|         return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { | ||||
|             try { | ||||
|                 const http = new httpm.HttpClient(userAgent, [], { | ||||
|                     allowRetries: true, | ||||
|                     maxRetries: 3 | ||||
|                 }); | ||||
|                 dest = dest || path.join(tempDirectory, v4_1.default()); | ||||
|         dest = dest || path.join(_getTempDirectory(), v4_1.default()); | ||||
|         yield io.mkdirP(path.dirname(dest)); | ||||
|         core.debug(`Downloading ${url}`); | ||||
|                 core.debug(`Downloading ${dest}`); | ||||
|         core.debug(`Destination ${dest}`); | ||||
|         const maxAttempts = 3; | ||||
|         const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10); | ||||
|         const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); | ||||
|         const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); | ||||
|         return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { | ||||
|             return yield downloadToolAttempt(url, dest || ''); | ||||
|         }), (err) => { | ||||
|             if (err instanceof HTTPError && err.httpStatusCode) { | ||||
|                 // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests | ||||
|                 if (err.httpStatusCode < 500 && | ||||
|                     err.httpStatusCode !== 408 && | ||||
|                     err.httpStatusCode !== 429) { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|             // Otherwise retry | ||||
|             return true; | ||||
|         }); | ||||
|     }); | ||||
| } | ||||
| exports.downloadTool = downloadTool; | ||||
| function downloadToolAttempt(url, dest) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         if (fs.existsSync(dest)) { | ||||
|             throw new Error(`Destination file path ${dest} already exists`); | ||||
|         } | ||||
|         // Get the response headers | ||||
|         const http = new httpm.HttpClient(userAgent, [], { | ||||
|             allowRetries: false | ||||
|         }); | ||||
|         const response = yield http.get(url); | ||||
|         if (response.message.statusCode !== 200) { | ||||
|             const err = new HTTPError(response.message.statusCode); | ||||
|             core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); | ||||
|             throw err; | ||||
|         } | ||||
|                 const file = fs.createWriteStream(dest); | ||||
|                 file.on('open', () => __awaiter(this, void 0, void 0, function* () { | ||||
|         // Download the response body | ||||
|         const pipeline = util.promisify(stream.pipeline); | ||||
|         const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message); | ||||
|         const readStream = responseMessageFactory(); | ||||
|         let succeeded = false; | ||||
|         try { | ||||
|                         const stream = response.message.pipe(file); | ||||
|                         stream.on('close', () => { | ||||
|             yield pipeline(readStream, fs.createWriteStream(dest)); | ||||
|             core.debug('download complete'); | ||||
|                             resolve(dest); | ||||
|                         }); | ||||
|             succeeded = true; | ||||
|             return dest; | ||||
|         } | ||||
|         finally { | ||||
|             // Error, delete dest before retry | ||||
|             if (!succeeded) { | ||||
|                 core.debug('download failed'); | ||||
|                 try { | ||||
|                     yield io.rmRF(dest); | ||||
|                 } | ||||
|                 catch (err) { | ||||
|                         core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); | ||||
|                         reject(err); | ||||
|                     core.debug(`Failed to delete '${dest}'. ${err.message}`); | ||||
|                 } | ||||
|                 })); | ||||
|                 file.on('error', err => { | ||||
|                     file.end(); | ||||
|                     reject(err); | ||||
|                 }); | ||||
|             } | ||||
|             catch (err) { | ||||
|                 reject(err); | ||||
|         } | ||||
|         })); | ||||
|     }); | ||||
| } | ||||
| exports.downloadTool = downloadTool; | ||||
| /** | ||||
|  * Extract a .7z file | ||||
|  * | ||||
| @@ -10278,14 +10374,17 @@ function extractTar(file, dest, flags = 'xz') { | ||||
|         // Create dest | ||||
|         dest = yield _createExtractFolder(dest); | ||||
|         // Determine whether GNU tar | ||||
|         core.debug('Checking tar --version'); | ||||
|         let versionOutput = ''; | ||||
|         yield exec_1.exec('tar --version', [], { | ||||
|             ignoreReturnCode: true, | ||||
|             silent: true, | ||||
|             listeners: { | ||||
|                 stdout: (data) => (versionOutput += data.toString()), | ||||
|                 stderr: (data) => (versionOutput += data.toString()) | ||||
|             } | ||||
|         }); | ||||
|         core.debug(versionOutput.trim()); | ||||
|         const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); | ||||
|         // Initialize args | ||||
|         const args = [flags]; | ||||
| @@ -10446,7 +10545,7 @@ function find(toolName, versionSpec, arch) { | ||||
|     let toolPath = ''; | ||||
|     if (versionSpec) { | ||||
|         versionSpec = semver.clean(versionSpec) || ''; | ||||
|         const cachePath = path.join(cacheRoot, toolName, versionSpec, arch); | ||||
|         const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch); | ||||
|         core.debug(`checking cache: ${cachePath}`); | ||||
|         if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { | ||||
|             core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); | ||||
| @@ -10468,7 +10567,7 @@ exports.find = find; | ||||
| function findAllVersions(toolName, arch) { | ||||
|     const versions = []; | ||||
|     arch = arch || os.arch(); | ||||
|     const toolPath = path.join(cacheRoot, toolName); | ||||
|     const toolPath = path.join(_getCacheDirectory(), toolName); | ||||
|     if (fs.existsSync(toolPath)) { | ||||
|         const children = fs.readdirSync(toolPath); | ||||
|         for (const child of children) { | ||||
| @@ -10487,7 +10586,7 @@ function _createExtractFolder(dest) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         if (!dest) { | ||||
|             // create a temp dir | ||||
|             dest = path.join(tempDirectory, v4_1.default()); | ||||
|             dest = path.join(_getTempDirectory(), v4_1.default()); | ||||
|         } | ||||
|         yield io.mkdirP(dest); | ||||
|         return dest; | ||||
| @@ -10495,7 +10594,7 @@ function _createExtractFolder(dest) { | ||||
| } | ||||
| function _createToolPath(tool, version, arch) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); | ||||
|         const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); | ||||
|         core.debug(`destination ${folderPath}`); | ||||
|         const markerPath = `${folderPath}.complete`; | ||||
|         yield io.rmRF(folderPath); | ||||
| @@ -10505,7 +10604,7 @@ function _createToolPath(tool, version, arch) { | ||||
|     }); | ||||
| } | ||||
| function _completeToolPath(tool, version, arch) { | ||||
|     const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); | ||||
|     const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); | ||||
|     const markerPath = `${folderPath}.complete`; | ||||
|     fs.writeFileSync(markerPath, ''); | ||||
|     core.debug('finished caching tool'); | ||||
| @@ -10542,6 +10641,31 @@ function _evaluateVersions(versions, versionSpec) { | ||||
|     } | ||||
|     return version; | ||||
| } | ||||
| /** | ||||
|  * Gets RUNNER_TOOL_CACHE | ||||
|  */ | ||||
| function _getCacheDirectory() { | ||||
|     const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; | ||||
|     assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); | ||||
|     return cacheDirectory; | ||||
| } | ||||
| /** | ||||
|  * Gets RUNNER_TEMP | ||||
|  */ | ||||
| function _getTempDirectory() { | ||||
|     const tempDirectory = process.env['RUNNER_TEMP'] || ''; | ||||
|     assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); | ||||
|     return tempDirectory; | ||||
| } | ||||
| /** | ||||
|  * Gets a global variable | ||||
|  */ | ||||
| function _getGlobal(key, defaultValue) { | ||||
|     /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||
|     const value = global[key]; | ||||
|     /* eslint-enable @typescript-eslint/no-explicit-any */ | ||||
|     return value !== undefined ? value : defaultValue; | ||||
| } | ||||
| //# sourceMappingURL=tool-cache.js.map | ||||
|  | ||||
| /***/ }), | ||||
| @@ -12091,8 +12215,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| // Load tempDirectory before it gets wiped by tool-cache | ||||
| let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | ||||
| const assert = __importStar(__webpack_require__(357)); | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| const hc = __importStar(__webpack_require__(539)); | ||||
| const io = __importStar(__webpack_require__(1)); | ||||
| @@ -12102,29 +12225,14 @@ const path = __importStar(__webpack_require__(622)); | ||||
| const semver = __importStar(__webpack_require__(280)); | ||||
| let osPlat = os.platform(); | ||||
| let osArch = translateArchToDistUrl(os.arch()); | ||||
| if (!tempDirectory) { | ||||
|     let baseLocation; | ||||
|     if (process.platform === 'win32') { | ||||
|         // On windows use the USERPROFILE env variable | ||||
|         baseLocation = process.env['USERPROFILE'] || 'C:\\'; | ||||
|     } | ||||
|     else { | ||||
|         if (process.platform === 'darwin') { | ||||
|             baseLocation = '/Users'; | ||||
|         } | ||||
|         else { | ||||
|             baseLocation = '/home'; | ||||
|         } | ||||
|     } | ||||
|     tempDirectory = path.join(baseLocation, 'actions', 'temp'); | ||||
| } | ||||
| function getNode(versionSpec) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         // check cache | ||||
|         let toolPath; | ||||
|         toolPath = tc.find('node', versionSpec); | ||||
|         // If not found in cache, download | ||||
|         if (!toolPath) { | ||||
|         // Usage of pre-cached Node.js is temporarily disabled. | ||||
|         if (true) { | ||||
|             let version; | ||||
|             const c = semver.clean(versionSpec) || ''; | ||||
|             // If explicit version | ||||
| @@ -12141,7 +12249,8 @@ function getNode(versionSpec) { | ||||
|                 // check cache | ||||
|                 toolPath = tc.find('node', version); | ||||
|             } | ||||
|             if (!toolPath) { | ||||
|             // Usage of pre-cached Node.js is temporarily disabled. | ||||
|             if (true) { | ||||
|                 // download, extract, cache | ||||
|                 toolPath = yield acquireNode(version); | ||||
|             } | ||||
| @@ -12235,6 +12344,7 @@ function acquireNode(version) { | ||||
|         let downloadUrl = `https://nodejs.org/dist/v${version}/${urlFileName}`; | ||||
|         let downloadPath; | ||||
|         try { | ||||
|             core.info(`Downloading ${downloadUrl}`); | ||||
|             downloadPath = yield tc.downloadTool(downloadUrl); | ||||
|         } | ||||
|         catch (err) { | ||||
| @@ -12276,8 +12386,10 @@ function acquireNode(version) { | ||||
| function acquireNodeFromFallbackLocation(version) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         // Create temporary folder to download in to | ||||
|         let tempDownloadFolder = 'temp_' + Math.floor(Math.random() * 2000000000); | ||||
|         let tempDir = path.join(tempDirectory, tempDownloadFolder); | ||||
|         const tempDownloadFolder = 'temp_' + Math.floor(Math.random() * 2000000000); | ||||
|         const tempDirectory = process.env['RUNNER_TEMP'] || ''; | ||||
|         assert.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); | ||||
|         const tempDir = path.join(tempDirectory, tempDownloadFolder); | ||||
|         yield io.mkdirP(tempDir); | ||||
|         let exeUrl; | ||||
|         let libUrl; | ||||
| @@ -15191,6 +15303,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| const exec = __importStar(__webpack_require__(986)); | ||||
| const installer = __importStar(__webpack_require__(749)); | ||||
| const auth = __importStar(__webpack_require__(202)); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| @@ -15208,6 +15321,12 @@ function run() { | ||||
|             if (version) { | ||||
|                 yield installer.getNode(version); | ||||
|             } | ||||
|             // Output version of node and npm that are being used | ||||
|             yield exec.exec('node', ['--version']); | ||||
|             // Older versions of Node don't include npm, so don't let this call fail | ||||
|             yield exec.exec('npm', ['--version'], { | ||||
|                 ignoreReturnCode: true | ||||
|             }); | ||||
|             const registryUrl = core.getInput('registry-url'); | ||||
|             const alwaysAuth = core.getInput('always-auth'); | ||||
|             if (registryUrl) { | ||||
| @@ -15815,6 +15934,83 @@ function onceStrict (fn) { | ||||
| } | ||||
|  | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 979: | ||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||
|  | ||||
| "use strict"; | ||||
|  | ||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||
|     return new (P || (P = Promise))(function (resolve, reject) { | ||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||
|     }); | ||||
| }; | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||||
|     result["default"] = mod; | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| /** | ||||
|  * Internal class for retries | ||||
|  */ | ||||
| class RetryHelper { | ||||
|     constructor(maxAttempts, minSeconds, maxSeconds) { | ||||
|         if (maxAttempts < 1) { | ||||
|             throw new Error('max attempts should be greater than or equal to 1'); | ||||
|         } | ||||
|         this.maxAttempts = maxAttempts; | ||||
|         this.minSeconds = Math.floor(minSeconds); | ||||
|         this.maxSeconds = Math.floor(maxSeconds); | ||||
|         if (this.minSeconds > this.maxSeconds) { | ||||
|             throw new Error('min seconds should be less than or equal to max seconds'); | ||||
|         } | ||||
|     } | ||||
|     execute(action, isRetryable) { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             let attempt = 1; | ||||
|             while (attempt < this.maxAttempts) { | ||||
|                 // Try | ||||
|                 try { | ||||
|                     return yield action(); | ||||
|                 } | ||||
|                 catch (err) { | ||||
|                     if (isRetryable && !isRetryable(err)) { | ||||
|                         throw err; | ||||
|                     } | ||||
|                     core.info(err.message); | ||||
|                 } | ||||
|                 // Sleep | ||||
|                 const seconds = this.getSleepAmount(); | ||||
|                 core.info(`Waiting ${seconds} seconds before trying again`); | ||||
|                 yield this.sleep(seconds); | ||||
|                 attempt++; | ||||
|             } | ||||
|             // Last attempt | ||||
|             return yield action(); | ||||
|         }); | ||||
|     } | ||||
|     getSleepAmount() { | ||||
|         return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) + | ||||
|             this.minSeconds); | ||||
|     } | ||||
|     sleep(seconds) { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             return new Promise(resolve => setTimeout(resolve, seconds * 1000)); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
| exports.RetryHelper = RetryHelper; | ||||
| //# sourceMappingURL=retry-helper.js.map | ||||
|  | ||||
| /***/ }), | ||||
|  | ||||
| /***/ 986: | ||||
|   | ||||
							
								
								
									
										1278
									
								
								dist/licenses.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1278
									
								
								dist/licenses.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -5,9 +5,9 @@ | ||||
|   "requires": true, | ||||
|   "dependencies": { | ||||
|     "@actions/core": { | ||||
|       "version": "1.2.2", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.2.tgz", | ||||
|       "integrity": "sha512-IbCx7oefq+Gi6FWbSs2Fnw8VkEI6Y4gvjrYprY3RV//ksq/KPMlClOerJ4jRosyal6zkUIc8R9fS/cpRMlGClg==" | ||||
|       "version": "1.2.6", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", | ||||
|       "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" | ||||
|     }, | ||||
|     "@actions/exec": { | ||||
|       "version": "1.0.3", | ||||
| @@ -40,9 +40,9 @@ | ||||
|       "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" | ||||
|     }, | ||||
|     "@actions/tool-cache": { | ||||
|       "version": "1.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.3.1.tgz", | ||||
|       "integrity": "sha512-sKoEJv0/c7WzjPEq2PO12Sc8QdEp58XIBHMm3c4lUn/iZWgLz9HBeCuFGpLQjDvXJNfLZ4g+WD+rMjgOmpH4Ag==", | ||||
|       "version": "1.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.3.3.tgz", | ||||
|       "integrity": "sha512-AFVyTLcIxusDVI1gMhbZW8m/On7YNJG+xYaxorV+qic+f7lO7h37aT2mfzxqAq7mwHxtP1YlVFNrXe9QDf/bPg==", | ||||
|       "requires": { | ||||
|         "@actions/core": "^1.2.0", | ||||
|         "@actions/exec": "^1.0.0", | ||||
| @@ -738,9 +738,9 @@ | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "acorn": { | ||||
|           "version": "6.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", | ||||
|           "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", | ||||
|           "version": "6.4.1", | ||||
|           "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", | ||||
|           "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", | ||||
|           "dev": true | ||||
|         } | ||||
|       } | ||||
| @@ -3484,9 +3484,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "kind-of": { | ||||
|       "version": "6.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", | ||||
|       "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", | ||||
|       "version": "6.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", | ||||
|       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "kleur": { | ||||
|   | ||||
| @@ -23,11 +23,12 @@ | ||||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.2.2", | ||||
|     "@actions/core": "^1.2.6", | ||||
|     "@actions/exec": "^1.0.3", | ||||
|     "@actions/github": "^1.1.0", | ||||
|     "@actions/http-client": "^1.0.6", | ||||
|     "@actions/io": "^1.0.2", | ||||
|     "@actions/tool-cache": "^1.3.1", | ||||
|     "@actions/tool-cache": "^1.3.3", | ||||
|     "semver": "^6.1.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|   | ||||
| @@ -1,5 +1,3 @@ | ||||
| // Load tempDirectory before it gets wiped by tool-cache | ||||
| let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | ||||
| import * as assert from 'assert'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as hc from '@actions/http-client'; | ||||
| @@ -12,21 +10,6 @@ import * as semver from 'semver'; | ||||
| let osPlat: string = os.platform(); | ||||
| let osArch: string = translateArchToDistUrl(os.arch()); | ||||
|  | ||||
| if (!tempDirectory) { | ||||
|   let baseLocation; | ||||
|   if (process.platform === 'win32') { | ||||
|     // On windows use the USERPROFILE env variable | ||||
|     baseLocation = process.env['USERPROFILE'] || 'C:\\'; | ||||
|   } else { | ||||
|     if (process.platform === 'darwin') { | ||||
|       baseLocation = '/Users'; | ||||
|     } else { | ||||
|       baseLocation = '/home'; | ||||
|     } | ||||
|   } | ||||
|   tempDirectory = path.join(baseLocation, 'actions', 'temp'); | ||||
| } | ||||
|  | ||||
| // | ||||
| // Node versions interface | ||||
| // see https://nodejs.org/dist/index.json | ||||
| @@ -42,7 +25,8 @@ export async function getNode(versionSpec: string) { | ||||
|   toolPath = tc.find('node', versionSpec); | ||||
|  | ||||
|   // If not found in cache, download | ||||
|   if (!toolPath) { | ||||
|   // Usage of pre-cached Node.js is temporarily disabled. | ||||
|   if (true) { | ||||
|     let version: string; | ||||
|     const c = semver.clean(versionSpec) || ''; | ||||
|     // If explicit version | ||||
| @@ -62,7 +46,8 @@ export async function getNode(versionSpec: string) { | ||||
|       toolPath = tc.find('node', version); | ||||
|     } | ||||
|  | ||||
|     if (!toolPath) { | ||||
|     // Usage of pre-cached Node.js is temporarily disabled. | ||||
|     if (true) { | ||||
|       // download, extract, cache | ||||
|       toolPath = await acquireNode(version); | ||||
|     } | ||||
| @@ -163,6 +148,7 @@ async function acquireNode(version: string): Promise<string> { | ||||
|   let downloadPath: string; | ||||
|  | ||||
|   try { | ||||
|     core.info(`Downloading ${downloadUrl}`); | ||||
|     downloadPath = await tc.downloadTool(downloadUrl); | ||||
|   } catch (err) { | ||||
|     if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { | ||||
| @@ -206,9 +192,11 @@ async function acquireNodeFromFallbackLocation( | ||||
|   version: string | ||||
| ): Promise<string> { | ||||
|   // Create temporary folder to download in to | ||||
|   let tempDownloadFolder: string = | ||||
|   const tempDownloadFolder: string = | ||||
|     'temp_' + Math.floor(Math.random() * 2000000000); | ||||
|   let tempDir: string = path.join(tempDirectory, tempDownloadFolder); | ||||
|   const tempDirectory = process.env['RUNNER_TEMP'] || ''; | ||||
|   assert.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); | ||||
|   const tempDir: string = path.join(tempDirectory, tempDownloadFolder); | ||||
|   await io.mkdirP(tempDir); | ||||
|   let exeUrl: string; | ||||
|   let libUrl: string; | ||||
|   | ||||
| @@ -1,4 +1,6 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import * as io from '@actions/io'; | ||||
| import * as installer from './installer'; | ||||
| import * as auth from './authutil'; | ||||
| import * as path from 'path'; | ||||
| @@ -17,6 +19,14 @@ async function run() { | ||||
|       await installer.getNode(version); | ||||
|     } | ||||
|  | ||||
|     // Output version of node and npm that are being used | ||||
|     await exec.exec('node', ['--version']); | ||||
|  | ||||
|     // Older versions of Node don't include npm, so don't let this call fail | ||||
|     await exec.exec('npm', ['--version'], { | ||||
|       ignoreReturnCode: true | ||||
|     }); | ||||
|  | ||||
|     const registryUrl: string = core.getInput('registry-url'); | ||||
|     const alwaysAuth: string = core.getInput('always-auth'); | ||||
|     if (registryUrl) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user