0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-11-25 05:02:57 +01:00
wagtail/.github/workflows/test.yml
sag᠎e bb2c826cbc
Use PostgreSQL 11 when testing against Django main (#8489)
Django dropped support for PostgreSQL 10 as of Django 4.1
2022-05-05 10:47:38 +01:00

346 lines
11 KiB
YAML

name: Wagtail CI
on:
push:
paths-ignore:
- 'docs/**'
pull_request:
paths-ignore:
- 'docs/**'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# 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)
# - test runs with USE_EMAIL_USER_MODEL=yes and DISABLE_TIMEZONE=yes
# Current configuration:
# - django 3.2, python 3.7, postgres
# - django 3.2, python 3.8, mysql
# - django 4.0, python 3.9, sqlite
# - django 4.0, python 3.9, mysql
# - django 4.0, python 3.10, postgres, USE_EMAIL_USER_MODEL=yes
# - django 4.0, python 3.10, postgres, DISABLE_TIMEZONE=yes
# - django stable/4.0.x, python 3.10, postgres (allow failures)
# - django main, python 3.10, postgres (allow failures)
# - elasticsearch 5, django 3.2, python 3.7, sqlite
# - elasticsearch 6, django 3.2, python 3.7, postgres
# - elasticsearch 7, django 4.0, python 3.8, postgres
# - elasticsearch 7, django 4.0, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes
jobs:
test-sqlite:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- python: '3.9'
django: 'Django>=4.0,<4.1'
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
- 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
- python: '3.10'
django: 'Django>=4.0,<4.1'
notz: notz
experimental: false
- python: '3.10'
django: 'Django>=4.0,<4.1'
experimental: false
emailuser: emailuser
- python: '3.10'
django: 'git+https://github.com/django/django.git@stable/4.0.x#egg=Django'
experimental: true
- python: '3.10'
django: 'git+https://github.com/django/django.git@main#egg=Django'
experimental: true
postgres: 'postgres:11'
services:
postgres:
image: ${{ matrix.postgres || 'postgres:10.8' }}
env:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
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 }}
- name: Test
run: |
./runtests.py
env:
DATABASE_ENGINE: django.db.backends.postgresql
DATABASE_HOST: localhost
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
DISABLE_TIMEZONE: ${{ matrix.notz }}
test-mysql:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- python: '3.8'
django: 'Django>=3.2,<3.3'
experimental: false
- python: '3.9'
django: 'Django>=4.0,<4.1'
experimental: false
services:
mysql:
image: mysql:8.0.23
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
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
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 }}"
- 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:
- python: '3.7'
django: 'Django>=3.2,<3.3'
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
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
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'
django: 'Django>=4.0,<4.1'
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
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[testing]
pip install "${{ matrix.django }}"
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'
django: 'Django>=3.2,<3.3'
services:
postgres:
image: postgres:10.8
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
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
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 }}"
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
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}
test-postgres-elasticsearch7:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- python: '3.8'
django: 'Django>=4.0,<4.1'
experimental: false
services:
postgres:
image: postgres:10.8
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
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v3
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 }}"
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
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}