# 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", ] include: - name: "windows-py35" python: "3.5" os: windows-latest tox_env: "py35-xdist" - 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" - 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" - 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" # coverage does not apply for freeze test, skip it skip_coverage: true - 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" # coverage too slow with pypy3, skip it skip_coverage: true - 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" - name: "linting" python: "3.7" os: ubuntu-latest tox_env: "linting,docs,doctesting" 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.skip_coverage" run: "tox -e ${{ matrix.tox_env }}" - name: Test with coverage if: "! matrix.skip_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: success() && !matrix.skip_coverage && ( github.repository == 'pytest-dev/pytest' || github.event_name == 'pull_request' ) run: | python scripts/append_codecov_token.py - name: Combine coverage if: success() && !matrix.skip_coverage run: | python -m coverage combine python -m coverage xml - name: Codecov upload if: success() && !matrix.skip_coverage uses: codecov/codecov-action@v1 with: token: ${{ secrets.codecov }} file: ./coverage.xml flags: ${{ runner.os }} fail_ci_if_error: false name: ${{ matrix.name }} 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