Skip to main content

Seamless integration of tox into GitHub Actions.

Project description

tox-gh

PyPI version PyPI Supported Python Versions check Downloads

tox-gh is a tox plugin, which helps run tox on GitHub Actions with multiple different Python versions on multiple workers in parallel.

Features

When running tox on GitHub Actions, tox-gh:

  • detects, which environment to run based on configurations (or bypass detection and set it explicitly via the TOX_GH_MAJOR_MINOR environment variable),
  • provides utilities such as grouping log lines.

Usage

  1. Add configurations under [gh] section along with your tox configuration.
  2. Install tox-gh package in the GitHub Actions workflow before running tox command.

Examples

Basic Example

Add [gh] section to the same file as tox configuration.

If you're using tox.ini:

[gh]
python =
    3.13 = 3.13, type, dev, pkg_meta
    3.12 = 3.12
    3.11 = 3.11

For tox.toml:

[gh.python]
"3.13" = ["3.13", "type", "pkg_meta"]
"3.12" = ["3.12"]
"3.11" = ["3.11"]

For pyproject.toml:

[tool.tox.gh.python]
"3.13" = ["3.13", "type", "pkg_meta"]
"3.12" = ["3.12"]
"3.11" = ["3.11"]

This will run a different set of tox environments on different python versions set up via GitHub setup-python action:

  • on Python 3.13 job, tox runs 3.13, type and pkg_meta environment,
  • on Python 3.12 job, tox runs 3.12 environment,
  • on Python 3.11 job, tox runs 3.11 environment.

Workflow Configuration

.github/workflows/check.yaml:

name: check
on:
  workflow_dispatch:
  push:
    branches: ["main"]
    tags-ignore: ["**"]
  pull_request:
  schedule:
    - cron: "0 8 * * *"

concurrency:
  group: check-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: test with ${{ matrix.env }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        env:
          - "3.13"
          - "3.12"
          - "3.11"
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@v3
        with:
          enable-cache: true
          cache-dependency-glob: "pyproject.toml"
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Add .local/bin to Windows PATH
        if: runner.os == 'Windows'
        shell: bash
        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
      - name: Install tox
        run: uv tool install --python-preference only-managed --python 3.13 tox --with tox-uv --with tox-gh
      - name: Install Python
        if: matrix.env != '3.13'
        run: uv python install --python-preference only-managed ${{ matrix.env }}
      - name: Setup test suite
        run: tox run -vv --notest --skip-missing-interpreters false
        env:
          TOX_GH_MAJOR_MINOR: ${{ matrix.env }}
      - name: Run test suite
        run: tox run --skip-pkg-install
        env:
          TOX_GH_MAJOR_MINOR: ${{ matrix.env }}

FAQ

  • When a list of environments to run is specified explicitly via -e option or TOXENV environment variable tox-gh respects the given environments and simply runs the given environments without enforcing its configuration.
  • The plugin only activates if the environment variable GITHUB_ACTIONS is true.

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-1.4.3.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

tox_gh-1.4.3-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file tox_gh-1.4.3.tar.gz.

File metadata

  • Download URL: tox_gh-1.4.3.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for tox_gh-1.4.3.tar.gz
Algorithm Hash digest
SHA256 ac74085d6fa95bebd8c681ed5d1683353df8b1641b30c80da311343e91af7550
MD5 95ab41b23c65d2ce6eb036479cd1f852
BLAKE2b-256 e7e92be540e1c20b607a5a6b9064dce97b2234f532aa3ea99a5d22cdb85ebf29

See more details on using hashes here.

Provenance

The following attestation bundles were made for tox_gh-1.4.3.tar.gz:

Publisher: GitHub
  • Repository: tox-dev/tox-gh
  • Workflow: release.yaml
Attestations:
  • Statement type: https://in-toto.io/Statement/v1
    • Predicate type: https://docs.pypi.org/attestations/publish/v1
    • Subject name: tox_gh-1.4.3.tar.gz
    • Subject digest: ac74085d6fa95bebd8c681ed5d1683353df8b1641b30c80da311343e91af7550
    • Transparency log index: 138842203
    • Transparency log integration time:

File details

Details for the file tox_gh-1.4.3-py3-none-any.whl.

File metadata

  • Download URL: tox_gh-1.4.3-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for tox_gh-1.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9b7fa107d99505a9b3ae9766f6e3476e2fc09a2b0388cc00a18fbae27bdf8e2f
MD5 67ba1df3244f9d7bda9db3d7ba96debe
BLAKE2b-256 696651d01fec7d7dd9b4d4a2316737f7cbc2498dcc71d9e54f9282af86ef2761

See more details on using hashes here.

Provenance

The following attestation bundles were made for tox_gh-1.4.3-py3-none-any.whl:

Publisher: GitHub
  • Repository: tox-dev/tox-gh
  • Workflow: release.yaml
Attestations:
  • Statement type: https://in-toto.io/Statement/v1
    • Predicate type: https://docs.pypi.org/attestations/publish/v1
    • Subject name: tox_gh-1.4.3-py3-none-any.whl
    • Subject digest: 9b7fa107d99505a9b3ae9766f6e3476e2fc09a2b0388cc00a18fbae27bdf8e2f
    • Transparency log index: 138842205
    • Transparency log integration time:

Supported by

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