2021-06-17 15:30:35 +08:00

66 lines
1.7 KiB
YAML

version: 2.1
orbs:
# The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files
# Orb commands and jobs help you with common scripting around a language/tool
# so you dont have to copy and paste it everywhere.
# See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python
python: circleci/python@1.2
# poetry: frameio/poetry@0.21.0
swissknife: roopakv/swissknife@0.59.0
workflows:
build-test-publish:
jobs:
- test:
filters:
tags:
only: /.*/
- build-publish:
requires:
- test
filters:
branches:
ignore: /.*/
tags:
only: /^v.*/
jobs:
test:
docker:
- image: cimg/python:3.9
steps:
- checkout
# - run: sed -e '41,45d' -i pyproject.toml
- restore_cache:
keys:
- venv-cache-{{ checksum "poetry.lock" }}
- run:
name: Poetry install
command: |
poetry config settings.virtualenvs.in-project true
poetry install -v
- save_cache:
paths:
- .venv
key: venv-cache-{{ checksum "poetry.locl" }}
- run:
name: pytest
command: poetry run pytest --junitxml=test-results/junit.xml
- store_test_results:
path: test-results
build-publish:
docker:
- image: cimg/python:3.9
steps:
- checkout
- run: poetry build
- store_artifacts:
path: dist
- swissknife/publish_github_release:
tag: ${CIRCLE_TAG}
- run:
command: poetry publish -u $PYPI_USERNAME -p $PYPI_PASSWORD
name: publish to pypi