mirror of
				https://kkgithub.com/actions/setup-python.git
				synced 2025-11-01 03:01:51 +08:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 24156c231c | |||
| 212e83ff58 | |||
| 0c28554988 | |||
| 7010ec794f | |||
| 306c473438 | |||
| 7a69c2bc7d | |||
| 654aa00a6e | |||
| 6f45e887f6 | |||
| 2989dc4a1a | |||
| a0a76c4ddb | |||
| 2241d846ba | 
							
								
								
									
										31
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ name: Validate 'setup-python' | ||||
| on:  | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|       - main | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
|   pull_request: | ||||
| @ -61,3 +61,32 @@ jobs: | ||||
|  | ||||
|     - name: Run simple code | ||||
|       run: python -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
|   setup-pre-release-version-from-manifest: | ||||
|     name: Setup 3.9.0-beta.4 ${{ matrix.os }} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04] | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|  | ||||
|     - name: setup-python 3.9.0-beta.4 | ||||
|       uses: ./ | ||||
|       with: | ||||
|         python-version: '3.9.0-beta.4' | ||||
|  | ||||
|     - name: Validate version | ||||
|       run: | | ||||
|         $pythonVersion = (python --version) | ||||
|         if ("Python 3.9.0b4" -ne "$pythonVersion"){ | ||||
|           Write-Host "The current version is $pythonVersion; expected version is 3.9.0b4" | ||||
|           exit 1 | ||||
|         } | ||||
|         $pythonVersion | ||||
|       shell: pwsh | ||||
|  | ||||
|     - name: Run simple code | ||||
|       run: python -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ name: Main workflow | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|       - main | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
|   pull_request: | ||||
|  | ||||
							
								
								
									
										34
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README.md
									
									
									
									
									
								
							| @ -16,6 +16,7 @@ This action sets up a Python environment for use in actions by: | ||||
