name: main on: push: branches: - main - "[0-9]+.[0-9]+.x" 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: 30 permissions: contents: read strategy: fail-fast: false matrix: name: [ "windows-py36", "windows-py37", "windows-py37-pluggy", "windows-py38", "windows-py39", "windows-py310", "ubuntu-py36", "ubuntu-py37", "ubuntu-py37-pluggy", "ubuntu-py37-freeze", "ubuntu-py38", "ubuntu-py39", "ubuntu-py310", "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-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-dev" os: windows-latest tox_env: "py310-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-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-dev" 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: "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 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: Upload coverage if: matrix.use_coverage && github.repository == 'pytest-dev/pytest' env: CODECOV_NAME: ${{ matrix.name }} run: bash scripts/upload-coverage.sh -F GHA,${{ runner.os }} linting: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions/setup-python@v2 - name: set PY run: echo "name=PY::$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')" >> $GITHUB_ENV - uses: actions/cache@v2 with: path: ~/.cache/pre-commit key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} - name: Install dependencies run: | python -m pip install --upgrade pip 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 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 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: ${{ github.token }} run: | sudo apt-get install pandoc tox -e publish-gh-release-notes