@@ -53,19 +53,18 @@ build-layer ({{ $runtime.name }}-{{ $runtime.arch }}):
5353 variables:
5454 CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true"
5555 script:
56- - exit 0
5756 - PYTHON_VERSION={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./scripts/build_layers.sh
5857
59- # check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } }):
60- # stage: test
61- # tags: ["arch:amd64"]
62- # image: registry.ddbuild.io/images/docker:20.10
63- # needs:
64- # - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
65- # dependencies:
66- # - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
67- # script:
68- # - PYTHON_VERSION={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./scripts/check_layer_size.sh
58+ check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } }):
59+ stage: test
60+ tags: ["arch:amd64"]
61+ image: registry.ddbuild.io/images/docker:20.10
62+ needs:
63+ - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
64+ dependencies:
65+ - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
66+ script:
67+ - PYTHON_VERSION={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./scripts/check_layer_size.sh
6968
7069lint python:
7170 stage: test
@@ -74,39 +73,38 @@ lint python:
7473 cache: & { { $runtime .name } }-{ { $runtime .arch } }-cache
7574 before_script: *python-before-script
7675 script:
77- - exit 0
7876 - source venv/bin/activate
7977 - ./scripts/check_format.sh
8078
81- # unit-test ({ { $runtime .name } }-{ { $runtime .arch } }):
82- # stage: test
83- # tags: ["arch:amd64"]
84- # image: registry.ddbuild.io/images/mirror/python:{ { $runtime .image } }
85- # cache: & { { $runtime .name } }-{ { $runtime .arch } }-cache
86- # before_script: *python-before-script
87- # script:
88- # - source venv/bin/activate
89- # - pytest -vv
79+ unit-test ({ { $runtime .name } }-{ { $runtime .arch } }):
80+ stage: test
81+ tags: ["arch:amd64"]
82+ image: registry.ddbuild.io/images/mirror/python:{ { $runtime .image } }
83+ cache: & { { $runtime .name } }-{ { $runtime .arch } }-cache
84+ before_script: *python-before-script
85+ script:
86+ - source venv/bin/activate
87+ - pytest -vv
9088
91- # integration-test ({ { $runtime .name } }-{ { $runtime .arch } }):
92- # stage: test
93- # tags: ["arch:amd64"]
94- # image: registry.ddbuild.io/images/docker:20.10-py3
95- # needs:
96- # - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
97- # dependencies:
98- # - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
99- # cache: & { { $runtime .name } }-{ { $runtime .arch } }-cache
100- # variables:
101- # CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true"
102- # before_script:
103- # - *install-node
104- # - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh
105- # - yarn global add serverless@^3.38.0 --prefix /usr/local
106- # - yarn global add serverless-python-requirements@^6.1.1 --prefix /usr/local
107- # - cd integration_tests && yarn install && cd ..
108- # script:
109- # - RUNTIME_PARAM={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./scripts/run_integration_tests.sh
89+ integration-test ({ { $runtime .name } }-{ { $runtime .arch } }):
90+ stage: test
91+ tags: ["arch:amd64"]
92+ image: registry.ddbuild.io/images/docker:20.10-py3
93+ needs:
94+ - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
95+ dependencies:
96+ - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
97+ cache: & { { $runtime .name } }-{ { $runtime .arch } }-cache
98+ variables:
99+ CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true"
100+ before_script:
101+ - *install-node
102+ - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh
103+ - yarn global add serverless@^3.38.0 --prefix /usr/local
104+ - yarn global add serverless-python-requirements@^6.1.1 --prefix /usr/local
105+ - cd integration_tests && yarn install && cd ..
106+ script:
107+ - RUNTIME_PARAM={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./scripts/run_integration_tests.sh
110108
111109sign-layer ({ { $runtime .name } }-{ { $runtime .arch } }):
112110 stage: sign
@@ -117,10 +115,10 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}):
117115 when: manual
118116 needs:
119117 - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
120- # - check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } })
118+ - check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } })
121119 - lint python
122- # - unit-test ({ { $runtime .name } }-{ { $runtime .arch } })
123- # - integration-test ({ { $runtime .name } }-{ { $runtime .arch } })
120+ - unit-test ({ { $runtime .name } }-{ { $runtime .arch } })
121+ - integration-test ({ { $runtime .name } }-{ { $runtime .arch } })
124122 dependencies:
125123 - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
126124 artifacts: # Re specify artifacts so the modified signed file is passed
@@ -158,10 +156,10 @@ publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}):
158156 - sign-layer ({ { $runtime .name } }-{ { $runtime .arch} })
159157{ { else } }
160158 - build-layer ({ { $runtime .name } }-{ { $runtime .arch } })
161- # - check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } })
159+ - check-layer-size ({ { $runtime .name } }-{ { $runtime .arch } })
162160 - lint python
163- # - unit-test ({ { $runtime .name } }-{ { $runtime .arch } })
164- # - integration-test ({ { $runtime .name } }-{ { $runtime .arch } })
161+ - unit-test ({ { $runtime .name } }-{ { $runtime .arch } })
162+ - integration-test ({ { $runtime .name } }-{ { $runtime .arch } })
165163{ { end } }
166164 dependencies:
167165{ { if or (eq $environment_name " prod" ) } }
@@ -178,7 +176,6 @@ publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}):
178176 - EXTERNAL_ID_NAME={ { $environment .external_id } } ROLE_TO_ASSUME={ { $environment .role_to_assume } } AWS_ACCOUNT={ { $environment .account } } source ./ci/get_secrets.sh
179177 script:
180178 - |
181- exit 0
182179 STAGE={ { $environment_name } } PYTHON_VERSION={ { $runtime .python_version } } ARCH={ { $runtime .arch } } ./ci/publish_layers.sh | tee publish.log
183180 # Extract the arn from the publish log to be used as envvar in e2e tests
184181 layer_arn="$(grep 'Published arn' publish.log | grep -oE 'arn:aws:lambda:.*')"
@@ -229,7 +226,6 @@ layer bundle:
229226 - datadog_lambda_py-bundle-${ CI_JOB_ID} /
230227 name: datadog_lambda_py-bundle-${ CI_JOB_ID}
231228 script:
232- - exit 0
233229 - rm -rf datadog_lambda_py-bundle-${ CI_JOB_ID}
234230 - mkdir -p datadog_lambda_py-bundle-${ CI_JOB_ID}
235231 - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-bundle-${ CI_JOB_ID}
@@ -283,13 +279,13 @@ e2e-status:
283279 image: registry.ddbuild.io/images/mirror/alpine:latest
284280 tags: ["arch:amd64"]
285281 needs:
282+ - e2e-test
286283 { {- range (ds " runtimes" ).runtimes } }
287284 { {- if eq .arch " amd64" } }
288285 - "publish-layer-sandbox ({ { .name } }-{ { .arch } }): [{ { $e2e_region } }]"
289286 { {- end } }
290287 { {- end } }
291288 script:
292- - apk add --no-cache curl jq
293289 - echo "Python layer ARNs used in E2E tests:"
294290 { {- range (ds " runtimes" ).runtimes } }
295291 { {- if eq .arch " amd64" } }
@@ -299,39 +295,21 @@ e2e-status:
299295 { {- end } }
300296 - |
301297 # TODO: link to the test results
298+ # make this job start running at same time as e2e-test job
302299 # do not wait around for the scheduled job to complete
303- echo "🔄 Waiting for E2E tests to complete..."
304- URL="${ CI_API_V4_URL} /projects/${ CI_PROJECT_ID} /pipelines/${ CI_PIPELINE_ID} /bridges"
305- echo "Fetching E2E job status from: $URL"
306- env
307- while true; do
308- # Get the e2e-test job status
309- #RESPONSE=$(curl -s --header "JOB-TOKEN: ${ CI_JOB_TOKEN} " "$URL")
310- RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${ GITLAB_API_TOKEN} " "$URL")
311- echo "Response: $RESPONSE"
312- E2E_JOB_STATUS=$(echo "$RESPONSE" | jq -r '.[] | select(.name=="e2e-test") | .pipeline.status')
313- echo "E2E job status: $E2E_JOB_STATUS"
314- case "$E2E_JOB_STATUS" in
315- "success")
316- echo "✅ E2E tests completed successfully"
317- exit 0
318- ;;
319- "failed")
320- echo "❌ E2E tests failed"
321- echo "💡 Look for pipelines triggered around $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
322- exit 1
323- ;;
324- "canceled")
325- echo "⚠️ E2E tests were canceled"
326- exit 1
327- ;;
328- "running"|"pending"|"created")
329- echo "⏳ E2E tests still running..."
330- sleep 30
331- ;;
332- *)
333- echo "❓ Unknown E2E test status: $E2E_JOB_STATUS"
334- sleep 30
335- ;;
336- esac
337- done
300+ switch "${ CI_JOB_STATUS} " in
301+ "success")
302+ echo "✅ E2E tests completed successfully"
303+ ;;
304+ "failed")
305+ echo "❌ E2E tests failed"
306+ exit 1
307+ ;;
308+ "canceled")
309+ echo "❌ E2E tests were canceled"
310+ exit 1
311+ ;;
312+ *)
313+ echo "❌ E2E tests unknown status: ${ CI_JOB_STATUS} "
314+ exit 1
315+ esac
0 commit comments