| - Ability to download, install and set up Python packages from `actions/python-versions` that do not come preinstalled on runners | ||||
|   - Allows for pinning to a specific patch version of Python without the worry of it ever being removed or changed | ||||
| - Automatic setup and download of Python packages if using a self-hosted runner | ||||
| - Support for pre-release versions of Python | ||||
|  | ||||
| # Usage | ||||
|  | ||||
| @ -81,17 +82,38 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         # in this example, there is a newer version already installed, 3.7.7, so the older version will be downloaded | ||||
|         python-version: [3.5, 3.6, 3.7.4, 3.8] | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/setup-python@v2 | ||||
|       with: | ||||
|         python-version: ${{ matrix.python }} | ||||
|         python-version: ${{ matrix.python-version }} | ||||
|     - run: python my_script.py | ||||
|  | ||||
| ``` | ||||
|  | ||||
| Download and set up a accurate pre-release version of Python: | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-python@v2 | ||||
|   with: | ||||
|     python-version: '3.9.0-beta.4' | ||||
| - run: python my_script.py | ||||
| ``` | ||||
|  | ||||
| Download and set up the latest available version of Python (includes both pre-release and stable versions): | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-python@v2 | ||||
|   with: | ||||
|     python-version: '3.9.0-alpha - 3.9.0' # SemVer's version range syntax | ||||
| - run: python my_script.py | ||||
| ``` | ||||
|  | ||||
| # Getting started with Python + Actions | ||||
|  | ||||
| Check out our detailed guide on using [Python with GitHub Actions](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-python-with-github-actions). | ||||
| @ -106,7 +128,7 @@ Check out our detailed guide on using [Python with GitHub Actions](https://help. | ||||
|     - If `3.8.1` is installed for example, and `3.8.2` is released, expect `3.8.1` to be removed and replaced by `3.8.2` in the tools cache. | ||||
|     - If the exact patch version doesn't matter to you, specifying just the major and minor version will get you the latest preinstalled patch version. In the previous example, the version spec `3.8` will use the `3.8.2` Python version found in the cache. | ||||
| - Downloadable Python versions from GitHub Releases ([actions/python-versions](https://github.com/actions/python-versions/releases)) | ||||
|     - All available versions are listed in the [version-manifest.json](https://github.com/actions/python-versions/blob/master/versions-manifest.json) file. | ||||
|     - All available versions are listed in the [version-manifest.json](https://github.com/actions/python-versions/blob/main/versions-manifest.json) file. | ||||
|     - If there is a specific version of Python that is not available, you can open an issue here | ||||
|  | ||||
| # Hosted Tool Cache | ||||
| @ -136,12 +158,14 @@ You should specify only a major and minor version if you are okay with the most | ||||
|  | ||||
| # Using `setup-python` with a self hosted runner | ||||
|  | ||||
| If you would like to use `setup-python` and a self-hosted runner, there are a few extra things you need to make sure are set up so that new versions of Python can be downloaded and configured on your runner. | ||||
| Python distributions are only available for the same [environments](https://github.com/actions/virtual-environments#available-environments) that GitHub Actions hosted environments are available for. If you are using an unsupported version of Ubuntu such as `19.04` or another Linux distribution such as Fedora, `setup-python` will not work. If you have a supported self-hosted runner and you would like to use `setup-python`, there are a few extra things you need to make sure are set up so that new versions of Python can be downloaded and configured on your runner. | ||||
|  | ||||
| If you are experiencing problems while configuring Python on your self-hosted runner, turn on [step debugging](https://github.com/actions/toolkit/blob/main/docs/action-debugging.md#step-debug-logs) to see addition logs. | ||||
|  | ||||
| ### Windows | ||||
|  | ||||
| - Your runner needs to be running with administrator privileges so that the appropriate directories and files can be set up when downloading and installing a new version of Python for the first time. | ||||
| - If your runner is configured as a service, make sure the account that is running the service has the appropriate write permissions so that Python can get installed. The default `NT AUTHORITY\NETWORK SERVICE` should be sufficient.  | ||||
| - If your runner is configured as a service, make sure the account that is running the service has the appropriate write permissions so that Python can get installed. The default `NT AUTHORITY\NETWORK SERVICE` should be sufficient. | ||||
| - You need `7zip` installed and added to your `PATH` so that the downloaded versions of Python files can be extracted properly during first-time setup. | ||||
| - MSI installers are used when setting up Python on Windows. A word of caution as MSI installers update registry settings. | ||||
| - The 3.8 MSI installer for Windows will not let you install another 3.8 version of Python. If `setup-python` fails for a 3.8 version of Python, make sure any previously installed versions are removed by going to "Apps & Features" in the Settings app. | ||||
| @ -157,7 +181,7 @@ If you would like to use `setup-python` and a self-hosted runner, there are a fe | ||||
| - The runner can be granted write access to the `/opt/hostedtoolcache` directory using a few techniques: | ||||
|   - The user starting the runner is the owner, and the owner has write permission | ||||
|   - The user starting the runner is in the owning group, and the owning group has write permission | ||||
|   - All users have write permission  | ||||
|   - All users have write permission | ||||
| - One quick way to grant access is to change the user and group of `/opt/hostedtoolcache` to be the same as the runners using `chown` | ||||
|     - `sudo chown runner-user:runner-group opt/hostedtoolcache/` | ||||
| - If your runner is configured as a service and you run into problems, make sure the user that the service is running as is correct. For more information, you can [check the status of your self-hosted runner](https://help.github.com/en/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service#checking-the-status-of-the-service). | ||||
|  | ||||
| @ -1,13 +0,0 @@ | ||||
| { | ||||
|     "version": "1.2.3", | ||||
|     "stable": true, | ||||
|     "release_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6", | ||||
|     "files": [ | ||||
|       { | ||||
|         "filename": "sometool-1.2.3-linux-x64.tar.gz", | ||||
|         "arch": "x64", | ||||
|         "platform": "linux", | ||||
|         "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-linux-x64.tar.gz" | ||||
|       }       | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										52
									
								
								__tests__/data/versions-manifest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								__tests__/data/versions-manifest.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| [ | ||||
|     { | ||||
|       "version": "1.2.3", | ||||
|       "stable": true, | ||||
|       "release_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6", | ||||
|       "files": [ | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-linux-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "linux", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-linux-x64.tar.gz" | ||||
|         }, | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-darwin-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "darwin", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-darwin-x64.tar.gz" | ||||
|         }, | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-win32-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "win32", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-win32-x64.tar.gz" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "version": "1.2.3-beta.2", | ||||
|       "stable": false, | ||||
|       "release_url": "https://github.com/actions/sometool/releases/tag/1.2.3-beta.2-20200402.5", | ||||
|       "files": [ | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-linux-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "linux", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-beta.2-20200402.5/sometool-1.2.3-linux-x64.tar.gz" | ||||
|         }, | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-darwin-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "darwin", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.5/sometool-1.2.3-darwin-x64.tar.gz" | ||||
|         }, | ||||
|         { | ||||
|           "filename": "sometool-1.2.3-win32-x64.tar.gz", | ||||
|           "arch": "x64", | ||||
|           "platform": "win32", | ||||
|           "download_url": "https://github.com/actions/sometool/releases/tag/1.2.3-20200402.5/sometool-1.2.3-win32-x64.tar.gz" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
| ] | ||||
| @ -22,7 +22,7 @@ import * as tc from '@actions/tool-cache'; | ||||
| import * as finder from '../src/find-python'; | ||||
| import * as installer from '../src/install-python'; | ||||
|  | ||||
| const pythonRelease = require('./data/python-release.json'); | ||||
| const manifestData = require('./data/versions-manifest.json'); | ||||
|  | ||||
| describe('Finder tests', () => { | ||||
|   afterEach(() => { | ||||
| @ -38,12 +38,9 @@ describe('Finder tests', () => { | ||||
|     await finder.findPythonVersion('3.x', 'x64'); | ||||
|   }); | ||||
|  | ||||
|   it('Finds Python if it is not installed, but exists in the manifest', async () => { | ||||
|     const findSpy: jest.SpyInstance = jest.spyOn( | ||||
|       installer, | ||||
|       'findReleaseFromManifest' | ||||
|     ); | ||||
|     findSpy.mockImplementation(() => <tc.IToolRelease>pythonRelease); | ||||
|   it('Finds stable Python version if it is not installed, but exists in the manifest', async () => { | ||||
|     const findSpy: jest.SpyInstance = jest.spyOn(tc, 'getManifestFromRepo'); | ||||
|     findSpy.mockImplementation(() => <tc.IToolRelease[]>manifestData); | ||||
|  | ||||
|     const installSpy: jest.SpyInstance = jest.spyOn( | ||||
|       installer, | ||||
| @ -58,6 +55,28 @@ describe('Finder tests', () => { | ||||
|     await finder.findPythonVersion('1.2.3', 'x64'); | ||||
|   }); | ||||
|  | ||||
|   it('Finds pre-release Python version in the manifest', async () => { | ||||
|     const findSpy: jest.SpyInstance = jest.spyOn(tc, 'getManifestFromRepo'); | ||||
|     findSpy.mockImplementation(() => <tc.IToolRelease[]>manifestData); | ||||
|  | ||||
|     const installSpy: jest.SpyInstance = jest.spyOn( | ||||
|       installer, | ||||
|       'installCpythonFromRelease' | ||||
|     ); | ||||
|     installSpy.mockImplementation(async () => { | ||||
|       const pythonDir: string = path.join( | ||||
|         toolDir, | ||||
|         'Python', | ||||
|         '1.2.3-beta.2', | ||||
|         'x64' | ||||
|       ); | ||||
|       await io.mkdirP(pythonDir); | ||||
|       fs.writeFileSync(`${pythonDir}.complete`, 'hello'); | ||||
|     }); | ||||
|     // This will throw if it doesn't find it in the manifest (because no such version exists) | ||||
|     await finder.findPythonVersion('1.2.3-beta.2', 'x64'); | ||||
|   }); | ||||
|  | ||||
|   it('Errors if Python is not installed', async () => { | ||||
|     // This will throw if it doesn't find it in the cache and in the manifest (because no such version exists) | ||||
|     let thrown = false; | ||||
|  | ||||
							
								
								
									
										8780
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8780
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										164
									
								
								dist/licenses.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								dist/licenses.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,164 @@ | ||||
| @actions/core | ||||
| MIT | ||||
| Copyright 2019 GitHub | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and  | ||||
| associated documentation files (the "Software"), to deal in the Software without restriction,  | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,  | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,  | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN  | ||||
| NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| @actions/exec | ||||
| MIT | ||||
| Copyright 2019 GitHub | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and  | ||||
| associated documentation files (the "Software"), to deal in the Software without restriction,  | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,  | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,  | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN  | ||||
| NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| @actions/http-client | ||||
| MIT | ||||
| Actions Http Client for Node.js | ||||
|  | ||||
| Copyright (c) GitHub, Inc. | ||||
|  | ||||
| All rights reserved. | ||||
|  | ||||
| MIT License | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and | ||||
| associated documentation files (the "Software"), to deal in the Software without restriction, | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | ||||
| NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
|  | ||||
| @actions/io | ||||
| MIT | ||||
| Copyright 2019 GitHub | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and  | ||||
| associated documentation files (the "Software"), to deal in the Software without restriction,  | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,  | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,  | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN  | ||||
| NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| @actions/tool-cache | ||||
| MIT | ||||
| Copyright 2019 GitHub | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and  | ||||
| associated documentation files (the "Software"), to deal in the Software without restriction,  | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,  | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,  | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN  | ||||
| NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| semver | ||||
| ISC | ||||
| The ISC License | ||||
|  | ||||
| Copyright (c) Isaac Z. Schlueter and Contributors | ||||
|  | ||||
| Permission to use, copy, modify, and/or distribute this software for any | ||||
| purpose with or without fee is hereby granted, provided that the above | ||||
| copyright notice and this permission notice appear in all copies. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR | ||||
| IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  | ||||
|  | ||||
| tunnel | ||||
| MIT | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2012 Koichi Kobayashi | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
|  | ||||
|  | ||||
| uuid | ||||
| MIT | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2010-2016 Robert Kieffer and other contributors | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -3030,9 +3030,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "lodash": { | ||||
|       "version": "4.17.15", | ||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", | ||||
|       "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", | ||||
|       "version": "4.17.19", | ||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", | ||||
|       "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "lodash.memoize": { | ||||
|  | ||||
| @ -3,12 +3,14 @@ import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import {ExecOptions} from '@actions/exec/lib/interfaces'; | ||||
| import {stderr} from 'process'; | ||||
|  | ||||
| const TOKEN = core.getInput('token'); | ||||
| const AUTH = !TOKEN || isGhes() ? undefined : `token ${TOKEN}`; | ||||
| const MANIFEST_REPO_OWNER = 'actions'; | ||||
| const MANIFEST_REPO_NAME = 'python-versions'; | ||||
| export const MANIFEST_URL = `https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/master/versions-manifest.json`; | ||||
| const MANIFEST_REPO_BRANCH = 'main'; | ||||
| export const MANIFEST_URL = `https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/${MANIFEST_REPO_BRANCH}/versions-manifest.json`; | ||||
|  | ||||
| const IS_WINDOWS = process.platform === 'win32'; | ||||
|  | ||||
| @ -19,11 +21,12 @@ export async function findReleaseFromManifest( | ||||
|   const manifest: tc.IToolRelease[] = await tc.getManifestFromRepo( | ||||
|     MANIFEST_REPO_OWNER, | ||||
|     MANIFEST_REPO_NAME, | ||||
|     AUTH | ||||
|     AUTH, | ||||
|     MANIFEST_REPO_BRANCH | ||||
|   ); | ||||
|   return await tc.findFromManifest( | ||||
|     semanticVersionSpec, | ||||
|     true, | ||||
|     false, | ||||
|     manifest, | ||||
|     architecture | ||||
|   ); | ||||
| @ -35,7 +38,10 @@ async function installPython(workingDirectory: string) { | ||||
|     silent: true, | ||||
|     listeners: { | ||||
|       stdout: (data: Buffer) => { | ||||
|         core.debug(data.toString().trim()); | ||||
|         core.info(data.toString().trim()); | ||||
|       }, | ||||
|       stderr: (data: Buffer) => { | ||||
|         core.error(data.toString().trim()); | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
| @ -52,13 +58,12 @@ export async function installCpythonFromRelease(release: tc.IToolRelease) { | ||||
|  | ||||
|   core.info(`Download from "${downloadUrl}"`); | ||||
|   const pythonPath = await tc.downloadTool(downloadUrl, undefined, AUTH); | ||||
|   const fileName = path.basename(pythonPath, '.zip'); | ||||
|   core.info('Extract downloaded archive'); | ||||
|   let pythonExtractedFolder; | ||||
|   if (IS_WINDOWS) { | ||||
|     pythonExtractedFolder = await tc.extractZip(pythonPath, `./${fileName}`); | ||||
|     pythonExtractedFolder = await tc.extractZip(pythonPath); | ||||
|   } else { | ||||
|     pythonExtractedFolder = await tc.extractTar(pythonPath, `./${fileName}`); | ||||
|     pythonExtractedFolder = await tc.extractTar(pythonPath); | ||||
|   } | ||||
|  | ||||
|   core.info('Execute installation script'); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	