0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-11-28 00:17:06 +01:00
wagtail/.circleci/config.yml
2024-10-10 20:02:32 +01:00

155 lines
4.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

version: 2
jobs:
backend:
docker:
- image: cimg/python:3.12
environment:
PIPENV_VENV_IN_PROJECT: true
steps:
- checkout
- restore_cache:
key: pipenv-v3-{{ checksum "setup.py" }}
# Only install if .venv wasnt cached.
- run: |
if [[ ! -e ".venv" ]]; then
pipenv install -e .[testing,docs]
fi
- save_cache:
key: pipenv-v3-{{ checksum "setup.py" }}
paths:
- .venv
- run: pipenv run ruff check .
- run: pipenv run ruff format --check .
- run: pipenv run semgrep --config .semgrep.yml --error .
- run: git ls-files '*.html' | xargs pipenv run djhtml --check
- run: pipenv run curlylint --parse-only wagtail
- run: pipenv run doc8 docs
- run:
name: Run tests
command: |
export PYTHONUNBUFFERED=1
WAGTAIL_CHECK_TEMPLATE_NUMBER_FORMAT=1 pipenv run python -u runtests.py --parallel=2
frontend:
docker:
- image: cimg/node:20.9
steps:
- checkout
- restore_cache:
key: frontend-v1-{{ checksum "package-lock.json" }}
# Only install if node_modules wasnt 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 build
# Save static files for subsequent jobs.
- persist_to_workspace:
root: ~/project
paths:
- wagtail
- run: npm run build-storybook
- run: npm run lint:js
- run: npm run lint:css
- run: npm run lint:format
- run: npm run test:unit:coverage -- --runInBand
- run: bash <(curl -s https://codecov.io/bash) -F frontend
ui_tests:
docker:
- image: cimg/python:3.12-browsers
environment:
PIPENV_VENV_IN_PROJECT: true
DJANGO_SETTINGS_MODULE: wagtail.test.settings_ui
DJANGO_DEBUG: true
steps:
- checkout
- attach_workspace:
at: ~/project
- restore_cache:
key: ui_tests-pipenv-v3-{{ checksum "setup.py" }}
# Only install if .venv wasnt cached.
- run: |
if [[ ! -e ".venv" ]]; then
pipenv install -e .[testing]
fi
- save_cache:
key: ui_tests-pipenv-v3-{{ checksum "setup.py" }}
paths:
- .venv
- restore_cache:
key: ui_tests-npm_integration-v3-{{ checksum "client/tests/integration/package-lock.json" }}
# Only install if node_modules wasnt cached.
- run: |
if [[ ! -e "client/tests/integration/node_modules" ]]; then
npm --prefix ./client/tests/integration ci
fi
- save_cache:
key: ui_tests-npm_integration-v3-{{ checksum "client/tests/integration/package-lock.json" }}
paths:
- client/tests/integration/node_modules
# Also cache the global location where Puppeteer stores browsers.
# https://pptr.dev/guides/configuration/#changing-the-default-cache-directory
- ~/.cache/puppeteer
- run: pipenv run ./wagtail/test/manage.py migrate
- run:
command: pipenv run ./wagtail/test/manage.py runserver 0:8000
background: true
- run: pipenv run ./wagtail/test/manage.py createcachetable
- run:
command: pipenv run ./wagtail/test/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
- run:
command: pipenv run ./wagtail/test/manage.py collectstatic --noinput
environment:
DJANGO_DEBUG: false
STATICFILES_STORAGE: manifest
- store_test_results:
path: ./reports/jest
nightly-build:
docker:
- image: cimg/python:3.12-node
steps:
- checkout
- run: pip install --user wheel boto3
- run: npm install
- run: npm run build
- 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
test:
jobs:
- backend
- frontend
- ui_tests:
requires:
- frontend
nightly:
jobs:
- nightly-build
triggers:
- schedule:
cron: '0 0 * * *'
filters:
branches:
only:
- main