version: 2 jobs: test-py35: docker: - image: python:3.5 steps: - checkout - run: name: Run coverage tests command: | pip install coverage coverage run setup.py test coverage report -m test-py36: docker: - image: python:3.6 steps: - checkout - run: name: Run coverage tests command: | pip install coverage coverage run setup.py test coverage report -m test-py37: docker: - image: python:3.7 steps: - checkout - run: name: Run coverage tests command: | pip install coverage coverage run setup.py test coverage report -m - save_cache: key: coverage-{{ .Branch }}-{{ .Revision }} paths: - .coverage codecov: docker: - image: python:3 steps: - checkout - restore_cache: keys: - coverage-{{ .Branch }}-{{ .Revision }} - run: name: Upload to codecov.io command: | pip install codecov codecov style: docker: - image: python:3 steps: - checkout - run: name: Run flake8 command: | pip install flake8 flake8-docstrings flake8 release: docker: - image: python:3 steps: - checkout - run: name: Install twine command: | pip install twine - run: name: Build package command: | python setup.py sdist bdist_wheel - run: name: Upload to PyPi command: | twine upload dist/* workflows: version: 2 test_and_release: jobs: - test-py35: filters: tags: only: /.*/ - test-py36: filters: tags: only: /.*/ - test-py37: filters: tags: only: /.*/ - codecov: requires: - test-py37 filters: tags: only: /.*/ - style: filters: tags: only: /.*/ - release: requires: - test-py35 - test-py36 - test-py37 - style filters: tags: only: /.*/ branches: ignore: /.*/