1-
2- # Python CircleCI 2.0 configuration file
3- #
4- # Check https://circleci.com/docs/2.0/language-python/ for more details
5- #
6- version : 2
7- jobs :
8- build :
9- docker :
10- - image : circleci/python:2.7.15
11- - image : redislabs/redisearch: latest
12-
13- working_directory : ~/repo
14-
15- steps :
1+ version : 2.1
2+
3+ commands :
4+ test-steps :
5+ parameters :
6+ python_ver :
7+ type : string
8+ default : " 3 "
9+ redisearch_ver :
10+ type : string
11+ default : latest
12+ coverage :
13+ type : boolean
14+ default : true
15+ steps :
1616 - checkout
1717
1818 - restore_cache : # Download and cache dependencies
2626 command : |
2727 virtualenv venv
2828 . venv/bin/activate
29+ python --version
2930 pip install -r requirements.txt
30- pip install codecov
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+ __
3139
3240 - save_cache :
3341 paths :
@@ -42,68 +50,120 @@ jobs:
4250 name : run tests
4351 command : |
4452 . venv/bin/activate
45- REDIS_PORT=6379 coverage run test/test.py
46- REDIS_PORT=6379 coverage run -a test/test_builder.py
47- codecov
48-
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
62+
4963 - store_artifacts :
5064 path : test-reports
5165 destination : test-reports
5266
53- build_nightly :
54- docker :
55- - image : circleci/python:2.7.15
56- - image : redislabs/redisearch:edge
57-
58- working_directory : ~/repo
5967
68+ jobs :
69+ test :
70+ parameters :
71+ python_ver :
72+ type : string
73+ default : " 3"
74+ redisearch_ver :
75+ type : string
76+ default : latest
77+ coverage :
78+ type : boolean
79+ default : true
80+ docker :
81+ - image : circleci/python:<<parameters.python_ver >>
82+ - image : redislabs/redisearch:<<parameters.redisearch_ver >>
6083 steps :
61- - checkout
62-
63- - restore_cache : # Download and cache dependencies
64- keys :
65- - v1-dependencies-{{ checksum "requirements.txt" }}
66- # fallback to using the latest cache if no exact match is found
67- - v1-dependencies-
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
6891
69- - run :
70- name : install dependencies
71- command : |
72- virtualenv venv
73- . venv/bin/activate
74- pip install -r requirements.txt
75-
76- - save_cache :
77- paths :
78- - ./venv
79- key : v1-dependencies-{{ checksum "requirements.txt" }}
92+ working_directory : ~/repo
8093
81- - run :
82- name : run tests
83- command : |
84- . venv/bin/activate
85- REDIS_PORT=6379 python test/test.py
8694
87- - run :
88- name : run query builder tests
89- command : |
90- . venv/bin/activate
91- REDIS_PORT=6379 python test/test_builder.py
95+ on-any-branch : &on-any-branch
96+ filters :
97+ branches :
98+ only : /.*/
99+ tags :
100+ only : /.*/
101+
102+ never : &never
103+ filters :
104+ branches :
105+ ignore : /.*/
106+ tags :
107+ ignore : /.*/
108+
109+ 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+ filters :
123+ branches :
124+ only :
125+ - master
126+ tags :
127+ only : /^v[0-9].*/
92128
93- # no need for store_artifacts on nightly builds
94129
95130workflows :
96131 version : 2
97132 commit :
98133 jobs :
99- - build
134+ - test :
135+ name : build
136+ python_ver : " 3"
137+ redisearch_ver : latest
138+ coverage : yes
139+ << : *on-any-branch
140+ - test :
141+ name : test_py2_latest
142+ python_ver : " 2.7"
143+ redisearch_ver : latest
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
158+
100159 nightly :
101160 triggers :
102161 - schedule :
103162 cron : " 0 0 * * *"
104- filters :
105- branches :
106- only :
107- - master
163+ << : *on-master
108164 jobs :
109- - build_nightly
165+ - test :
166+ name : test-nightly
167+ python_ver : " 3"
168+ redisearch_ver : edge
169+ coverage : no
0 commit comments