Merge https://github.com/jaraco/skeleton #516
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tests | |
on: [push, pull_request] | |
permissions: | |
contents: read | |
env: | |
# Environment variables to support color support (jaraco/skeleton#66): | |
# Request colored output from CLI tools supporting it. Different tools | |
# interpret the value differently. For some, just being set is sufficient. | |
# For others, it must be a non-zero integer. For yet others, being set | |
# to a non-empty value is sufficient. For tox, it must be one of | |
# <blank>, 0, 1, false, no, off, on, true, yes. The only enabling value | |
# in common is "1". | |
FORCE_COLOR: 1 | |
# MyPy's color enforcement (must be a non-zero number) | |
MYPY_FORCE_COLOR: -42 | |
# Recognized by the `py` package, dependency of `pytest` (must be "1") | |
PY_COLORS: 1 | |
# Make tox-wrapped tools see color requests | |
TOX_TESTENV_PASSENV: >- | |
FORCE_COLOR | |
MYPY_FORCE_COLOR | |
NO_COLOR | |
PY_COLORS | |
PYTEST_THEME | |
PYTEST_THEME_MODE | |
# Suppress noisy pip warnings | |
PIP_DISABLE_PIP_VERSION_CHECK: 'true' | |
PIP_NO_PYTHON_VERSION_WARNING: 'true' | |
PIP_NO_WARN_SCRIPT_LOCATION: 'true' | |
# Disable the spinner, noise in GHA; TODO(webknjaz): Fix this upstream | |
# Must be "1". | |
TOX_PARALLEL_NO_SPINNER: 1 | |
jobs: | |
test: | |
strategy: | |
matrix: | |
python: | |
- "3.8" | |
- "3.11" | |
- "3.12" | |
platform: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
include: | |
- python: "3.9" | |
platform: ubuntu-latest | |
- python: "3.10" | |
platform: ubuntu-latest | |
- python: pypy3.9 | |
platform: ubuntu-latest | |
runs-on: ${{ matrix.platform }} | |
continue-on-error: ${{ matrix.python == '3.12' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
allow-prereleases: true | |
- name: Install tox | |
run: | | |
python -m pip install tox | |
- name: Run | |
run: tox | |
docs: | |
runs-on: ubuntu-latest | |
env: | |
TOXENV: docs | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
- name: Install tox | |
run: | | |
python -m pip install tox | |
- name: Run | |
run: tox | |
check: # This job does nothing and is only used for the branch protection | |
if: always() | |
needs: | |
- test | |
- docs | |
runs-on: ubuntu-latest | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} | |
diffcov: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.9 | |
- name: Install tox | |
run: | | |
python -m pip install tox | |
- name: Evaluate coverage | |
run: tox | |
env: | |
TOXENV: diffcov | |
release: | |
permissions: | |
contents: write | |
needs: | |
- check | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Install tox | |
run: | | |
python -m pip install tox | |
- name: Run | |
run: tox -e release | |
env: | |
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |