0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-12-01 03:31:04 +01:00
wagtail/.github/workflows/test.yml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

352 lines
11 KiB
YAML
Raw Normal View History

2020-11-04 19:37:55 +01:00
name: Wagtail CI
on:
push:
paths-ignore:
- 'docs/**'
2020-11-04 19:37:55 +01:00
pull_request:
paths-ignore:
- 'docs/**'
2020-11-04 19:37:55 +01: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
# - 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:
2022-01-06 12:38:52 +01:00
# - django 3.2, python 3.7, postgres
# - django 3.2, python 3.8, mysql
2022-01-07 11:32:22 +01:00
# - django 4.0, python 3.9, sqlite
2022-08-03 13:32:11 +02:00
# - django 4.1, python 3.9, mysql
2022-01-07 11:32:22 +01:00
# - django 4.0, python 3.10, postgres, USE_EMAIL_USER_MODEL=yes
2022-08-03 13:32:11 +02:00
# - django 4.1, python 3.10, postgres, DISABLE_TIMEZONE=yes
# - django stable/4.1.x, python 3.10, postgres (allow failures)
# - django main, python 3.10, postgres (allow failures)
2022-01-06 12:38:52 +01:00
# - elasticsearch 5, django 3.2, python 3.7, sqlite
# - elasticsearch 6, django 3.2, python 3.7, postgres
2022-01-07 11:32:22 +01:00
# - elasticsearch 7, django 4.0, python 3.8, postgres
2022-08-03 13:32:11 +02:00
# - elasticsearch 7, django 4.1, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes
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'
2022-01-07 11:32:22 +01:00
django: 'Django>=4.0,<4.1'
2020-11-04 19:37:55 +01:00
steps:
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
- name: Test
run: |
./runtests.py
env:
DATABASE_ENGINE: django.db.backends.sqlite3
test-postgres:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- python: '3.7'
django: 'Django>=3.2,<3.3'
experimental: false
2022-01-06 12:38:52 +01:00
- python: '3.10'
2022-08-03 13:32:11 +02:00
django: 'Django>=4.1,<4.2'
2022-01-06 12:38:52 +01:00
notz: notz
2020-11-04 19:37:55 +01:00
experimental: false
- python: '3.10'
2022-01-07 11:32:22 +01:00
django: 'Django>=4.0,<4.1'
2020-11-04 19:37:55 +01:00
experimental: false
2022-01-06 12:38:52 +01:00
emailuser: emailuser
- python: '3.10'
django: 'git+https://github.com/django/django.git@stable/4.1.x#egg=Django'
2020-11-04 19:37:55 +01:00
experimental: true
postgres: 'postgres:12'
- python: '3.10'
django: 'git+https://github.com/django/django.git@main#egg=Django'
install_extras: 'pip uninstall -y djangorestframework ; pip install git+https://github.com/encode/django-rest-framework.git@master#egg=djangorestframework'
2020-11-04 19:37:55 +01:00
experimental: true
postgres: 'postgres:12'
2020-11-04 19:37:55 +01:00
services:
postgres:
2022-08-03 14:11:52 +02:00
image: ${{ matrix.postgres || '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:
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install "psycopg2>=2.6"
pip install -e .[testing]
pip install "${{ matrix.django }}"
${{ matrix.install_extras }}
2020-11-04 19:37:55 +01:00
- name: Test
run: |
./runtests.py
env:
DATABASE_ENGINE: django.db.backends.postgresql
DATABASE_HOST: localhost
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
2020-11-04 19:37:55 +01:00
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
DISABLE_TIMEZONE: ${{ matrix.notz }}
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'
django: 'Django>=3.2,<3.3'
2022-01-06 12:38:52 +01:00
experimental: false
- python: '3.9'
2022-08-03 13:32:11 +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:
mysql:
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
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install "mysqlclient>=1.4,<2"
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
- name: Test
run: |
./runtests.py
env:
DATABASE_ENGINE: django.db.backends.mysql
DATABASE_HOST: '127.0.0.1'
DATABASE_USER: root
# 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:
2021-11-17 21:19:30 +01:00
- python: '3.7'
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'
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
pip install "elasticsearch>=5,<6"
pip install certifi
- name: Test
run: |
./runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch5
env:
DATABASE_ENGINE: django.db.backends.sqlite3
test-sqlite-elasticsearch7:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- python: '3.9'
2022-08-03 13:32:11 +02:00
django: 'Django>=4.1,<4.2'
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:
elasticsearch version: 7.6.1
host port: 9200
container port: 9200
host node port: 9300
node port: 9300
discovery type: 'single-node'
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
pip install "elasticsearch>=7,<8"
pip install certifi
- name: Test
run: |
./runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch7
env:
DATABASE_ENGINE: django.db.backends.sqlite3
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
# 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:
- python: '3.7'
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
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install "psycopg2>=2.6"
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
pip install "elasticsearch>=6,<7"
pip install certifi
- name: Test
run: |
./runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch6
env:
DATABASE_ENGINE: django.db.backends.postgresql
DATABASE_HOST: localhost
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
2020-11-04 19:37:55 +01:00
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
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:
- python: '3.8'
2022-01-06 12:38:52 +01:00
django: 'Django>=4.0,<4.1'
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
- uses: actions/checkout@v3
2020-11-04 19:37:55 +01:00
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
2020-11-04 19:37:55 +01:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install "psycopg2>=2.6"
pip install -e .[testing]
pip install "${{ matrix.django }}"
2020-11-04 19:37:55 +01:00
pip install "elasticsearch>=7,<8"
pip install certifi
- name: Test
run: |
./runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch7
env:
DATABASE_ENGINE: django.db.backends.postgresql
DATABASE_HOST: localhost
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
2020-11-04 19:37:55 +01:00
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}