123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- name: Wagtail CI
- on:
- push:
- pull_request:
- # 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 master and active stable branch (allowing failures)
- # - test runs with USE_EMAIL_USER_MODEL=yes and DISABLE_TIMEZONE=yes
- # Current configuration:
- # - django 2.2, python 3.6, mysql
- # - django 3.0, python 3.7, sqlite
- # - django 3.1, python 3.8, postgres
- # - django 3.1, python 3.9, mysql
- # - django 3.1, python 3.9, sqlite
- # - django 3.1, python 3.9, postgres, USE_EMAIL_USER_MODEL=yes
- # - django 3.1, python 3.9, postgres, DISABLE_TIMEZONE=yes
- # - django stable/3.1.x, python 3.9, postgres (allow failures)
- # - django master, python 3.9, postgres (allow failures)
- # - elasticsearch 5, django 2.2, python 3.6, sqlite
- # - elasticsearch 6, django 3.0, python 3.7, postgres
- # - elasticsearch 7, django 3.1, python 3.8, postgres
- # - elasticsearch 7, django 3.1, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes
- jobs:
- test-sqlite:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- include:
- - python: 3.7
- django: "Django>=3.0,<3.1"
- - python: 3.9
- django: "Django>=3.1,<3.2"
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- - 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.8
- django: "Django>=3.1,<3.2"
- experimental: false
- - python: 3.9
- django: "Django>=3.1,<3.2"
- emailuser: emailuser
- experimental: false
- - python: 3.9
- django: "Django>=3.1,<3.2"
- notz: notz
- experimental: false
- - python: 3.9
- django: "git+https://github.com/django/django.git@stable/3.1.x#egg=Django"
- experimental: true
- - python: 3.9
- django: "git+https://github.com/django/django.git@master#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 "${{ matrix.django }}"
- pip install -e .[testing]
- - 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
- strategy:
- matrix:
- include:
- - python: 3.6
- django: "Django>=2.2,<3.0"
- - python: 3.9
- django: "Django>=3.1,<3.2"
- services:
- mysql:
- image: mysql:5.7
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- - 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.6
- django: "Django>=2.2,<3.0"
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- 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.1,<3.2"
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- 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.0,<3.1"
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- 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
- strategy:
- matrix:
- include:
- - python: 3.8
- django: "Django>=3.1,<3.2"
- 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 "${{ matrix.django }}"
- pip install -e .[testing]
- 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 }}
|