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:  | on:  | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - main | ||||||
|     paths-ignore: |     paths-ignore: | ||||||
|       - '**.md' |       - '**.md' | ||||||
|   pull_request: |   pull_request: | ||||||
| @ -61,3 +61,32 @@ jobs: | |||||||
|  |  | ||||||
|     - name: Run simple code |     - name: Run simple code | ||||||
|       run: python -c 'import math; print(math.factorial(5))' |       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: | on: | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - main | ||||||
|     paths-ignore: |     paths-ignore: | ||||||
|       - '**.md' |       - '**.md' | ||||||
|   pull_request: |   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 | - 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 |   - 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 | - Automatic setup and download of Python packages if using a self-hosted runner | ||||||
|  | - Support for pre-release versions of Python | ||||||
|  |  | ||||||
| # Usage | # Usage | ||||||
|  |  | ||||||
| @ -81,17 +82,38 @@ jobs: | |||||||
|   build: |   build: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|  |       matrix: | ||||||
|         # in this example, there is a newer version already installed, 3.7.7, so the older version will be downloaded |         # 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] |         python-version: [3.5, 3.6, 3.7.4, 3.8] | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v2 |     - uses: actions/checkout@v2 | ||||||
|     - uses: actions/setup-python@v2 |     - uses: actions/setup-python@v2 | ||||||
|       with: |       with: | ||||||
|         python-version: ${{ matrix.python }} |         python-version: ${{ matrix.python-version }} | ||||||
|     - run: python my_script.py |     - 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 | # 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). | 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 `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. |     - 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)) | - 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 |     - If there is a specific version of Python that is not available, you can open an issue here | ||||||
|  |  | ||||||
| # Hosted Tool Cache | # 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 | # 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 | ### 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. | - 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. | - 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. | - 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. | - 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 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 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 |   - 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` | - 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/` |     - `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). | - 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 finder from '../src/find-python'; | ||||||
| import * as installer from '../src/install-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', () => { | describe('Finder tests', () => { | ||||||
|   afterEach(() => { |   afterEach(() => { | ||||||
| @ -38,12 +38,9 @@ describe('Finder tests', () => { | |||||||
|     await finder.findPythonVersion('3.x', 'x64'); |     await finder.findPythonVersion('3.x', 'x64'); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('Finds Python if it is not installed, but exists in the manifest', async () => { |   it('Finds stable Python version if it is not installed, but exists in the manifest', async () => { | ||||||
|     const findSpy: jest.SpyInstance = jest.spyOn( |     const findSpy: jest.SpyInstance = jest.spyOn(tc, 'getManifestFromRepo'); | ||||||
|       installer, |     findSpy.mockImplementation(() => <tc.IToolRelease[]>manifestData); | ||||||
|       'findReleaseFromManifest' |  | ||||||
|     ); |  | ||||||
|     findSpy.mockImplementation(() => <tc.IToolRelease>pythonRelease); |  | ||||||
|  |  | ||||||
|     const installSpy: jest.SpyInstance = jest.spyOn( |     const installSpy: jest.SpyInstance = jest.spyOn( | ||||||
|       installer, |       installer, | ||||||
| @ -58,6 +55,28 @@ describe('Finder tests', () => { | |||||||
|     await finder.findPythonVersion('1.2.3', 'x64'); |     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 () => { |   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) |     // This will throw if it doesn't find it in the cache and in the manifest (because no such version exists) | ||||||
|     let thrown = false; |     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": { |     "lodash": { | ||||||
|       "version": "4.17.15", |       "version": "4.17.19", | ||||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", |       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", | ||||||
|       "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", |       "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "lodash.memoize": { |     "lodash.memoize": { | ||||||
|  | |||||||
| @ -3,12 +3,14 @@ import * as core from '@actions/core'; | |||||||
| import * as tc from '@actions/tool-cache'; | import * as tc from '@actions/tool-cache'; | ||||||
| import * as exec from '@actions/exec'; | import * as exec from '@actions/exec'; | ||||||
| import {ExecOptions} from '@actions/exec/lib/interfaces'; | import {ExecOptions} from '@actions/exec/lib/interfaces'; | ||||||
|  | import {stderr} from 'process'; | ||||||
|  |  | ||||||
| const TOKEN = core.getInput('token'); | const TOKEN = core.getInput('token'); | ||||||
| const AUTH = !TOKEN || isGhes() ? undefined : `token ${TOKEN}`; | const AUTH = !TOKEN || isGhes() ? undefined : `token ${TOKEN}`; | ||||||
| const MANIFEST_REPO_OWNER = 'actions'; | const MANIFEST_REPO_OWNER = 'actions'; | ||||||
| const MANIFEST_REPO_NAME = 'python-versions'; | 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'; | const IS_WINDOWS = process.platform === 'win32'; | ||||||
|  |  | ||||||
| @ -19,11 +21,12 @@ export async function findReleaseFromManifest( | |||||||
|   const manifest: tc.IToolRelease[] = await tc.getManifestFromRepo( |   const manifest: tc.IToolRelease[] = await tc.getManifestFromRepo( | ||||||
|     MANIFEST_REPO_OWNER, |     MANIFEST_REPO_OWNER, | ||||||
|     MANIFEST_REPO_NAME, |     MANIFEST_REPO_NAME, | ||||||
|     AUTH |     AUTH, | ||||||
|  |     MANIFEST_REPO_BRANCH | ||||||
|   ); |   ); | ||||||
|   return await tc.findFromManifest( |   return await tc.findFromManifest( | ||||||
|     semanticVersionSpec, |     semanticVersionSpec, | ||||||
|     true, |     false, | ||||||
|     manifest, |     manifest, | ||||||
|     architecture |     architecture | ||||||
|   ); |   ); | ||||||
| @ -35,7 +38,10 @@ async function installPython(workingDirectory: string) { | |||||||
|     silent: true, |     silent: true, | ||||||
|     listeners: { |     listeners: { | ||||||
|       stdout: (data: Buffer) => { |       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}"`); |   core.info(`Download from "${downloadUrl}"`); | ||||||
|   const pythonPath = await tc.downloadTool(downloadUrl, undefined, AUTH); |   const pythonPath = await tc.downloadTool(downloadUrl, undefined, AUTH); | ||||||
|   const fileName = path.basename(pythonPath, '.zip'); |  | ||||||
|   core.info('Extract downloaded archive'); |   core.info('Extract downloaded archive'); | ||||||
|   let pythonExtractedFolder; |   let pythonExtractedFolder; | ||||||
|   if (IS_WINDOWS) { |   if (IS_WINDOWS) { | ||||||
|     pythonExtractedFolder = await tc.extractZip(pythonPath, `./${fileName}`); |     pythonExtractedFolder = await tc.extractZip(pythonPath); | ||||||
|   } else { |   } else { | ||||||
|     pythonExtractedFolder = await tc.extractTar(pythonPath, `./${fileName}`); |     pythonExtractedFolder = await tc.extractTar(pythonPath); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   core.info('Execute installation script'); |   core.info('Execute installation script'); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	