diff --git a/README.md b/README.md index 4c14b2c..8d9a9dd 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Matrix Testing: ```yaml jobs: build: - runs-on: ubuntu-16.04 + runs-on: ubuntu-latest strategy: matrix: python-version: [ '2.x', '3.x', 'pypy2', 'pypy3' ] @@ -42,6 +42,53 @@ jobs: architecture: x64 - run: python my_script.py ``` + +Exclude a specific Python version: +```yaml +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: [2.7, 3.6, 3.7, 3.8, pypy2, pypy3] + exclude: + - os: macos-latest + python-version: 3.8 + - os: windows-latest + python-version: 3.6 + steps: + - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Display Python version + run: python -c "import sys; print(sys.version)" +``` + +# 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). + +# Hosted Tool Cache + +GitHub hosted runners have a tools cache that comes with Python + PyPy already installed. This tools cache helps speed up runs and tool setup by not requiring any new downloads. There is an environment variable called `RUNNER_TOOL_CACHE` on each runner that describes the location of this tools cache and there is where you will find Python and PyPy installed. `setup-python` works by taking a specific version of Python or PyPy in this tools cache and adding it to PATH. + +|| Location | +|------|-------| +|**Tool Cache Directory** |`RUNNER_TOOL_CACHE`| +|**Python Tool Cache**|`RUNNER_TOOL_CACHE/Python/*`| +|**PyPy Tool Cache**|`RUNNER_TOOL_CACHE/PyPy/*`| + +GitHub virtual environments are setup in [actions/virtual-environments](https://github.com/actions/virtual-environments). During the setup, the available versions of Python and PyPy are automatically downloaded, setup and documented. +- [Tools cache setup for Ubuntu](https://github.com/actions/virtual-environments/blob/master/images/linux/scripts/installers/1804/hosted-tool-cache.sh) +- [Tools cache setup for Windows](https://github.com/actions/virtual-environments/blob/master/images/win/scripts/Installers/Download-ToolCache.ps1) + +# Using Python without `setup-python` + +`setup-python` helps keep your dependencies explicit and ensures consistent behavior between different runners. If you use `python` in a shell on a GitHub hosted runner without `setup-python` it will default to whatever is in PATH. The default version of Python in PATH vary between runners and can change unexpectedly so we recommend you always use `setup-python`. + # Available versions of Python For detailed information regarding the available versions of Python that are installed see [Software installed on GitHub-hosted runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/software-installed-on-github-hosted-runners)