We don't have any jobs that should go beyond that, so let's be nicer to the CI host and quicker to report the failure.
210 lines
5.6 KiB
YAML
210 lines
5.6 KiB
YAML
name: main
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- "[0-9]+.[0-9]+.x"
|
|
tags:
|
|
- "*"
|
|
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- "[0-9]+.[0-9]+.x"
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name: [
|
|
"windows-py36",
|
|
"windows-py37",
|
|
"windows-py37-pluggy",
|
|
"windows-py38",
|
|
|
|
"ubuntu-py36",
|
|
"ubuntu-py37",
|
|
"ubuntu-py37-pluggy",
|
|
"ubuntu-py37-freeze",
|
|
"ubuntu-py38",
|
|
"ubuntu-py39",
|
|
"ubuntu-pypy3",
|
|
|
|
"macos-py37",
|
|
"macos-py38",
|
|
|
|
"docs",
|
|
"doctesting",
|
|
"plugins",
|
|
]
|
|
|
|
include:
|
|
- name: "windows-py36"
|
|
python: "3.6"
|
|
os: windows-latest
|
|
tox_env: "py36-xdist"
|
|
- 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-pluggymaster-xdist"
|
|
- name: "windows-py38"
|
|
python: "3.8"
|
|
os: windows-latest
|
|
tox_env: "py38-unittestextras"
|
|
use_coverage: true
|
|
|
|
- name: "ubuntu-py36"
|
|
python: "3.6"
|
|
os: ubuntu-latest
|
|
tox_env: "py36-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-pluggymaster-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-dev"
|
|
os: ubuntu-latest
|
|
tox_env: "py39-xdist"
|
|
- name: "ubuntu-pypy3"
|
|
python: "pypy3"
|
|
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: "plugins"
|
|
python: "3.7"
|
|
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
|
|
- name: Set up Python ${{ matrix.python }}
|
|
uses: actions/setup-python@v2
|
|
if: matrix.python != '3.9-dev'
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
- name: Set up Python ${{ matrix.python }} (deadsnakes)
|
|
uses: deadsnakes/action@v2.0.0
|
|
if: matrix.python == '3.9-dev'
|
|
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"
|
|
env:
|
|
_PYTEST_TOX_COVERAGE_RUN: "coverage run -m"
|
|
COVERAGE_PROCESS_START: ".coveragerc"
|
|
_PYTEST_TOX_EXTRA_DEP: "coverage-enable-subprocess"
|
|
run: "tox -e ${{ matrix.tox_env }}"
|
|
|
|
- name: Prepare coverage token
|
|
if: (matrix.use_coverage && ( github.repository == 'pytest-dev/pytest' || github.event_name == 'pull_request' ))
|
|
run: |
|
|
python scripts/append_codecov_token.py
|
|
|
|
- name: Report coverage
|
|
if: (matrix.use_coverage)
|
|
env:
|
|
CODECOV_NAME: ${{ matrix.name }}
|
|
run: bash scripts/report-coverage.sh -F GHA,${{ runner.os }}
|
|
|
|
linting:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
- name: set PY
|
|
run: echo "::set-env name=PY::$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')"
|
|
- uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cache/pre-commit
|
|
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
|
|
- run: pip install tox
|
|
- run: tox -e linting
|
|
|
|
deploy:
|
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && github.repository == 'pytest-dev/pytest'
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
|
|
needs: [build]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- 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 wheel setuptools tox
|
|
- name: Build package
|
|
run: |
|
|
python setup.py sdist bdist_wheel
|
|
- 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: ${{ secrets.release_notes }}
|
|
run: |
|
|
sudo apt-get install pandoc
|
|
tox -e publish-gh-release-notes
|