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 node: circleci/node@4.7.0 # poetry: frameio/poetry@0.21.0 swissknife: roopakv/swissknife@0.59.0 docker: circleci/docker@1.7.0 workflows: build-test-publish: jobs: - build-frontend: filters: tags: only: /.*/ - test: requires: - build-frontend filters: tags: only: /.*/ - build-publish: requires: - test filters: branches: ignore: /.*/ tags: only: /^v.*/ - docker/publish: requires: - test filters: branches: ignore: /.*/ tags: only: /^v.*/ context: - docker image: $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME tag: latest,${CIRCLE_TAG} update-description: true docker-username: DOCKERHUB_USERNAME docker-password: DOCKERHUB_PASSWORD jobs: build-frontend: docker: - image: cimg/node:17.1.0 steps: - checkout - node/install-packages: app-dir: ./admin-frontend pkg-manager: yarn - run: name: yarn build working_directory: ./admin-frontend command: yarn build - persist_to_workspace: root: . paths: - "src/plugins/nonebot_bison/admin_page/dist/" test: docker: - image: cimg/python:3.9 - image: browserless/chrome environment: BISON_BROWSER: ws://localhost:3000 steps: - checkout # - run: sed -e '41,45d' -i pyproject.toml - python/install-packages: pkg-manager: poetry - run: name: Coverage test command: poetry run coverage run -m pytest --junitxml=test-results/junit.xml -k 'not compare' - store_test_results: path: test-results - run: name: Collect coverage command: poetry run coverage html --include='src/*' - store_artifacts: path: htmlcov 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