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_MINOR
environment variable), - provides utilities such as grouping log lines.
Usage
- Add configurations under
[gh]
section along with your tox configuration. - Install
tox-gh
package in the GitHub Actions workflow before runningtox
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
andpkg_meta
environment, - on Python 3.12 job, tox runs
3.12
environment, - on Python 3.11 job, tox runs
3.11
environment.
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
-e
option orTOXENV
environment variabletox-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
istrue
.
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
File details
Details for the file tox_gh-1.4.4.tar.gz
.
File metadata
- Download URL: tox_gh-1.4.4.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ea585f66585b90f5826b1677cfc9453747792a0f9ff83d468603bc17556e07b |
|
MD5 | a9186a0d5147be2c643fc923d96fcfc7 |
|
BLAKE2b-256 | 6d9ed621445f447751b5211b0d533ab2585dcf2d1310518c43d5d702d31a008c |
Provenance
The following attestation bundles were made for tox_gh-1.4.4.tar.gz
:
Publisher:
release.yaml
on tox-dev/tox-gh
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
tox_gh-1.4.4.tar.gz
- Subject digest:
4ea585f66585b90f5826b1677cfc9453747792a0f9ff83d468603bc17556e07b
- Sigstore transparency entry: 138844094
- Sigstore integration time:
- Predicate type:
File details
Details for the file tox_gh-1.4.4-py3-none-any.whl
.
File metadata
- Download URL: tox_gh-1.4.4-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b962e0f8c4619e98d11c2a135939876691e148b843b7dac4cff7de1dc4f7c215 |
|
MD5 | 8232f1d53f4b81b9622da1ee74074030 |
|
BLAKE2b-256 | ac3e3c5c71f37a9f542789e9cae49bf840f8ae1be6b28d3dd7882fbb9a39833e |
Provenance
The following attestation bundles were made for tox_gh-1.4.4-py3-none-any.whl
:
Publisher:
release.yaml
on tox-dev/tox-gh
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
tox_gh-1.4.4-py3-none-any.whl
- Subject digest:
b962e0f8c4619e98d11c2a135939876691e148b843b7dac4cff7de1dc4f7c215
- Sigstore transparency entry: 138844097
- Sigstore integration time:
- Predicate type: