11version : 2.1
22
3+ orbs :
4+ slack : circleci/slack@4.2.0
5+
36commands :
47 return-if-not-deployed-branch :
58 description : >-
@@ -29,6 +32,64 @@ commands:
2932 name : Login to Quay
3033 command : docker login -u=$QUAY_USERNAME -p=$QUAY_PASSWORD quay.io
3134
35+ install-e2e-dependencies :
36+ description : Install E2E Tests Dependencies
37+ steps :
38+ - run :
39+ name : Install Dependencies
40+ command : |
41+ pip install -e ./test/e2e
42+ pip install https://s3-us-west-2.amazonaws.com/get-cortex/master/python/cortex-master.tar.gz
43+
44+ run-e2e-tests :
45+ description : Creates a temporary cluster and runs the cortex E2E tests
46+ parameters :
47+ provider :
48+ description : cloud provider
49+ type : enum
50+ enum : [gcp, aws]
51+ config :
52+ description : cluster config file path
53+ type : string
54+ default : ./cluster.yaml
55+ slack_channel :
56+ description : " slack channel where failed builds will be posted (should start with #)"
57+ type : string
58+ default : " #builds"
59+ steps :
60+ - when :
61+ condition :
62+ equal : [<< parameters.provider >>, "aws"]
63+ steps :
64+ - run :
65+ name : Create Cluster
66+ command : cortex cluster up --config << parameters.config >> --configure-env << parameters.provider >> -y
67+ - run :
68+ name : Run E2E Tests
69+ command : pytest -v test/e2e/tests -k << parameters.provider >> --<< parameters.provider >>-env << parameters.provider >>
70+ - run :
71+ name : Delete Cluster
72+ command : cortex cluster down --config << parameters.config >> -y
73+ when : always
74+ - when :
75+ condition :
76+ equal : [ << parameters.provider >>, "gcp" ]
77+ steps :
78+ - run :
79+ name : Create Cluster
80+ command : cortex cluster-gcp up --config << parameters.config >> --configure-env << parameters.provider >> -y
81+ - run :
82+ name : Run E2E Tests
83+ command : pytest -v test/e2e/tests -k << parameters.provider >> --<< parameters.provider >>-env << parameters.provider >>
84+ - run :
85+ name : Delete Cluster
86+ command : cortex cluster-gcp down --config << parameters.config >> -y
87+ when : always
88+ - slack/notify :
89+ event : fail
90+ channel : << parameters.slack_channel >>
91+ template : basic_fail_1
92+
3293jobs :
3394 test :
3495 docker :
48109 - run :
49110 name : Python Tests
50111 command : make test-python
112+
51113 build-and-deploy :
52114 docker :
53115 - image : circleci/python:3.6
@@ -68,8 +130,99 @@ jobs:
68130 no_output_timeout : 20m
69131 - run : make ci-build-and-upload-cli
70132
133+ e2e-tests-aws :
134+ docker :
135+ - image : circleci/python:3.6
136+ environment :
137+ CORTEX_TEST_BATCH_S3_PATH : s3://cortex-dev-nightly/test/jobs
138+ steps :
139+ - checkout
140+ - setup_remote_docker
141+ - install-e2e-dependencies
142+ - run :
143+ name : Initialize Credentials
144+ command : |
145+ echo 'export AWS_ACCESS_KEY_ID=${NIGHTLY_AWS_ACCESS_KEY_ID}' >> $BASH_ENV
146+ echo 'export AWS_SECRET_ACCESS_KEY=${NIGHTLY_AWS_SECRET_ACCESS_KEY}' >> $BASH_ENV
147+ - run :
148+ name : Generate Cluster Config
149+ command : |
150+ cat \<< EOF > ./cluster.yaml
151+ cluster_name: cortex
152+ provider: aws
153+ region: us-east-1
154+ instance_type: g4dn.xlarge
155+ min_instances: 1
156+ max_instances: 2
157+ bucket: cortex-dev-nightly
158+
159+ image_operator: quay.io/cortexlabs/operator:master
160+ image_manager: quay.io/cortexlabs/manager:master
161+ image_downloader: quay.io/cortexlabs/downloader:master
162+ image_request_monitor: quay.io/cortexlabs/request-monitor:master
163+ image_cluster_autoscaler: quay.io/cortexlabs/cluster-autoscaler:master
164+ image_metrics_server: quay.io/cortexlabs/metrics-server:master
165+ image_inferentia: quay.io/cortexlabs/inferentia:master
166+ image_neuron_rtd: quay.io/cortexlabs/neuron-rtd:master
167+ image_nvidia: quay.io/cortexlabs/nvidia:master
168+ image_fluent_bit: quay.io/cortexlabs/fluent-bit:master
169+ image_istio_proxy: quay.io/cortexlabs/istio-proxy:master
170+ image_istio_pilot: quay.io/cortexlabs/istio-pilot:master
171+ image_prometheus: quay.io/cortexlabs/prometheus:master
172+ image_prometheus_config_reloader: quay.io/cortexlabs/prometheus-config-reloader:master
173+ image_prometheus_operator: quay.io/cortexlabs/prometheus-operator:master
174+ image_prometheus_statsd_exporter: quay.io/cortexlabs/prometheus-statsd-exporter:master
175+ image_grafana: quay.io/cortexlabs/grafana:master
176+ EOF
177+ - run-e2e-tests :
178+ provider : aws
179+ config : ./cluster.yaml
180+
181+ e2e-tests-gcp :
182+ docker :
183+ - image : circleci/python:3.6
184+ steps :
185+ - checkout
186+ - setup_remote_docker
187+ - install-e2e-dependencies
188+ - run :
189+ name : Initialize Credentials
190+ command : |
191+ echo ${NIGHTLY_GOOGLE_APPLICATION_CREDENTIALS} > ./google_service_account.json
192+ echo 'export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/google_service_account.json' >> $BASH_ENV
193+ - run :
194+ name : Generate Cluster Config
195+ command : |
196+ cat \<< EOF > ./cluster.yaml
197+ cluster_name: cortex
198+ project: cortexlabs-dev
199+ zone: us-central1-a
200+ provider: gcp
201+ instance_type: n1-standard-2
202+ accelerator_type: nvidia-tesla-t4
203+ min_instances: 1
204+ max_instances: 2
205+
206+ image_operator: quay.io/cortexlabs/operator:master
207+ image_manager: quay.io/cortexlabs/manager:master
208+ image_downloader: quay.io/cortexlabs/downloader:master
209+ image_request_monitor: quay.io/cortexlabs/request-monitor:master
210+ image_istio_proxy: quay.io/cortexlabs/istio-proxy:master
211+ image_istio_pilot: quay.io/cortexlabs/istio-pilot:master
212+ image_google_pause: quay.io/cortexlabs/google-pause:master
213+ image_prometheus: quay.io/cortexlabs/prometheus:master
214+ image_prometheus_config_reloader: quay.io/cortexlabs/prometheus-config-reloader:master
215+ image_prometheus_operator: quay.io/cortexlabs/prometheus-operator:master
216+ image_prometheus_statsd_exporter: quay.io/cortexlabs/prometheus-statsd-exporter:master
217+ image_grafana: quay.io/cortexlabs/grafana:master
218+ EOF
219+ - run-e2e-tests :
220+ provider : gcp
221+ config : ./cluster.yaml
222+
71223workflows :
72224 version : 2.1
225+
73226 build :
74227 jobs :
75228 - test
@@ -90,3 +243,14 @@ workflows:
90243 only :
91244 - master
92245 - /^[0-9]+\.[0-9]+$/
246+ nightly :
247+ triggers :
248+ - schedule :
249+ cron : " 0 0 * * *"
250+ filters :
251+ branches :
252+ only :
253+ - master
254+ jobs :
255+ - e2e-tests-aws
256+ - e2e-tests-gcp
0 commit comments