@@ -22,17 +22,35 @@ commands:
22
22
(mkdir -p deps; cd deps; git clone https://github.com/RedisLabsModules/readies.git)
23
23
PIP=1 ./deps/readies/bin/getpy3
24
24
python3 -m pip install -r ./deps/readies/paella/requirements.txt
25
+
26
+ load-cached-deps :
27
+ steps :
28
+ # Load GraphBLAS from cache if possible.
29
+ - restore_cache :
30
+ keys :
31
+ - GraphBLAS4.0-{{checksum "./deps/GraphBLAS/README.md"}}
25
32
26
- jobs :
27
- build :
28
- docker :
29
- - image : ' redisfab/rmbuilder:6.0.9-x64-bionic'
30
- environment :
31
- LANG : en_US.UTF-8
32
- LANGUAGE : en_US.UTF-8
33
- LC_ALL : en_US.UTF-8
33
+ # Load libcypher-parser from cache if possible.
34
+ - restore_cache :
35
+ keys :
36
+ - libcypher-parser-{{checksum "./deps/libcypher-parser/README.md"}}
37
+
38
+ save-deps-cache :
39
+ steps :
40
+ # Save GraphBLAS to cache.
41
+ - save_cache :
42
+ paths :
43
+ - deps/GraphBLAS
44
+ key : GraphBLAS4.0-{{checksum "./deps/GraphBLAS/README.md"}}
45
+
46
+ # Save libcypher-parser to cache.
47
+ - save_cache :
48
+ paths :
49
+ - deps/libcypher-parser
50
+ key : libcypher-parser-{{checksum "./deps/libcypher-parser/README.md"}}
51
+
52
+ setup-prerequisits :
34
53
steps :
35
- - checkout
36
54
- run :
37
55
name : Fetch submodules
38
56
command : |
@@ -59,49 +77,34 @@ jobs:
59
77
locale-gen --purge en_US.UTF-8
60
78
dpkg-reconfigure -f noninteractive locales
61
79
80
+ jobs :
81
+ build :
82
+ docker :
83
+ - image : ' redisfab/rmbuilder:6.0.9-x64-bionic'
84
+ environment :
85
+ LANG : en_US.UTF-8
86
+ LANGUAGE : en_US.UTF-8
87
+ LC_ALL : en_US.UTF-8
88
+ steps :
89
+ - checkout
90
+ - setup-prerequisits
62
91
- setup-automation
63
-
64
- # Validate source complies with formatting
65
- # - run:
66
- # name: Formatting
67
- # command: astyle --options=.astylerc -R "./*.c,*.h" --dry-run -Q
68
-
69
- # Load GraphBLAS from cache if possible.
70
- - restore_cache :
71
- keys :
72
- - GraphBLAS4.0-{{checksum "./deps/GraphBLAS/README.md"}}
73
-
74
- # Load libcypher-parser from cache if possible.
75
- - restore_cache :
76
- keys :
77
- - libcypher-parser-{{checksum "./deps/libcypher-parser/lib/src/parser.leg"}}
92
+ - load-cached-deps
78
93
79
94
- run :
80
95
name : Build
81
96
command : make
82
97
83
- # Save GraphBLAS to cache.
84
- - save_cache :
85
- paths :
86
- - deps/GraphBLAS
87
- key : GraphBLAS4.0-{{checksum "./deps/GraphBLAS/README.md"}}
98
+ - save-deps-cache
88
99
89
- # Save libcypher-parser to cache.
90
- - save_cache :
91
- paths :
92
- - deps/libcypher-parser
93
- key : libcypher-parser-{{checksum "./deps/libcypher-parser/README.md"}}
94
-
95
- - run :
96
- name : Test
97
- command : make test
98
100
- early_return_for_forked_pull_requests
99
101
100
102
- run :
101
103
name : Persist Artifacts
102
104
command : |
103
105
strip src/$MODULE_ARTIFACT
104
- mkdir -p /workspace/build && cp src/$MODULE_ARTIFACT /workspace
106
+ mkdir -p /workspace/build
107
+ cp src/$MODULE_ARTIFACT /workspace
105
108
cp ramp.yml /workspace/
106
109
107
110
- persist_to_workspace :
@@ -111,12 +114,45 @@ jobs:
111
114
- ramp.yml
112
115
- build
113
116
117
+ build_test :
118
+ docker :
119
+ - image : ' redisfab/rmbuilder:6.0.9-x64-bionic'
120
+ environment :
121
+ LANG : en_US.UTF-8
122
+ LANGUAGE : en_US.UTF-8
123
+ LC_ALL : en_US.UTF-8
124
+ steps :
125
+ - checkout
126
+ - setup-prerequisits
127
+ - setup-automation
128
+ - attach_workspace :
129
+ at : /workspace
130
+ - load-cached-deps
131
+
132
+ - run :
133
+ name : Test
134
+ command : make test
135
+
136
+ build_memcheck :
137
+ docker :
138
+ - image : ' redisfab/rmbuilder:6.0.9-x64-bionic'
139
+ environment :
140
+ LANG : en_US.UTF-8
141
+ LANGUAGE : en_US.UTF-8
142
+ LC_ALL : en_US.UTF-8
143
+ steps :
144
+ - checkout
145
+ - setup-prerequisits
146
+ - setup-automation
147
+ - load-cached-deps
148
+ - attach_workspace :
149
+ at : /workspace
150
+
114
151
- run :
115
152
name : Test for memory leaks
116
153
command : |
117
154
# Replace the default Redis server with one linked to libc malloc rather than jemalloc.
118
155
python ./deps/readies/bin/getredis --force --valgrind
119
- make clean
120
156
make memcheck # Re-run the test suite, failing if definite memory leaks have been introduced.
121
157
# Allow RediSearch global destructors.
122
158
environment :
@@ -208,6 +244,41 @@ jobs:
208
244
name : Run QA Automation
209
245
command : MODULE_VERSION=$CIRCLE_BRANCH VERBOSE=1 TEST=nightly QUICK=1 ./tests/qa/run
210
246
247
+ performance_ci_automation :
248
+ docker :
249
+ - image : ' redisfab/rmbuilder:6.0.9-x64-bionic'
250
+ steps :
251
+ - checkout
252
+ - attach_workspace :
253
+ at : /workspace
254
+ - run :
255
+ name : Install remote benchmark tool dependencies
256
+ command : TF_EXE_FILE_NAME=/workspace/terraform ./tests/benchmarks/remote/install_deps.sh
257
+ - run :
258
+ name : Install remote benchmark python dependencies
259
+ command : python3 -m pip install -r ./tests/benchmarks/requirements.txt
260
+ - run :
261
+ name : Run CI benchmarks on aws
262
+ command : |
263
+ cd ./tests/benchmarks
264
+ export AWS_ACCESS_KEY_ID=$PERFORMANCE_EC2_ACCESS_KEY
265
+ export AWS_SECRET_ACCESS_KEY=$PERFORMANCE_EC2_SECRET_KEY
266
+ export AWS_DEFAULT_REGION=$PERFORMANCE_EC2_REGION
267
+ export EC2_PRIVATE_PEM=$PERFORMANCE_EC2_PRIVATE_PEM
268
+
269
+ python3 remote-runner.py \
270
+ --terraform_bin_path /workspace/terraform \
271
+ --module_path /workspace/$MODULE_ARTIFACT \
272
+ --github_actor $CIRCLE_USERNAME \
273
+ --github_repo $CIRCLE_PROJECT_REPONAME \
274
+ --github_org $CIRCLE_PROJECT_USERNAME \
275
+ --github_sha $CIRCLE_SHA1 \
276
+ --github_branch $CIRCLE_BRANCH \
277
+ --upload_results_s3 \
278
+ --triggering_env circleci \
279
+ --push_results_redistimeseries
280
+
281
+
211
282
212
283
on-any-branch : &on-any-branch
213
284
filters :
@@ -250,14 +321,24 @@ workflows:
250
321
jobs :
251
322
- build :
252
323
<< : *on-any-branch
324
+ - build_test :
325
+ << : *on-any-branch
326
+ requires :
327
+ - build
328
+ - build_memcheck :
329
+ << : *on-any-branch
330
+ requires :
331
+ - build
253
332
- package_branch :
254
333
<< : *on-master
255
334
requires :
256
- - build
335
+ - build_test
336
+ - build_memcheck
257
337
- package_release :
258
338
<< : *on-version-tags
259
339
requires :
260
- - build
340
+ - build_test
341
+ - build_memcheck
261
342
- deploy_branch :
262
343
requires :
263
344
- package_branch
@@ -268,6 +349,10 @@ workflows:
268
349
<< : *on-version-tags
269
350
requires :
270
351
- package_release
352
+ - performance_ci_automation :
353
+ << : *on-any-branch
354
+ requires :
355
+ - build_test
271
356
272
357
nightly :
273
358
triggers :
0 commit comments