name: build on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python: ["3.7", "3.8", "3.9", "3.10"] os: [ubuntu-latest, windows-latest] include: - python: "3.7" tox_env: "py37" - python: "3.8" tox_env: "py38" - python: "3.9" tox_env: "py39" - python: "3.10" tox_env: "py310" steps: - uses: actions/checkout@v1 - name: Set up Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Install tox run: | python -m pip install --upgrade pip pip install tox - name: Test run: | tox -e ${{ matrix.tox_env }} deploy: if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') 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 wheel run: | python -m pip install --upgrade pip pip install build - 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: Generate release notes run: | pip install pypandoc python scripts/gen-release-notes.py - name: GitHub Release uses: softprops/action-gh-release@v1 with: body_path: scripts/latest-release-notes.md