name: Continuous Integration and Deployment on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] os: [ubuntu-latest, macOS-latest, windows-latest] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4.2.0 with: python-version: ${{ matrix.python-version }} - name: Setup build and test environment run: | python -m pip install --upgrade pip setuptools wheel - name: Build Python Package run: | python -m pip install ".[tests]" - name: Lint with flake8 run: | pip install flake8 flake8 --show-source src/ tests/ - name: Check Manifest run: | pip install check-manifest check-manifest - name: Test with pytest run: | coverage run --parallel -m pytest - name: Report code coverage run: | coverage combine coverage report coverage xml docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python 3.7 uses: actions/setup-python@v4.2.0 with: python-version: 3.7 - name: Setup docs environment run: | python -m pip install ".[docs]" - name: Build documentation with sphinx run: | sphinx-build -W -b html -d doctrees docs/source docs/_build/html publish: needs: [build, docs] runs-on: ubuntu-latest if: startsWith(github.event.ref, 'refs/tags') && github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v3 - name: Set up Python 3.7 uses: actions/setup-python@v4.2.0 with: python-version: 3.7 - name: Build Package run: | python -m pip install --upgrade pip setuptools wheel python setup.py sdist bdist_wheel --universal - name: Publish Package on PyPI uses: pypa/gh-action-pypi-publish@master with: user: __token__ password: ${{ secrets.pypi_token }}