123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- version: 2.1
- parameters:
- # This parameter is used to trigger the main workflow
- trigger:
- type: boolean
- default: true
- # A parameter per group
- backend:
- type: boolean
- default: false
- frontend:
- type: boolean
- default: false
- jobs:
- trigger-workflows:
- docker:
- - image: cimg/base:stable
- steps:
- - checkout
- - run:
- name: Trigger workflows
- command: .circleci/conditional-builds.sh
- backend:
- docker:
- - image: cimg/python:3.8.11
- environment:
- PIPENV_VENV_IN_PROJECT: true
- steps:
- - checkout
- - restore_cache:
- key: pipenv-v1-{{ checksum "setup.py" }}
- # Only install if .venv wasn’t cached.
- - run: |
- if [[ ! -e ".venv" ]]; then
- pipenv install -e .[testing]
- fi
- - save_cache:
- key: pipenv-v1-{{ checksum "setup.py" }}
- paths:
- - .venv
- - run: pipenv run flake8
- - run: pipenv run isort --check-only --diff .
- # Filter out known false positives, while preserving normal output and error codes.
- # See https://github.com/motet-a/jinjalint/issues/18.
- # And https://circleci.com/docs/2.0/configuration-reference/#default-shell-options.
- - run:
- shell: /bin/bash -e
- command: pipenv run jinjalint --parse-only wagtail | grep -v 'welcome_page.html:6:70' | tee /dev/tty | wc -l | grep -q '0'
- - run: pipenv run doc8 docs
- - run: DATABASE_NAME=wagtail.db pipenv run python -u runtests.py
- frontend:
- docker:
- - image: circleci/node:14
- steps:
- - checkout
- - restore_cache:
- key: frontend-v1-{{ checksum "package-lock.json" }}
- # Only install if node_modules wasn’t cached.
- - run: |
- if [[ ! -e "node_modules" ]]; then
- npm install --no-save --no-optional --no-audit --no-fund --progress=false
- fi
- - save_cache:
- paths:
- - node_modules
- key: frontend-v1-{{ checksum "package-lock.json" }}
- - run: npm run dist
- # Save static files for subsequent jobs.
- - persist_to_workspace:
- root: ~/project
- paths:
- - wagtail
- - run: npm run lint:js
- - run: npm run lint:css
- - run: npm run test:unit:coverage -- --runInBand
- - run: bash <(curl -s https://codecov.io/bash) -F frontend
- ui_tests:
- docker:
- - image: cimg/python:3.8.11-browsers
- environment:
- PIPENV_VENV_IN_PROJECT: true
- DJANGO_SETTINGS_MODULE: wagtail.tests.settings_ui
- steps:
- - checkout
- - attach_workspace:
- at: ~/project
- - restore_cache:
- key: pipenv-v1-{{ checksum "setup.py" }}
- # Only install if .venv wasn’t cached.
- - run: |
- if [[ ! -e ".venv" ]]; then
- pipenv install -e .[testing]
- fi
- - save_cache:
- key: pipenv-v1-{{ checksum "setup.py" }}
- paths:
- - .venv
- - restore_cache:
- key: ui_tests-npm_integration-v1-{{ checksum "client/tests/integration/package-lock.json" }}
- # Only install if node_modules wasn’t cached.
- - run: |
- if [[ ! -e "client/tests/integration/node_modules" ]]; then
- npm --prefix ./client/tests/integration ci
- fi
- - save_cache:
- key: ui_tests-npm_integration-v1-{{ checksum "client/tests/integration/package-lock.json" }}
- paths:
- - client/tests/integration/node_modules
- - run: pipenv run ./wagtail/tests/manage.py migrate
- - run:
- command: pipenv run ./wagtail/tests/manage.py runserver 0:8000
- background: true
- - run: pipenv run ./wagtail/tests/manage.py createcachetable
- - run:
- command: pipenv run ./wagtail/tests/manage.py createsuperuser --noinput
- environment:
- DJANGO_SUPERUSER_EMAIL: admin@example.com
- DJANGO_SUPERUSER_USERNAME: admin
- DJANGO_SUPERUSER_PASSWORD: changeme
- - run:
- command: npm run test:integration -- --runInBand --reporters=default --reporters=jest-junit
- environment:
- JEST_JUNIT_OUTPUT_DIR: reports/jest
- - store_test_results:
- path: ./reports/jest
- nightly-build:
- docker:
- - image: cimg/python:3.8.11
- steps:
- - checkout
- - run: cd ~ && wget https://nodejs.org/dist/v14.17.5/node-v14.17.5-linux-x64.tar.gz
- - run: cd /usr/local/ && sudo tar --strip-components 1 -xzf ~/node-v14.17.5-linux-x64.tar.gz
- - run: pip install --user wheel boto3
- - run: npm install
- - run: npm run dist
- - run: PYTHONPATH=. python scripts/nightly/get_version.py > __init__.py
- - run: mv __init__.py wagtail/__init__.py
- - run: python setup.py bdist_wheel
- - run: python scripts/nightly/upload.py
- workflows:
- version: 2
- ci:
- when: << pipeline.parameters.trigger >>
- jobs:
- - trigger-workflows
- backend:
- when: << pipeline.parameters.backend >>
- jobs:
- - backend
- frontend:
- when: << pipeline.parameters.frontend >>
- jobs:
- - frontend
- - ui_tests:
- requires:
- - frontend
- nightly:
- jobs:
- - nightly-build
- triggers:
- - schedule:
- cron: "0 0 * * *"
- filters:
- branches:
- only:
- - main
|