# Python CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-python/ for more details # version: 2.1 executors: python: docker: - image: cimg/python:3.9 node: docker: - image: cimg/node:16.14 with-database: docker: - image: cimg/python:3.9 environment: DATABASE_URL: postgresql://hypha:hypha@localhost/hypha?sslmode=disable DJANGO_SETTINGS_MODULE: hypha.settings.test SEND_MESSAGES: false - image: cimg/postgres:12.9 environment: POSTGRES_USER: hypha POSTGRES_PASSWORD: hypha POSTGRES_DB: hypha jobs: build-fe: executor: node working_directory: ~/repo resource_class: large steps: - checkout - run: name: set owner on /usr/local command: sudo chown -R circleci:circleci /usr/local - restore_cache: keys: - v5-npm-{{ .Branch }}-{{ checksum "package-lock.json" }} - v5-npm-{{ .Branch }}- - v5-npm- - run: name: builds static assets command: | npm install --quiet npm run build - save_cache: paths: - ./node_modules - /usr/local/lib/node_modules - /usr/local/bin key: v5-npm-{{ .Branch }}-{{ checksum "package-lock.json" }} - persist_to_workspace: root: ~/repo paths: - hypha/static_compiled - node_modules lint-fe: executor: node working_directory: ~/repo steps: - checkout - attach_workspace: at: ~/repo - run: name: run linting command: npm run lint test-fe: executor: node working_directory: ~/repo steps: - checkout - attach_workspace: at: ~/repo - run: name: Run functional unit test cases [REACT.JS] command: npm run test:ci build-be: executor: python working_directory: ~/repo steps: - checkout - run: name: set owner on /usr/local command: sudo chown -R circleci:circleci /usr/local - restore_cache: keys: - v5-python-{{ .Branch }}-{{ checksum "requirements.txt" }}{{ checksum "requirements-dev.txt" }} - v5-python-{{ .Branch }}- - v5-python- - run: name: install python dependencies command: | python3 -m venv venv . venv/bin/activate pip install codecov pip install -r requirements-dev.txt - save_cache: paths: - ./venv key: v5-python-{{ .Branch }}-{{ checksum "requirements.txt" }}{{ checksum "requirements-dev.txt" }} - persist_to_workspace: root: ~/repo paths: - venv lint-be: executor: python working_directory: ~/repo steps: - checkout - attach_workspace: at: ~/repo - run: name: run linting command: | . venv/bin/activate make lint test-be: executor: with-database working_directory: ~/repo steps: - checkout - attach_workspace: at: ~/repo - run: name: run tests command: | . venv/bin/activate python manage.py check python manage.py makemigrations --check --noinput --verbosity=1 python manage.py collectstatic --noinput --no-post-process --verbosity=1 pytest --cov codecov workflows: version: 2.1 process: jobs: - build-fe - lint-fe: requires: - build-fe - test-fe: requires: - build-fe - build-be - lint-be: requires: - build-be - test-be: requires: - build-fe - build-be