| name: Tests |
| |
| on: |
| push: |
| branches: [ master ] |
| tags: |
| - '*.*.*' |
| pull_request: |
| branches: [ master ] |
| |
| jobs: |
| |
| linters: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: 3.8 |
| |
| - name: Installation (deps and package) |
| run: | |
| pip install "poetry==1.1.6" |
| poetry config virtualenvs.create false |
| poetry install --no-interaction --no-ansi |
| |
| - name: run linters |
| run: | |
| mypy . |
| pre-commit run -a |
| |
| tests: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| python-version: [3.6, 3.7, 3.8, 3.9, 3.10-dev] |
| os: [ubuntu-latest, macos-latest, windows-latest] |
| continue-on-error: ${{ matrix.python-version == '3.10-dev' }} |
| |
| steps: |
| - uses: actions/checkout@v2 |
| |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v2 |
| with: |
| python-version: ${{ matrix.python-version }} |
| |
| - name: Installation (deps and package) |
| run: | |
| pip install "poetry==1.1.6" |
| poetry config virtualenvs.create false |
| poetry install --no-interaction --no-ansi |
| |
| - name: Test with pytest |
| run: | |
| pytest --cov --cov-fail-under=100 |
| |
| - name: Report coverage |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.6' |
| uses: codecov/codecov-action@v1 |
| |
| pypi-publish: |
| # Only publish if all other jobs succeed |
| needs: |
| - linters |
| - tests |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: 3.7 |
| - name: Install Poetry |
| run: | |
| pip install "poetry==1.1.6" |
| - name: Build and publish |
| run: | |
| # TODO: Remove the first command as soon as this Poetry bug is fixed: https://github.com/python-poetry/poetry/issues/2210 |
| poetry config http-basic.pypi "__token__" "${POETRY_PYPI_TOKEN_PYPI}" |
| poetry build |
| poetry publish |
| env: |
| POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} |