alinsa_vix in Discord noticed that we are not testing Python 3.9 and 3.10 on macOS, which seems strange. Maybe this is due how to macOS CI resources were quite scarce for a while, but I believe this has improved since.
223 lines
5.4 KiB
YAML
223 lines
5.4 KiB
YAML
name: main
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- "[0-9]+.[0-9]+.x"
|
|
- "test-me-*"
|
|
tags:
|
|
- "[0-9]+.[0-9]+.[0-9]+"
|
|
- "[0-9]+.[0-9]+.[0-9]+rc[0-9]+"
|
|
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- "[0-9]+.[0-9]+.x"
|
|
|
|
env:
|
|
PYTEST_ADDOPTS: "--color=yes"
|
|
|
|
# Set permissions at the job level.
|
|
permissions: {}
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 45
|
|
permissions:
|
|
contents: read
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name: [
|
|
"windows-py37",
|
|
"windows-py37-pluggy",
|
|
"windows-py38",
|
|
"windows-py39",
|
|
"windows-py310",
|
|
|
|
"ubuntu-py37",
|
|
"ubuntu-py37-pluggy",
|
|
"ubuntu-py37-freeze",
|
|
"ubuntu-py38",
|
|
"ubuntu-py39",
|
|
"ubuntu-py310",
|
|
"ubuntu-pypy3",
|
|
|
|
"macos-py37",
|
|
"macos-py38",
|
|
"macos-py39",
|
|
"macos-py310",
|
|
|
|
"docs",
|
|
"doctesting",
|
|
"plugins",
|
|
]
|
|
|
|
include:
|
|
- name: "windows-py37"
|
|
python: "3.7"
|
|
os: windows-latest
|
|
tox_env: "py37-numpy"
|
|
- name: "windows-py37-pluggy"
|
|
python: "3.7"
|
|
os: windows-latest
|
|
tox_env: "py37-pluggymain-xdist"
|
|
- name: "windows-py38"
|
|
python: "3.8"
|
|
os: windows-latest
|
|
tox_env: "py38-unittestextras"
|
|
use_coverage: true
|
|
- name: "windows-py39"
|
|
python: "3.9"
|
|
os: windows-latest
|
|
tox_env: "py39-xdist"
|
|
- name: "windows-py310"
|
|
python: "3.10.1"
|
|
os: windows-latest
|
|
tox_env: "py310-xdist"
|
|
|
|
- name: "ubuntu-py37"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "py37-lsof-numpy-pexpect"
|
|
use_coverage: true
|
|
- name: "ubuntu-py37-pluggy"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "py37-pluggymain-xdist"
|
|
- name: "ubuntu-py37-freeze"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "py37-freeze"
|
|
- name: "ubuntu-py38"
|
|
python: "3.8"
|
|
os: ubuntu-latest
|
|
tox_env: "py38-xdist"
|
|
- name: "ubuntu-py39"
|
|
python: "3.9"
|
|
os: ubuntu-latest
|
|
tox_env: "py39-xdist"
|
|
- name: "ubuntu-py310"
|
|
python: "3.10.1"
|
|
os: ubuntu-latest
|
|
tox_env: "py310-xdist"
|
|
- name: "ubuntu-pypy3"
|
|
python: "pypy-3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "pypy3-xdist"
|
|
|
|
- name: "macos-py37"
|
|
python: "3.7"
|
|
os: macos-latest
|
|
tox_env: "py37-xdist"
|
|
- name: "macos-py38"
|
|
python: "3.8"
|
|
os: macos-latest
|
|
tox_env: "py38-xdist"
|
|
use_coverage: true
|
|
- name: "macos-py39"
|
|
python: "3.9"
|
|
os: macos-latest
|
|
tox_env: "py39-xdist"
|
|
- name: "macos-py310"
|
|
python: "3.10"
|
|
os: macos-latest
|
|
tox_env: "py310-xdist"
|
|
|
|
- name: "plugins"
|
|
python: "3.9"
|
|
os: ubuntu-latest
|
|
tox_env: "plugins"
|
|
|
|
- name: "docs"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "docs"
|
|
- name: "doctesting"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "doctesting"
|
|
use_coverage: true
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
- name: Set up Python ${{ matrix.python }}
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install tox coverage
|
|
|
|
- name: Test without coverage
|
|
if: "! matrix.use_coverage"
|
|
run: "tox -e ${{ matrix.tox_env }}"
|
|
|
|
- name: Test with coverage
|
|
if: "matrix.use_coverage"
|
|
run: "tox -e ${{ matrix.tox_env }}-coverage"
|
|
|
|
- name: Generate coverage report
|
|
if: "matrix.use_coverage"
|
|
run: python -m coverage xml
|
|
|
|
- name: Upload coverage to Codecov
|
|
if: "matrix.use_coverage"
|
|
uses: codecov/codecov-action@v2
|
|
with:
|
|
fail_ci_if_error: true
|
|
files: ./coverage.xml
|
|
verbose: true
|
|
|
|
deploy:
|
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && github.repository == 'pytest-dev/pytest'
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
permissions:
|
|
contents: write
|
|
|
|
needs: [build]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.7"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install --upgrade build tox
|
|
|
|
- name: Build package
|
|
run: |
|
|
python -m build
|
|
|
|
- name: Publish package to PyPI
|
|
uses: pypa/gh-action-pypi-publish@master
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.pypi_token }}
|
|
|
|
- name: Publish GitHub release notes
|
|
env:
|
|
GH_RELEASE_NOTES_TOKEN: ${{ github.token }}
|
|
run: |
|
|
sudo apt-get install pandoc
|
|
tox -e publish-gh-release-notes
|