This pull-request improves `setup-python` action to add ability to download specific version of Python on flight if it is not available by default. **Details:** `setup-python` action will download and install specific Python version from GitHub releases ([actions/python-versions](https://github.com/actions/python-versions/releases)) in case the version is not found in the local cache. All versions of Python available for installation are published in [actions/python-versions](https://github.com/actions/python-versions) repository. All available versions are listed in the [version-manifest.json](https://github.com/actions/python-versions/blob/master/versions-manifest.json) file. **Installation time:** - Ubuntu / macOS: 10-20 seconds - Windows: ~ 1 minute (mostly related to fact that we use MSI installer for Python on Windows) Co-authored-by: MaksimZhukov <v-mazhuk@microsoft.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com> Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Validate 'setup-python'
 | |
| on: 
 | |
|   push:
 | |
|   pull_request:
 | |
|   schedule:
 | |
|     - cron: 0 0 * * *
 | |
| 
 | |
| jobs:
 | |
|   default-version:
 | |
|     name: Setup default version
 | |
|     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 default python 
 | |
|       uses: ./
 | |
| 
 | |
|     - name: Validate version
 | |
|       run: python --version
 | |
| 
 | |
|     - name: Run simple python code
 | |
|       run: python -c 'import math; print(math.factorial(5))'
 | |
| 
 | |
|   setup-versions-from-manifest:
 | |
|     name: Setup ${{ matrix.python }} ${{ matrix.os }}
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
 | |
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.1]
 | |
|     steps:
 | |
|     - name: Checkout
 | |
|       uses: actions/checkout@v2
 | |
| 
 | |
|     - name: setup-python ${{ matrix.python }}
 | |
|       uses: ./
 | |
|       with:
 | |
|         python-version: ${{ matrix.python }}
 | |
| 
 | |
|     - name: Validate version
 | |
|       run: |
 | |
|         $pythonVersion = (python --version)
 | |
|         if ("Python ${{ matrix.python }}" -ne "$pythonVersion"){
 | |
|           Write-Host "The current version is $pythonVersion; expected version is ${{ matrix.python }}"
 | |
|           exit 1
 | |
|         }
 | |
|         $pythonVersion
 | |
|       shell: pwsh
 | |
| 
 | |
|     - name: Run simple code
 | |
|       run: python -c 'import math; print(math.factorial(5))'
 |