pyenv-action
pyenv-action copied to clipboard
Enables pyenv within your github actions workflow
pyenv-action
.. image:: https://github.com/gabrielfalcao/pyenv-action/workflows/Continuous%20Integration/badge.svg :target: https://github.com/gabrielfalcao/pyenv-action/actions
.. image:: https://img.shields.io/github/license/gabrielfalcao/pyenv-action?label=License :target: https://github.com/gabrielfalcao/pyenv-action/blob/master/LICENSE
.. image:: https://img.shields.io/github/v/tag/gabrielfalcao/pyenv-action?label=Latest%20Release :target: https://github.com/gabrielfalcao/pyenv-action/releases
This GitHub Action allows using pyenv in your build.
Features:
- Installs pyenv
2.4.1
. - Exports
PYENV_ROOT <https://github.com/pyenv/pyenv#environment-variables>
_ environment variable. - Injects
$PYENV_ROOT/bin
in the PATH. - Injects
pyenv shims <https://github.com/pyenv/pyenv#understanding-shims>
_ in the PATH. - Pre-install specified python versions.
- Set default python version (through
pyenv local
).
Note: Supports Linux and MacOS (but not Windows).
Usage
Example
Installs python versions 3.8.16 and 3.9 with pyenv, upgrade pip for each of them and run pytest.
.. code:: yaml
name: Using on: [push, pull_request]
jobs: my_python_job: name: "Python" runs-on: ubuntu-latest strategy: matrix: python: - 3.8.16 - 3.9
steps:
- uses: actions/checkout@v4
- name: Install python version
uses: gabrielfalcao/pyenv-action@v18
with:
default: "${{ matrix.python }}"
command: pip install -U pip # upgrade pip after installing python
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest .
Enable multiple python versions in your github-action
.. code:: yaml
name: Using python 3.9 with pyenv on: [push, pull_request]
jobs:
test_pyenv:
runs-on: ubuntu-latest
name: install pyenv
steps:
- name: setup pyenv
uses: "gabrielfalcao/pyenv-action@v18"
with:
default: 3.7.2
versions: 3.8.16, 3.5.7
# create virtualenv for each python version
- name: Create virtualenv for python 3.5.7
run: pyenv local 3.5.7 && python3 -mvenv .venv357
- name: Create virtualenv for python 3.8.16
run: pyenv local 3.8.16 && python3 -mvenv .venv365
- name: Create virtualenv for python 3.7.2
run: pyenv local 3.7.2 && python3 -mvenv .venv372
Inputs
default
The default python version to install and set with pyenv local <version>
MUST be a valid python version supported by pyenv install <version>
MUST be defined
Example:
.. code:: yaml
- name: setup pyenv uses: "gabrielfalcao/pyenv-action@v18" with: default: 3.9
versions
A comma-separated list of versions that will be pre-installed in your github action.
Each version must be a valid and supported by pyenv install <version>
Example:
.. code:: yaml
- name: setup pyenv uses: "gabrielfalcao/pyenv-action@v18" with: versions: 3.6.4, 3.7.2
command
A command that will be executed after installing each python version.
This is useful, for example, for pre-installing pip dependencies in each python.
Example:
.. code:: yaml
- name: setup pyenv uses: "gabrielfalcao/pyenv-action@v18" with: versions: 3.6.4, 3.7.2 command: | pip install -U pip setuptools pip install -r development.txt
Outputs
pyenv_root
The full path to the PYENV_ROOT <https://github.com/pyenv/pyenv#environment-variables>
_
Example:
.. code:: yaml
name: Example pyenv_root action output on: [push, pull_request]
jobs:
my_debug_job:
runs-on: ubuntu-latest
name: install pyenv
steps:
- name: setup pyenv
id: pyenv_installation
uses: "gabrielfalcao/pyenv-action@v18"
- name: debug pyenv
run: echo ${{ steps.pyenv_installation.outputs.pyenv_root }}