Skip to content

Commit a673042

Browse files
author
Miguel Varela Ramos
authored
Nightly build for E2E Tests (#1856)
1 parent ec4d66b commit a673042

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed

.circleci/config.yml

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
version: 2.1
22

3+
orbs:
4+
slack: circleci/slack@4.2.0
5+
36
commands:
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+
3293
jobs:
3394
test:
3495
docker:
@@ -48,6 +109,7 @@ jobs:
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+
71223
workflows:
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

Comments
 (0)