Seamless integration of tox into GitHub Actions.
Project description
tox-gh
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_MINORenvironment variable), - provides utilities such as grouping log lines.
Usage
- Add configurations under
[gh]section along with your tox configuration. - Install
tox-ghpackage in the GitHub Actions workflow before runningtoxcommand.
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,typeandpkg_metaenvironment, - on Python 3.12 job, tox runs
3.12environment, - on Python 3.11 job, tox runs
3.11environment.
Workflow Configuration
A bare-bones example would be .github/workflows/check.yaml:
jobs:
test:
name: test with ${{ matrix.env }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
env:
- "3.13"
- "3.12"
os:
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v4
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v3
- 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 }}
A more exhaustive example would be .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
-eoption orTOXENVenvironment variabletox-ghrespects the given environments and simply runs the given environments without enforcing its configuration. - The plugin only activates if the environment variable
GITHUB_ACTIONSistrue.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tox_gh-1.6.0.tar.gz.
File metadata
- Download URL: tox_gh-1.6.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b575563926604d85c4fba150a7573f33924e3c37f3496a7563f0d9d7a9db7767
|
|
| MD5 |
fb8f39d0492670b7bc5c4844e15bdd8c
|
|
| BLAKE2b-256 |
ad6f879f6f469a8ca790cc5e6d9915eba7aed835398c406d81cfa5544c7e6262
|
Provenance
The following attestation bundles were made for tox_gh-1.6.0.tar.gz:
Publisher:
release.yaml on tox-dev/tox-gh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tox_gh-1.6.0.tar.gz -
Subject digest:
b575563926604d85c4fba150a7573f33924e3c37f3496a7563f0d9d7a9db7767 - Sigstore transparency entry: 597884393
- Sigstore integration time:
-
Permalink:
tox-dev/tox-gh@c63f89bd32d2443c69a02d7867bc177eed995173 -
Branch / Tag:
refs/tags/1.6.0 - Owner: https://github.com/tox-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@c63f89bd32d2443c69a02d7867bc177eed995173 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tox_gh-1.6.0-py3-none-any.whl.
File metadata
- Download URL: tox_gh-1.6.0-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
871a82fb23a6013db51e8f0a95254bf3270973906d582f6216b3c26546f764d2
|
|
| MD5 |
7794c5b18e751c0a02f47d556c3325db
|
|
| BLAKE2b-256 |
6733fe63750dc4908448acda6fbe8470bbbf3290ab140be57de7ceb2be7afed6
|
Provenance
The following attestation bundles were made for tox_gh-1.6.0-py3-none-any.whl:
Publisher:
release.yaml on tox-dev/tox-gh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tox_gh-1.6.0-py3-none-any.whl -
Subject digest:
871a82fb23a6013db51e8f0a95254bf3270973906d582f6216b3c26546f764d2 - Sigstore transparency entry: 597884398
- Sigstore integration time:
-
Permalink:
tox-dev/tox-gh@c63f89bd32d2443c69a02d7867bc177eed995173 -
Branch / Tag:
refs/tags/1.6.0 - Owner: https://github.com/tox-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@c63f89bd32d2443c69a02d7867bc177eed995173 -
Trigger Event:
push
-
Statement type: