-
Notifications
You must be signed in to change notification settings - Fork 127
125 lines (114 loc) · 4.29 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
tests:
# The type of runner that the job will run on
runs-on: ubuntu-latest
strategy:
matrix:
DJANGO_VERSION: [ '2.2.*', '3.0.*', '3.1.*', '3.2.*', '4.0.*', '4.1.*', '4.2.*' ]
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
exclude:
- DJANGO_VERSION: '4.2.*'
python-version: '3.7'
- DJANGO_VERSION: '4.1.*'
python-version: '3.7'
- DJANGO_VERSION: '4.0.*'
python-version: '3.7'
- DJANGO_VERSION: '3.1.*'
python-version: '3.10'
- DJANGO_VERSION: '3.0.*'
python-version: '3.10'
- DJANGO_VERSION: '2.2.*'
python-version: '3.10'
- DJANGO_VERSION: '4.0.*'
python-version: '3.11'
- DJANGO_VERSION: '3.2.*'
python-version: '3.11'
- DJANGO_VERSION: '3.1.*'
python-version: '3.11'
- DJANGO_VERSION: '3.0.*'
python-version: '3.11'
- DJANGO_VERSION: '2.2.*'
python-version: '3.11'
fail-fast: false
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ hashFiles('setup.py') }}-${{ hashFiles('demo/requirements.txt') }}-${{ matrix.DJANGO_VERSION }}
- name: Install
run: |
pip install -q -e .
pip install -q --upgrade --upgrade-strategy eager -r demo/requirements.txt
pip install -q Django==${{ matrix.DJANGO_VERSION }}
pip install codecov
- name: Install django-sequences and psycopg2 for older Django versions
if: ${{ matrix.DJANGO_VERSION == '2.2.*' || matrix.DJANGO_VERSION == '3.0.*' }}
run: pip install "django-sequences<2.7" "psycopg2<2.9"
- name: Run migration check
run: |
OUTPUT=$(python demo/manage.py makemigrations --dry-run plans)
echo $OUTPUT | grep "No changes detected" &>/dev/null &&
echo "SUCCESS: Migrations check successful!" ||
{
echo $OUTPUT
echo "ERROR: Migrations check failed! Models' changes not migrated, please run './manage.py makemigrations' to solve the issue!" 1>&2;
FAILURE=1
}
- name: Testing
run: |
# Run tests for sample app used for testing extensibility
PYTHONPATH="." MANAGE_PY_PATH="demo/manage.py" SAMPLE_APP=1 demo/manage.py test example
case "${{ matrix.DJANGO_VERSION }},${{ matrix.python-version }}" in
2.2.*,3.7|3.0.*,3.7|3.1.*,3.7|3.2.*,3.7|4.0.*,3.8|4.0.*,3.9|4.0.*,3.10) # Django runs with warnings in this python version
PYTHONPATH="." MANAGE_PY_PATH="demo/manage.py" coverage run demo/manage.py test plans
;;
*)
PYTHONPATH="." MANAGE_PY_PATH="demo/manage.py" PYTHONWARNINGS="error::DeprecationWarning" coverage run demo/manage.py test plans
;;
esac
coverage xml && codecov
env:
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install
run: pip install flake8 isort black
- name: Running Flake8
run: flake8
- name: Running isort
run: isort
- name: Running black
run: black --check .