wagtail/.github/workflows/test.yml

339 wiersze
11 KiB
YAML

name: Wagtail CI
on:
push:
paths-ignore:
- 'docs/**'
pull_request:
paths-ignore:
- 'docs/**'
# 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 3.2, python 3.9, sqlite
# - django 4.0, python 3.9, mysql (allow failures)
# - django 3.2, python 3.10, postgres, USE_EMAIL_USER_MODEL=yes
# - django 3.2, 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 (allow failures)
# - elasticsearch 7, django 3.2, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes
jobs:
test-sqlite:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- python: "3.9"
django: "Django>=3.2,<3.3"
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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>=3.2,<3.3"
notz: notz
experimental: false
- python: "3.10"
django: "Django>=3.2,<3.3"
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
services:
postgres:
image: postgres:10.8
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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 }}"
- name: Test
run: |
./runtests.py
env:
DATABASE_ENGINE: django.db.backends.postgresql
DATABASE_HOST: localhost
DATABASE_USER: postgres
DATABASE_PASS: 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: true
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@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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>=3.2,<3.3"
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@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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_PASS: 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: true
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@v2
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v2
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_PASS: postgres
USE_EMAIL_USER_MODEL: ${{ matrix.emailuser }}