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.4 # poetry: frameio/poetry@0.21.0 swissknife: roopakv/swissknife@0.59.0 workflows: build-test-publish: jobs: - python/test: pkg-manager: poetry test-tool: pytest version: "3.9" filters: tags: only: /.*/ - build-publish: requires: - python/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 virtualenvs.in-project true # poetry install -v # - save_cache: # paths: # - .venv # key: venv-cache-{{ checksum "poetry.lock" }} # - 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