Skip to main content

Seamless integration of tox into GitHub Actions

Project description

tox-gh-actions

PyPI version PyPI Supported Python Versions GitHub license GitHub Actions (Tests)

tox-gh-actions is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions. This project is inspired by tox-travis.

Usage

  1. Add configurations under [gh-actions] section along with tox's configuration.

  2. Install tox-gh-actions package in the GitHub Actions workflow before running tox command.

Examples

Basic Example

The following configuration will create 4 jobs when running the workflow on GitHub Actions.

  • On Python 2.7 job, tox runs py27 environment
  • On Python 3.6 job, tox runs py36 environment
  • On Python 3.7 job, tox runs py37 environment
  • On Python 3.8 job, tox runs py38 and mypy environments

tox-gh-actions Configuration

Add [gh-actions] section to the same file as tox's cofiguration.

If you're using tox.ini:

[tox]
envlist = py27, py36, py37, py38, mypy

[gh-actions]
python =
    2.7: py27
    3.6: py36
    3.7: py37
    3.8: py38, mypy

[testenv]
...

If you're using setup.cfg:

[tox:tox]
envlist = py27, py36, py37, py38, mypy

[gh-actions]
python =
    2.7: py27
    3.6: py36
    3.7: py37
    3.8: py38, mypy

[testenv]
...

If you're using pyproject.toml:

[tool.tox]
legacy_tox_ini = """
[tox]
envlist = py27, py36, py37, py38, mypy

[gh-actions]
python =
    2.7: py27
    3.6: py36
    3.7: py37
    3.8: py38, mypy

[testenv]
"""

Workflow Configuration

.github/workflows/<workflow>.yml:

name: Python package

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [2.7, 3.6, 3.7, 3.8]

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install tox tox-gh-actions
    - name: Test with tox
      run: tox

Advanced Example

The following configuration will create 2 jobs when running the workflow on GitHub Actions.

  • On Python 2.7 job, tox runs py27-django111 environment
  • On Python 3.7 job, tox runs py37-django111 and py37-django20 environments

tox.ini:

[tox]
envlist = py27-django{111}, py37-django{111,20}

[gh-actions]
python =
    2.7: py27
    3.7: py37

[testenv]
...

PyPy is also supported in the python configuration key.

tox.ini:

[tox]
envlist = py27, py38, pypy2, pypy3

[gh-actions]
python =
    2.7: py27
    3.8: py38, mypy
    pypy2: pypy2
    pypy3: pypy3

[testenv]
...

You can also use environment variable to decide which environment to run. The following is an example to install different dependency based on platform. It will create 12 jobs when running the workflow on GitHub Actions.

  • On Python 2.7/ubuntu-latest job, tox runs py27-linux environment
  • On Python 3.5/ubuntu-latest job, tox runs py35-linux environment
  • and so on.

.github/workflows/<workflow>.yml:

name: Python package

on: [push]

jobs:
  build:
    runs-on: ${{ matrix.platform }}
    strategy:
      max-parallel: 4
      matrix:
        platform: [ubuntu-latest, macos-latest, windows-latest]
        python-version: [2.7, 3.6, 3.7, 3.8]

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install tox tox-gh-actions
    - name: Test with tox
      run: tox
      env:
        PLATFORM: ${{ matrix.platform }}

tox.ini:

[tox]
envlist = py{27,36,37,38}-{linux,macos,windows}

[gh-actions]
python =
    2.7: py27
    3.8: py38, mypy
    pypy2: pypy2
    pypy3: pypy3

[gh-actions:env]
PLATFORM =
    ubuntu-latest: linux
    macos-latest: macos
    windows-latest: windows

[testenv]
deps =
  <common dependency>
  linux: <Linux specific deps>
  macos: <macOS specific deps>
  windows: <Windows specific deps>
...

See tox's documentation about factor-conditional settings as well.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tox-gh-actions-1.2.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tox_gh_actions-1.2.0-py2.py3-none-any.whl (6.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file tox-gh-actions-1.2.0.tar.gz.

File metadata

  • Download URL: tox-gh-actions-1.2.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for tox-gh-actions-1.2.0.tar.gz
Algorithm Hash digest
SHA256 ea00a9897a5ad45be4b7f94d889e62f09abc0dac7df7a75881f852e4f4005960
MD5 5bc6d19d4425409c14b0aa37d0d095f6
BLAKE2b-256 591af452e4d75df673b30c0d8c0764b98aaa90bbb47dd844281a190a25ced44a

See more details on using hashes here.

File details

Details for the file tox_gh_actions-1.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: tox_gh_actions-1.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for tox_gh_actions-1.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d5f694d2f49e324c991e8c8cbc026ae33d198817abe266f4c6b73d2d33b89c1f
MD5 9baae8c953875458247c918d895af760
BLAKE2b-256 166fd684de0851e0e5d5fb15e1fa8d3dca33330e306423341194dcda7c30cad7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page