2020-11-04 19:37:55 +01:00
|
|
|
name: Wagtail CI
|
|
|
|
|
|
|
|
on:
|
|
|
|
push:
|
2021-02-04 19:00:46 +01:00
|
|
|
paths-ignore:
|
|
|
|
- 'docs/**'
|
2020-11-04 19:37:55 +01:00
|
|
|
pull_request:
|
2021-02-04 19:00:46 +01:00
|
|
|
paths-ignore:
|
|
|
|
- 'docs/**'
|
2020-11-04 19:37:55 +01:00
|
|
|
|
2022-04-04 20:49:43 +02:00
|
|
|
concurrency:
|
|
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
|
|
cancel-in-progress: true
|
|
|
|
|
2020-11-04 19:37:55 +01:00
|
|
|
# Our test suite should cover:
|
|
|
|
# - all supported databases against current Python and Django
|
|
|
|
# - at least one test run for each older supported version of Python and Django
|
|
|
|
# - at least one test run for each supported Elasticsearch version
|
2021-03-09 11:56:05 +01:00
|
|
|
# - a test run against Django's git main and active stable branch (allowing failures)
|
2020-11-04 19:37:55 +01:00
|
|
|
# - test runs with USE_EMAIL_USER_MODEL=yes and DISABLE_TIMEZONE=yes
|
|
|
|
|
|
|
|
# Current configuration:
|
2023-07-21 11:37:24 +02:00
|
|
|
# - django 3.2, python 3.8, postgres, parallel
|
2022-01-06 12:38:52 +01:00
|
|
|
# - django 3.2, python 3.8, mysql
|
2023-04-03 16:09:22 +02:00
|
|
|
# - django 4.1, python 3.9, sqlite
|
2023-07-21 11:37:24 +02:00
|
|
|
# - django 4.2, python 3.10, mysql, parallel
|
|
|
|
# - django 4.1, python 3.10, postgres, parallel, USE_EMAIL_USER_MODEL=yes
|
|
|
|
# - django 4.2, python 3.11, postgres, parallel, DISABLE_TIMEZONE=yes
|
2023-01-25 14:16:43 +01:00
|
|
|
# - django stable/4.2.x, python 3.10, postgres (allow failures)
|
2023-07-21 11:37:24 +02:00
|
|
|
# - django main, python 3.10, postgres, parallel (allow failures)
|
2023-07-13 21:02:20 +02:00
|
|
|
# - elasticsearch 5, django 3.2, python 3.8, sqlite
|
|
|
|
# - elasticsearch 6, django 3.2, python 3.8, postgres
|
2023-04-03 16:09:22 +02:00
|
|
|
# - elasticsearch 7, django 4.1, python 3.8, postgres
|
2023-07-13 19:39:11 +02:00
|
|
|
# - elasticsearch 8, django 4.2, python 3.10, sqlite, USE_EMAIL_USER_MODEL=yes
|
2020-11-04 19:37:55 +01:00
|
|
|
|
2023-07-21 11:37:24 +02:00
|
|
|
# Some tests are run in parallel by passing --parallel to runtests.py.
|
|
|
|
# When running tests in parallel, some errors cannot be pickled and result in
|
|
|
|
# non-helpful tracebacks (see https://code.djangoproject.com/ticket/29023).
|
|
|
|
# Thus, we keep one test run without --parallel for each supported database.
|
|
|
|
# ElasticSearch tests are not run in parallel as the test suite is not thread-safe.
|
|
|
|
|
2022-09-19 23:17:03 +02:00
|
|
|
permissions:
|
|
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
|
2020-11-04 19:37:55 +01:00
|
|
|
jobs:
|
|
|
|
test-sqlite:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2022-01-06 12:38:52 +01:00
|
|
|
- python: '3.9'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.1,<4.2'
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
steps:
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Test
|
|
|
|
run: |
|
2022-10-03 17:43:04 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.sqlite3
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
test-postgres:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
continue-on-error: ${{ matrix.experimental }}
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2023-07-13 21:02:20 +02:00
|
|
|
- python: '3.8'
|
2021-04-08 17:56:51 +02:00
|
|
|
django: 'Django>=3.2,<3.3'
|
|
|
|
experimental: false
|
2023-07-21 11:37:24 +02:00
|
|
|
parallel: '--parallel'
|
2022-10-25 13:57:15 +02:00
|
|
|
- python: '3.11'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.2,<4.3'
|
|
|
|
postgres: 'postgres:12'
|
2022-01-06 12:38:52 +01:00
|
|
|
notz: notz
|
2020-11-04 19:37:55 +01:00
|
|
|
experimental: false
|
2023-07-21 11:37:24 +02:00
|
|
|
parallel: '--parallel'
|
2021-10-06 12:42:56 +02:00
|
|
|
- python: '3.10'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.1,<4.2'
|
2020-11-04 19:37:55 +01:00
|
|
|
experimental: false
|
2022-01-06 12:38:52 +01:00
|
|
|
emailuser: emailuser
|
2023-07-21 11:37:24 +02:00
|
|
|
parallel: '--parallel'
|
2022-01-06 12:38:52 +01:00
|
|
|
- python: '3.10'
|
2023-01-25 14:16:43 +01:00
|
|
|
django: 'git+https://github.com/django/django.git@stable/4.2.x#egg=Django'
|
2020-11-04 19:37:55 +01:00
|
|
|
experimental: true
|
2022-06-29 11:18:41 +02:00
|
|
|
postgres: 'postgres:12'
|
2021-10-06 12:42:56 +02:00
|
|
|
- python: '3.10'
|
2021-03-09 11:56:05 +01:00
|
|
|
django: 'git+https://github.com/django/django.git@main#egg=Django'
|
2020-11-04 19:37:55 +01:00
|
|
|
experimental: true
|
2022-05-20 05:35:02 +02:00
|
|
|
postgres: 'postgres:12'
|
2023-07-21 11:37:24 +02:00
|
|
|
parallel: '--parallel'
|
2023-04-20 02:23:47 +02:00
|
|
|
install_extras: |
|
2023-06-09 17:31:29 +02:00
|
|
|
pip uninstall -y django-modelcluster
|
2023-04-20 02:23:47 +02:00
|
|
|
pip install \
|
2023-06-09 17:31:29 +02:00
|
|
|
git+https://github.com/wagtail/django-modelcluster.git@main#egg=django-modelcluster
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
services:
|
|
|
|
postgres:
|
2022-08-03 14:11:52 +02:00
|
|
|
image: ${{ matrix.postgres || 'postgres:11' }}
|
2022-05-05 11:47:38 +02:00
|
|
|
env:
|
|
|
|
POSTGRES_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
ports:
|
|
|
|
- 5432:5432
|
|
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
|
|
|
|
|
|
steps:
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install "psycopg2>=2.6"
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2022-02-22 22:57:41 +01:00
|
|
|
${{ matrix.install_extras }}
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Test
|
|
|
|
run: |
|
2023-07-21 11:37:24 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py ${{ matrix.parallel }}
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.postgresql
|
|
|
|
DATABASE_HOST: localhost
|
|
|
|
DATABASE_USER: postgres
|
2022-05-05 11:47:38 +02:00
|
|
|
DATABASE_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
|
|
|
|
DISABLE_TIMEZONE: ${{ matrix.notz }}
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
test-mysql:
|
|
|
|
runs-on: ubuntu-latest
|
2022-01-06 12:38:52 +01:00
|
|
|
continue-on-error: ${{ matrix.experimental }}
|
2020-11-04 19:37:55 +01:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2022-01-06 12:38:52 +01:00
|
|
|
- python: '3.8'
|
2021-04-08 17:56:51 +02:00
|
|
|
django: 'Django>=3.2,<3.3'
|
2022-01-06 12:38:52 +01:00
|
|
|
experimental: false
|
2022-10-25 13:57:15 +02:00
|
|
|
- python: '3.10'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.2,<4.3'
|
2022-01-07 11:32:22 +01:00
|
|
|
experimental: false
|
2023-07-21 11:37:24 +02:00
|
|
|
parallel: '--parallel'
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
services:
|
|
|
|
mysql:
|
2021-04-16 21:41:32 +02:00
|
|
|
image: mysql:8.0.23
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
|
|
|
MYSQL_DATABASE: wagtail
|
|
|
|
ports:
|
|
|
|
- 3306:3306
|
2023-02-14 15:13:21 +01:00
|
|
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 --cap-add=sys_nice
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
steps:
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install "mysqlclient>=1.4,<2"
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Test
|
|
|
|
run: |
|
2023-07-21 11:37:24 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py ${{ matrix.parallel }}
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.mysql
|
|
|
|
DATABASE_HOST: '127.0.0.1'
|
|
|
|
DATABASE_USER: root
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
# https://github.com/elastic/elastic-github-actions doesn't work for Elasticsearch 5,
|
|
|
|
# but https://github.com/getong/elasticsearch-action does
|
|
|
|
test-sqlite-elasticsearch5:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2023-07-13 21:02:20 +02:00
|
|
|
- python: '3.8'
|
2022-01-06 12:38:52 +01:00
|
|
|
django: 'Django>=3.2,<3.3'
|
2020-11-04 19:37:55 +01:00
|
|
|
steps:
|
|
|
|
- name: Configure sysctl limits
|
|
|
|
run: |
|
|
|
|
sudo swapoff -a
|
|
|
|
sudo sysctl -w vm.swappiness=1
|
|
|
|
sudo sysctl -w fs.file-max=262144
|
|
|
|
sudo sysctl -w vm.max_map_count=262144
|
|
|
|
- uses: getong/elasticsearch-action@v1.2
|
|
|
|
with:
|
|
|
|
elasticsearch version: 5.6.9
|
|
|
|
host port: 9200
|
|
|
|
container port: 9200
|
|
|
|
host node port: 9300
|
|
|
|
node port: 9300
|
|
|
|
discovery type: 'single-node'
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2020-11-04 19:37:55 +01:00
|
|
|
pip install "elasticsearch>=5,<6"
|
|
|
|
pip install certifi
|
|
|
|
- name: Test
|
|
|
|
run: |
|
2022-10-03 17:43:04 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch5
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.sqlite3
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
2023-07-13 19:39:11 +02:00
|
|
|
test-sqlite-elasticsearch8:
|
2020-11-04 19:37:55 +01:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2023-07-13 19:39:11 +02:00
|
|
|
- python: '3.10'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.2,<4.3'
|
2020-11-04 19:37:55 +01:00
|
|
|
emailuser: emailuser
|
|
|
|
steps:
|
|
|
|
- name: Configure sysctl limits
|
|
|
|
run: |
|
|
|
|
sudo swapoff -a
|
|
|
|
sudo sysctl -w vm.swappiness=1
|
|
|
|
sudo sysctl -w fs.file-max=262144
|
|
|
|
sudo sysctl -w vm.max_map_count=262144
|
|
|
|
- uses: getong/elasticsearch-action@v1.2
|
|
|
|
with:
|
2023-07-13 19:39:11 +02:00
|
|
|
elasticsearch version: 8.8.0
|
2020-11-04 19:37:55 +01:00
|
|
|
host port: 9200
|
|
|
|
container port: 9200
|
|
|
|
host node port: 9300
|
|
|
|
node port: 9300
|
|
|
|
discovery type: 'single-node'
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2023-07-13 21:26:08 +02:00
|
|
|
pip install "elasticsearch>=8,<9"
|
2020-11-04 19:37:55 +01:00
|
|
|
pip install certifi
|
|
|
|
- name: Test
|
|
|
|
run: |
|
2023-07-13 19:39:11 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch8
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.sqlite3
|
|
|
|
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
# https://github.com/getong/elasticsearch-action doesn't work for Elasticsearch 6,
|
|
|
|
# but https://github.com/elastic/elastic-github-actions does
|
|
|
|
test-postgres-elasticsearch6:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2023-07-13 21:02:20 +02:00
|
|
|
- python: '3.8'
|
2022-01-06 12:38:52 +01:00
|
|
|
django: 'Django>=3.2,<3.3'
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
services:
|
|
|
|
postgres:
|
2022-08-03 14:11:52 +02:00
|
|
|
image: postgres:11
|
|
|
|
env:
|
|
|
|
POSTGRES_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
ports:
|
|
|
|
- 5432:5432
|
|
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Configure sysctl limits
|
|
|
|
run: |
|
|
|
|
sudo swapoff -a
|
|
|
|
sudo sysctl -w vm.swappiness=1
|
|
|
|
sudo sysctl -w fs.file-max=262144
|
|
|
|
sudo sysctl -w vm.max_map_count=262144
|
|
|
|
- uses: elastic/elastic-github-actions/elasticsearch@master
|
|
|
|
with:
|
|
|
|
stack-version: 6.8.13
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install "psycopg2>=2.6"
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2020-11-04 19:37:55 +01:00
|
|
|
pip install "elasticsearch>=6,<7"
|
|
|
|
pip install certifi
|
|
|
|
- name: Test
|
|
|
|
run: |
|
2022-10-03 17:43:04 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch6
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.postgresql
|
|
|
|
DATABASE_HOST: localhost
|
|
|
|
DATABASE_USER: postgres
|
2022-05-05 11:47:38 +02:00
|
|
|
DATABASE_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
test-postgres-elasticsearch7:
|
|
|
|
runs-on: ubuntu-latest
|
2022-01-06 12:38:52 +01:00
|
|
|
continue-on-error: ${{ matrix.experimental }}
|
2020-11-04 19:37:55 +01:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2021-10-06 12:42:56 +02:00
|
|
|
- python: '3.8'
|
2023-04-03 16:09:22 +02:00
|
|
|
django: 'Django>=4.1,<4.2'
|
2022-01-07 11:32:22 +01:00
|
|
|
experimental: false
|
2020-11-04 19:37:55 +01:00
|
|
|
|
|
|
|
services:
|
|
|
|
postgres:
|
2022-08-03 14:11:52 +02:00
|
|
|
image: postgres:11
|
|
|
|
env:
|
|
|
|
POSTGRES_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
ports:
|
|
|
|
- 5432:5432
|
|
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Configure sysctl limits
|
|
|
|
run: |
|
|
|
|
sudo swapoff -a
|
|
|
|
sudo sysctl -w vm.swappiness=1
|
|
|
|
sudo sysctl -w fs.file-max=262144
|
|
|
|
sudo sysctl -w vm.max_map_count=262144
|
|
|
|
- uses: elastic/elastic-github-actions/elasticsearch@master
|
|
|
|
with:
|
|
|
|
stack-version: 7.6.1
|
2022-04-04 20:49:43 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Set up Python ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
uses: actions/setup-python@v4
|
2020-11-04 19:37:55 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python }}
|
2023-07-21 12:16:48 +02:00
|
|
|
cache: 'pip'
|
2020-11-04 19:37:55 +01:00
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install "psycopg2>=2.6"
|
|
|
|
pip install -e .[testing]
|
2022-01-05 16:55:38 +01:00
|
|
|
pip install "${{ matrix.django }}"
|
2020-11-04 19:37:55 +01:00
|
|
|
pip install "elasticsearch>=7,<8"
|
|
|
|
pip install certifi
|
|
|
|
- name: Test
|
|
|
|
run: |
|
2022-10-03 17:43:04 +02:00
|
|
|
coverage run --parallel-mode --source wagtail runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch7
|
2020-11-04 19:37:55 +01:00
|
|
|
env:
|
|
|
|
DATABASE_ENGINE: django.db.backends.postgresql
|
|
|
|
DATABASE_HOST: localhost
|
|
|
|
DATABASE_USER: postgres
|
2022-05-05 11:47:38 +02:00
|
|
|
DATABASE_PASSWORD: postgres
|
2020-11-04 19:37:55 +01:00
|
|
|
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
|
2022-10-03 17:43:04 +02:00
|
|
|
- name: Upload coverage data
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
path: .coverage.*
|
|
|
|
|
|
|
|
coverage:
|
|
|
|
needs:
|
|
|
|
- test-sqlite
|
|
|
|
- test-postgres
|
|
|
|
- test-mysql
|
|
|
|
- test-sqlite-elasticsearch5
|
2023-07-13 19:39:11 +02:00
|
|
|
- test-sqlite-elasticsearch8
|
2022-10-03 17:43:04 +02:00
|
|
|
- test-postgres-elasticsearch6
|
|
|
|
- test-postgres-elasticsearch7
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Check out the repo
|
|
|
|
uses: actions/checkout@v3
|
|
|
|
|
|
|
|
- name: Set up Python
|
|
|
|
uses: actions/setup-python@v4
|
|
|
|
with:
|
|
|
|
python-version: '3.10'
|
|
|
|
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install coverage
|
|
|
|
|
|
|
|
- name: Download coverage data
|
|
|
|
uses: actions/download-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-data
|
|
|
|
|
|
|
|
- name: Combine coverage data
|
|
|
|
run: |
|
|
|
|
coverage combine
|
2023-07-24 12:06:00 +02:00
|
|
|
|
|
|
|
- name: Generate coverage report
|
|
|
|
run: |
|
|
|
|
coverage report -m --skip-covered --skip-empty | sed 's/^/ /' >> $GITHUB_STEP_SUMMARY
|
|
|
|
coverage html --skip-covered --skip-empty
|
|
|
|
|
|
|
|
- name: Upload HTML report as artifact
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: coverage-report
|
|
|
|
path: coverage_html_report
|
2022-10-03 17:43:04 +02:00
|
|
|
|
|
|
|
- name: Upload coverage to Codecov
|
|
|
|
uses: codecov/codecov-action@v3
|
|
|
|
with:
|
|
|
|
flags: backend
|