From 9e72d10c4c1a95ddc9b7864f395cfbe535301adc Mon Sep 17 00:00:00 2001 From: Jonathan Wren Date: Wed, 28 Oct 2020 12:37:18 -0700 Subject: [PATCH] Add circle ci config file for linux tests (#1063) * Add circle ci config file for linux tests * Moved repeated commands into commands section for reuse in jobs Circle apparently allows you to separate custom commands into their own key, and then reuse them at will in jobs. * move conditions into individual commands --- .circleci/config.yml | 121 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..8fc62e96 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,121 @@ +version: 2.1 + +executors: + python37: + docker: + - image: circleci/python:3.7.9 + resource_class: small + + python38: + docker: + - image: circleci/python:3.8.6 + resource_class: small + + python39: + docker: + - image: circleci/python:3.9.0 + resource_class: small + +commands: + get_poetry_deps: + steps: + - run: + name: Checking Python version + command: python --version > /tmp/pythonversion + - restore_cache: + key: 'deps-00-{{ checksum "poetry.lock" }}-{{ checksum "/tmp/pythonversion" }}' + - run: + name: Installing dependencies + command: | + poetry config --local virtualenvs.in-project true + poetry install --no-root --remove-untracked + - save_cache: + key: 'deps-00-{{ checksum "poetry.lock" }}-{{ checksum "/tmp/pythonversion" }}' + paths: + - ~/project/.venv + + pytest: + steps: + - run: + name: Tests - Pytest + when: always + command: > + poetry run pytest + --junitxml=reports/pytest/results.xml + + behave: + steps: + - run: + name: Tests - Behave + when: always + command: > + poetry run behave + --no-skipped + --format progress2 + --junit + --junit-directory reports/behave + + lint: + steps: + - run: + name: Poetry Check + when: always + command: | + poetry --version + poetry check + - run: + name: Black Code Formatter + when: always + command: | + poetry run black --version + poetry run black --check --diff . + - run: + name: PyFlakes + when: always + command: | + poetry run pyflakes --version + poetry run pyflakes jrnl features tests + +aliases: + linux_test: &linux_test + steps: + - checkout + - get_poetry_deps + - run: poetry install + - pytest + - behave + - store_test_results: + path: reports + +jobs: + test_37_linux: + executor: python37 + <<: *linux_test + + test_38_linux: + executor: python38 + <<: *linux_test + + test_39_linux: + executor: python39 + <<: *linux_test + + linting: + executor: python39 + steps: + - checkout + - get_poetry_deps + - lint + +workflows: + version: 2 + main: + jobs: + - linting: + name: Linting and Formatting + - test_37_linux: + name: Python 3.7 - Linux + - test_38_linux: + name: Python 3.8 - Linux + - test_39_linux: + name: Python 3.9 - Linux