2021-09-26 17:08:03 +08:00

90 lines
2.4 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.4
node: circleci/node@4.7.0
# poetry: frameio/poetry@0.21.0
swissknife: roopakv/swissknife@0.59.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.*/
jobs:
build-frontend:
docker:
- image: cimg/node
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_hk_reporter/admin_page/dist/"
test:
docker:
- image: cimg/python:3.9
- image: browserless/chrome
environment:
HK_REPORTER_BROWSER: ws://localhost:3000
steps:
- checkout
# - run: sed -e '41,45d' -i pyproject.toml
- python/install-packages:
pkg-manager: poetry
- node/run:
app-dir: ./admin-frontend
yarn-run: build
- 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