name: CI | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
pull_request: | |
branches: | |
- master | |
jobs: | |
check-code-format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install module | |
run: | | |
pip install wheel | |
pip install -e .[dev] | |
- name: Check code format with Black | |
run: | | |
black --check . | |
- name: Check imports order with isort | |
run: | | |
isort --check-only . | |
- name: Check code style with Flake8 | |
if: ${{ always() }} | |
run: | | |
flake8 . | |
run-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install module | |
run: | | |
pip install wheel | |
pip install -e .[dev] | |
- name: Run pytest | |
run: | | |
pytest -v tests/ | |
build-and-push-package: | |
runs-on: ubuntu-latest | |
needs: [check-code-format, run-tests] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
run: | | |
pip install wheel | |
- name: Build package | |
run: | | |
python3 setup.py sdist bdist_wheel | |
- name: Push package on PyPI | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |