1
1
version : 2.1
2
2
3
3
commands :
4
- test-steps :
5
- parameters :
6
- python_ver :
7
- type : string
8
- default : " 3"
9
- redisearch_ver :
10
- type : string
11
- default : edge
12
- coverage :
13
- type : boolean
14
- default : true
15
- steps :
4
+
5
+ abort_for_docs :
6
+ steps :
7
+ - run :
8
+ name : Avoid tests for docs
9
+ command : |
10
+ if [[ $CIRCLE_BRANCH == *docs ]]; then
11
+ echo "Identifies as documents PR, no testing required"
12
+ circleci step halt
13
+ fi
14
+
15
+ abort_for_noci :
16
+ steps :
17
+ - run :
18
+ name : Ignore CI for specific branches
19
+ command : |
20
+ if [[ $CIRCLE_BRANCH == *noci ]]; then
21
+ echo "Identifies as actively ignoring CI, no testing required."
22
+ circleci step halt
23
+ fi
24
+
25
+
26
+ early_return_for_forked_pull_requests :
27
+ description : >-
28
+ If this build is from a fork, stop executing the current job and return success.
29
+ This is useful to avoid steps that will fail due to missing credentials.
30
+ steps :
31
+ - run :
32
+ name : Early return if this build is from a forked PR
33
+ command : |
34
+ if [[ -n "$CIRCLE_PR_NUMBER" ]]; then
35
+ echo "Nothing to do for forked PRs, so marking this step successful"
36
+ circleci step halt
37
+ fi
38
+
39
+ build_and_test :
40
+ steps :
41
+ - abort_for_docs
42
+ - abort_for_noci
16
43
- checkout
17
44
18
45
- restore_cache : # Download and cache dependencies
19
46
keys :
20
- - v1-dependencies-{{ checksum "requirements.txt " }}
47
+ - v1-dependencies-{{ checksum "pyproject.toml " }}
21
48
# fallback to using the latest cache if no exact match is found
22
49
- v1-dependencies-
23
50
51
+ - run :
52
+ name : install tox dependencies
53
+ command : |
54
+ pip install --user --quiet -r .circleci/circle_requirements.txt
55
+
24
56
- run :
25
57
name : install dependencies
26
58
command : |
27
- virtualenv venv
28
- . venv/bin/activate
29
- python --version
30
- pip install -r requirements.txt
31
- pip install --force-reinstall git+https://github.com/RedisLabs/rmtest.git
32
- <<# parameters.coverage >> pip install codecov <</ parameters.coverage >>
33
- python - \<<'__'
34
- import redis
35
- r = redis.Redis(decode_responses=True)
36
- print(r.execute_command('info server'))
37
- print(r.execute_command('info modules'))
38
- __
39
-
40
- - save_cache :
41
- paths :
42
- - ./venv
43
- key : v1-dependencies-{{ checksum "requirements.txt" }}
59
+ poetry install
44
60
45
61
- run :
46
- name : test dist
47
- command : python setup.py sdist
62
+ name : build sdist and wheels
63
+ command : |
64
+ poetry build
48
65
49
66
- run :
50
- name : run tests
67
+ name : lint
51
68
command : |
52
- . venv/bin/activate
53
- <<# parameters.coverage >> COV=1 <</ parameters.coverage >>
54
- if [[ $COV == 1 ]]; then
55
- REDIS_PORT=6379 coverage run test/test.py
56
- REDIS_PORT=6379 coverage run -a test/test_builder.py
57
- codecov
58
- else
59
- REDIS_PORT=6379 python test/test.py
60
- REDIS_PORT=6379 python test/test_builder.py
61
- fi
69
+ tox -e linters
70
+
71
+ - run :
72
+ name : run tests
73
+ command :
74
+ tox -e cover
75
+
76
+ - save_cache :
77
+ paths :
78
+ - ./.tox
79
+ - ~/.cache/pip
80
+ key : v1-dependencies-{{ checksum "pyproject.toml" }}
62
81
63
82
- store_artifacts :
64
83
path : test-reports
65
84
destination : test-reports
66
85
67
-
68
86
jobs :
69
- test :
87
+ build :
70
88
parameters :
71
- python_ver :
72
- type : string
73
- default : " 3"
74
- redisearch_ver :
89
+ python_version :
75
90
type : string
76
- default : edge
77
- coverage :
78
- type : boolean
79
- default : true
91
+ default : latest
80
92
docker :
81
- - image : circleci/python:<<parameters.python_ver >>
82
- - image : redislabs/redisearch:<<parameters.redisearch_ver >>
93
+ - image : circleci/python:<<parameters.python_version >>
94
+ - image : redislabs/redisearch:edge
83
95
steps :
84
- - test-steps :
85
- python_ver : <<parameters.python_ver>>
86
- redisearch_ver : <<parameters.redisearch_ver>>
87
- coverage : <<parameters.coverage>>
88
- - store_artifacts :
89
- path : test-reports
90
- destination : test-reports
91
-
92
- working_directory : ~/repo
93
-
96
+ - build_and_test
94
97
95
98
on-any-branch : &on-any-branch
96
99
filters :
@@ -99,71 +102,35 @@ on-any-branch: &on-any-branch
99
102
tags :
100
103
only : /.*/
101
104
102
- never : &never
103
- filters :
104
- branches :
105
- ignore : /.*/
106
- tags :
107
- ignore : /.*/
108
-
109
105
on-master : &on-master
110
- filters :
111
- branches :
112
- only : master
113
-
114
- on-version-tags : &on-version-tags
115
- filters :
116
- branches :
117
- ignore : /.*/
118
- tags :
119
- only : /^v[0-9].*/
120
-
121
- on-master-and-version-tags : &on-master-and-version-tags
122
106
filters :
123
107
branches :
124
108
only :
125
109
- master
126
- tags :
127
- only : /^v[0-9].*/
128
110
111
+ # the is to build and test, per commit against all supported python versions
112
+ python-versions : &python-versions
113
+ matrix :
114
+ parameters :
115
+ python_version :
116
+ - " 3.6.9"
117
+ - " 3.7.9"
118
+ - " 3.8.9"
119
+ - " 3.9.4"
120
+ - " latest"
129
121
130
122
workflows :
131
123
version : 2
132
124
commit :
133
125
jobs :
134
- - test :
135
- name : build
136
- python_ver : " 3"
137
- redisearch_ver : edge
138
- coverage : yes
139
- << : *on-any-branch
140
- - test :
141
- name : test_py2_latest
142
- python_ver : " 2.7"
143
- redisearch_ver : edge
144
- coverage : yes
145
- << : *on-any-branch
146
- - test :
147
- name : test_py3_search1.6
148
- python_ver : " 3"
149
- redisearch_ver : " 1.6.14"
150
- coverage : yes
151
- << : *on-any-branch
152
- - test :
153
- name : test_py2_search1.6
154
- python_ver : " 2.7"
155
- redisearch_ver : " 1.6.14"
156
- coverage : yes
157
- << : *on-any-branch
126
+ - build :
127
+ << : *on-any-branch
128
+ << : *python-versions
158
129
159
130
nightly :
160
131
triggers :
161
132
- schedule :
162
133
cron : " 0 0 * * *"
163
134
<< : *on-master
164
135
jobs :
165
- - test :
166
- name : test-nightly
167
- python_ver : " 3"
168
- redisearch_ver : edge
169
- coverage : no
136
+ - build
0 commit comments