This often might be causing for jobs to take longer than 10 minutes, which is a timeout Codecov uses to wait for successful CI. Also it is good in general to have CI finish faster, of course.
193 lines
5.0 KiB
YAML
193 lines
5.0 KiB
YAML
# evaluating GitHub actions for CI, disregard failures when evaluating PRs
|
|
#
|
|
# this is still missing:
|
|
# - deploy
|
|
# - upload github notes
|
|
#
|
|
name: main
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
tags:
|
|
- "*"
|
|
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name: [
|
|
"windows-py35",
|
|
"windows-py36",
|
|
"windows-py37",
|
|
"windows-py37-pluggy",
|
|
"windows-py38",
|
|
|
|
"ubuntu-py35",
|
|
"ubuntu-py36",
|
|
"ubuntu-py37",
|
|
"ubuntu-py37-pluggy",
|
|
"ubuntu-py37-freeze",
|
|
"ubuntu-py38",
|
|
"ubuntu-pypy3",
|
|
|
|
"macos-py37",
|
|
"macos-py38",
|
|
|
|
"linting",
|
|
"docs",
|
|
"doctesting",
|
|
]
|
|
|
|
include:
|
|
- name: "windows-py35"
|
|
python: "3.5"
|
|
os: windows-latest
|
|
tox_env: "py35-xdist"
|
|
use_coverage: true
|
|
- 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-twisted-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"
|
|
use_coverage: true
|
|
|
|
- name: "ubuntu-py35"
|
|
python: "3.5"
|
|
os: ubuntu-latest
|
|
tox_env: "py35-xdist"
|
|
- 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-oldattrs-pexpect-twisted"
|
|
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-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: "linting"
|
|
python: "3.7"
|
|
os: ubuntu-latest
|
|
tox_env: "linting"
|
|
- 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@v1
|
|
- name: Set up Python ${{ matrix.python }}
|
|
uses: actions/setup-python@v1
|
|
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 }}
|
|
|
|
deploy:
|
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && github.repository == 'pytest-dev/pytest'
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v1
|
|
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
|