Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
235 commits
Select commit Hold shift + click to select a range
06cd30f
Test
nccatoni Mar 31, 2026
2934c37
Clean
nccatoni Mar 31, 2026
81f74d6
Test matrix
nccatoni Mar 31, 2026
314ca4a
Go big
nccatoni Mar 31, 2026
624134d
Job split
nccatoni Apr 1, 2026
1a062cd
Factorizing
nccatoni Apr 1, 2026
5289a67
Docker pull
nccatoni Apr 1, 2026
17aca81
pip
nccatoni Apr 1, 2026
e16695b
More complex example
nccatoni Apr 1, 2026
23d959e
Docker auth
nccatoni Apr 1, 2026
adb929a
No github CI
nccatoni Apr 1, 2026
d6ca990
Running scenarios
nccatoni Apr 1, 2026
7818c06
Test real test pipeline
nccatoni Apr 1, 2026
0538cc1
All variants
nccatoni Apr 1, 2026
058047f
Compute parameters
nccatoni Apr 1, 2026
d0ff6e1
debug
nccatoni Apr 2, 2026
ca57838
Java
nccatoni Apr 2, 2026
0cb88a6
Multi library
nccatoni Apr 2, 2026
1a99738
Merge branch 'main' into nccatoni/gitlab
nccatoni Apr 2, 2026
2b1087f
Remove scenarios that require an API key
nccatoni Apr 2, 2026
3eed24b
Excluding scenario needing -L
nccatoni Apr 2, 2026
90b64bf
Merge branch 'main' into nccatoni/gitlab
nccatoni Apr 20, 2026
43ef6a6
Moving test pipeline to final dir
nccatoni May 15, 2026
226937f
Refactor
nccatoni May 15, 2026
b908a59
Split build and run into separate CI jobs per variant
nccatoni May 15, 2026
6cea00f
Add scenarios input to GitLab pipeline
nccatoni May 15, 2026
4966def
Add scenarios_groups input to GitLab pipeline
nccatoni May 15, 2026
e7b71fd
Add excluded_scenarios input to GitLab pipeline
nccatoni May 15, 2026
b7ed4ed
Add weblogs input to GitLab pipeline
nccatoni May 15, 2026
1f08341
Add binaries_artifact input to GitLab pipeline
nccatoni May 15, 2026
c550d56
Add force_execute input to GitLab pipeline
nccatoni May 15, 2026
65e3d60
Add skip_empty_scenarios input to GitLab pipeline
nccatoni May 15, 2026
1564762
Add parametric_job_count input to GitLab pipeline
nccatoni May 18, 2026
247c5a2
Add push_to_test_optimization input to GitLab pipeline
nccatoni May 18, 2026
c91d50b
Remove implementation plans
nccatoni May 18, 2026
4bf58f7
Add log sections for build and run steps in generated jobs
nccatoni May 18, 2026
9620625
Add Datadog custom spans to build and run steps
nccatoni May 18, 2026
61395cb
Revert "Add Datadog custom spans to build and run steps"
nccatoni May 18, 2026
8ed9080
Small cleanup
nccatoni May 18, 2026
361fbf7
ln the venv
nccatoni May 18, 2026
7e3d36c
Runner build optimization
nccatoni May 18, 2026
656688b
Fix import ref path
nccatoni May 18, 2026
c6f40a8
Cancel pipeline on new commit on same branch
nccatoni May 18, 2026
d0b22e2
Mark all build and run jobs as interruptible
nccatoni May 18, 2026
2f8ff6b
Make auto-cancel configurable and disable it on default branch
nccatoni May 18, 2026
90955d1
Add plan for moving CI image to system-tests repo
nccatoni May 18, 2026
decc17f
Update CI image plan: place Dockerfile under utils/ci/gitlab/docker/
nccatoni May 18, 2026
47d4291
Update CI image plan: keep libdatadog-build image for backward compat…
nccatoni May 18, 2026
82f44c0
Update CI image plan: use ./build.sh -i runner instead of manual pip …
nccatoni May 18, 2026
340e47c
Update CI image plan: use multi-stage build to keep only the venv
nccatoni May 18, 2026
e74440c
Print CI_REGISTRY_IMAGE to verify registry path
nccatoni May 18, 2026
a580095
Print registry-related CI variables to determine correct image path
nccatoni May 18, 2026
6301c68
Remove registry debug job, hardcode registry path to registry.ddbuild…
nccatoni May 18, 2026
c2c631e
Add CI image Dockerfile
nccatoni May 18, 2026
077da02
Build and use content-addressed CI image from system-tests repo
nccatoni May 18, 2026
e15c704
Move build_ci_image to .gitlab-ci.yml
nccatoni May 18, 2026
22d53a9
Clone system-tests when pipeline runs from another repository
nccatoni May 18, 2026
8813747
Removing docker login steps from image builder job
nccatoni May 19, 2026
0501629
Using template workflow for system-tests
nccatoni May 19, 2026
a7b3e29
Separate image tag resolution
nccatoni May 19, 2026
f3f7edb
Using custom git image
nccatoni May 19, 2026
45fbdcd
Simple image with git for the resolve_ci_image job
nccatoni May 19, 2026
770f806
Moving binaries out of the clone way
nccatoni May 20, 2026
8d058c7
Exclude the slowest scenario
nccatoni May 20, 2026
bad39eb
Adding dd-sts
nccatoni May 20, 2026
3262bf8
Improved section management
nccatoni May 22, 2026
ea614fe
fix section_start not found in after_script
nccatoni May 22, 2026
2fd001b
Test
nccatoni May 22, 2026
c09da23
Update base image version
nccatoni May 22, 2026
a2c45ea
Updating node version
nccatoni May 22, 2026
3d75799
Cleanup and adding custom tag to the pipeline
nccatoni May 22, 2026
625b219
Docker hub auth for end to end jobs
nccatoni May 26, 2026
9497ed9
Adding lib argument to end to end jobs for INTEGRATION_FRAMEWORKS
nccatoni May 26, 2026
93fdca5
cleanup
nccatoni May 26, 2026
f67ba1a
compute-workflow-parameters: add --workflows filter flag
nccatoni May 26, 2026
02eb0f3
ci/gitlab: add aws-ssi.yml for sequential AWS SSI pipeline
nccatoni May 26, 2026
2a97fd9
ci/gitlab: add dockerssi.yml and libinjection.yml Jinja2 templates
nccatoni May 26, 2026
a7baba0
ci/gitlab: extend build_pipeline.py and system-tests.yml with SSI sup…
nccatoni May 26, 2026
df52e8e
ci/gitlab: add build_stage, run_stage, and SSI inputs to main.yml
nccatoni May 26, 2026
97f3538
gitlab-ci: include aws-ssi.yml, add publish job, expand stages
nccatoni May 26, 2026
84432eb
ci/gitlab: add tests for dockerssi, libinjection, and SSI variable fo…
nccatoni May 26, 2026
1bf5a58
ci/gitlab: use needs: for ordering, single stage input per component
nccatoni May 26, 2026
34b474f
ci/gitlab: remove dead SSI variables from endtoend run jobs
nccatoni May 26, 2026
8caf369
ci/gitlab: replace parallel matrices with explicit Jinja2 loops
nccatoni May 26, 2026
e230e8d
fix: handle missing workflow keys when --workflows filter is active
nccatoni May 26, 2026
2bf3d64
ci/gitlab: add workflow names to child pipelines
nccatoni May 26, 2026
268f891
route aws-ssi.yml through main.yml
nccatoni May 26, 2026
b1f43a4
fix: lint and after_script artifact paths
nccatoni May 26, 2026
d506afa
fix: respect libraries input in aws-ssi pipelines
nccatoni May 26, 2026
26dd6f6
fix: make cross-language ssi pipeline needs optional
nccatoni May 26, 2026
6fc588d
fix: skip SSI pipelines when no SSI scenarios match the scenario list
nccatoni May 26, 2026
e900822
fix: remove --workflows flag and correct ssi_check.env path
nccatoni May 26, 2026
a079581
fix: rules use runtime dotenv vars - revert to library-only gating
nccatoni May 26, 2026
fe00219
refactor: replace 6 ssi trigger jobs with single run_ssi_pipeline
nccatoni May 26, 2026
5a8b5b7
fix: don't prefix stage names in merged SSI pipeline
nccatoni May 26, 2026
6ae1387
fix: restrict aws-ssi pipeline to aws_ssi workflow only
nccatoni May 26, 2026
b97ab0a
refactor: move docker/k8s ssi scenarios from e2e pipeline to ssi pipe…
nccatoni May 26, 2026
93f8e5d
chore: remove orphan SSI templates, stale tests, unused --workflows flag
nccatoni May 26, 2026
22f1e81
refactor: rename aws-ssi.yml to ssi.yml
nccatoni May 26, 2026
6332f45
fix(ssi): restore sequential per-language child pipelines
nccatoni May 27, 2026
fd7f410
test
nccatoni May 27, 2026
8a9ac7b
fix: handle comma-separated inputs.libraries in for loops
nccatoni May 27, 2026
02b43bf
test
nccatoni May 27, 2026
f059a4b
Updating end to end pipeline name
nccatoni May 27, 2026
400833e
gitlab: dynamically select libraries from modified files
nccatoni May 27, 2026
d2d1638
move generate_wrapper_pipeline.py to utils/scripts/ci_orchestrators
nccatoni May 27, 2026
373ed76
fix: include remote SSI template directly in parent pipeline
nccatoni May 27, 2026
fa04737
compute_libraries: use default git strategy instead of manual clone
nccatoni May 27, 2026
e0aab27
fix compute_libraries rules and diff base for GitHub mirror setup
nccatoni May 27, 2026
3ea3b59
fix: unshallow clone before git merge-base
nccatoni May 27, 2026
7521ea2
fix: hardcode main branch instead of CI_DEFAULT_BRANCH
nccatoni May 27, 2026
eb96a20
gitlab: one child pipeline per library
nccatoni May 27, 2026
10755c4
Removing -L
nccatoni May 28, 2026
94b3bfd
Test
nccatoni May 28, 2026
d48d856
gitlab: retry docker hub auth up to 3 times
nccatoni May 28, 2026
937e99a
Add -L for scenarios that require it
nccatoni May 28, 2026
106c78c
Adding weblog flag for weblogs that require it
nccatoni May 28, 2026
e4b3ab8
Run only python
nccatoni May 29, 2026
cc899bb
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
c46a804
Merge branch 'main' into nccatoni/gitlab
nccatoni May 29, 2026
4ebb7b9
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
9e21faf
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
054d39c
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
7d52a97
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
d588f94
restore original SSI pipeline in .gitlab-ci.yml, add push-gated end-t…
nccatoni May 29, 2026
aa147f1
Clean dynamic parameter selection
nccatoni May 29, 2026
9588112
gitlab: split generated pipeline into 2 chunks, single trigger job
nccatoni May 29, 2026
7052113
gitlab: fix trigger include when only one chunk is needed
nccatoni May 29, 2026
560ef62
gitlab: skip trigger when no libraries, guard chunk-1 fallback
nccatoni May 29, 2026
5a280ef
gitlab: export param.env as dotenv artifact
nccatoni May 29, 2026
82bf0c7
gitlab: remove quotes around LIBRARIES value in param.env
nccatoni May 29, 2026
7c89456
fix
nccatoni Jun 8, 2026
824b51c
gitlab: add debug prints for libraries, scenarios, scenario_groups
nccatoni Jun 8, 2026
210f8d6
gitlab: skip git clone in resolve_ci_image when build_ci_image alread…
nccatoni Jun 8, 2026
5f389c3
gitlab: add skip_resolve_ci_image input to fully skip the job
nccatoni Jun 8, 2026
b71416a
Revert "gitlab: skip git clone in resolve_ci_image when build_ci_imag…
nccatoni Jun 8, 2026
204a39f
gitlab: clean up libraries/scenarios/scenario_groups display values
nccatoni Jun 8, 2026
7a71691
gitlab: fix empty weblogs filter wiping all endtoend jobs
nccatoni Jun 8, 2026
4fe3807
gitlab: use CI variable instead of component input in resolve_ci_imag…
nccatoni Jun 8, 2026
2af88f8
gitlab: replace grep with sed to avoid exit 1 on empty input
nccatoni Jun 8, 2026
9eebf8f
gitlab: use compute_libraries_and_scenarios in system-tests-param
nccatoni Jun 8, 2026
18131aa
gitlab: split into 3 chunks to stay under 5 MiB limit
nccatoni Jun 8, 2026
dab06f0
gitlab: one child pipeline per chunk instead of merged single pipeline
nccatoni Jun 8, 2026
2833510
gitlab: move header guard into template, remove fragile line-scanning…
nccatoni Jun 8, 2026
3cd642a
gitlab: run MOCK_THE_TEST collect to generate real scenarios.json
nccatoni Jun 8, 2026
6ce2b53
gitlab: symlink venv before run.sh to prevent runner rebuild
nccatoni Jun 8, 2026
fdf6e84
gitlab: fix weblog host in DinD by setting SYSTEM_TESTS_WEBLOG_HOST
nccatoni Jun 8, 2026
37d9ebc
gitlab: use per-weblog scenario pairs instead of flat cross-product
nccatoni Jun 8, 2026
ad77a46
gitlab: fix undefined needs for weblogs that skip the build step
nccatoni Jun 8, 2026
5144f70
gitlab: skip binaries mv and run build for weblogs that don't require…
nccatoni Jun 8, 2026
f0cd5fa
Merge branch 'main' into nccatoni/gitlab
nccatoni Jun 8, 2026
6c03b86
Fix
nccatoni Jun 8, 2026
1b22d29
fix
nccatoni Jun 8, 2026
6bd1c72
gitlab: add zstd to ci-runner image
nccatoni Jun 9, 2026
bcbdbb6
fix
nccatoni Jun 9, 2026
db736a7
Export more logs
nccatoni Jun 9, 2026
4bd9f23
gitlab: capture network/DNS diagnostics for weblog -> postgres
nccatoni Jun 9, 2026
3b3a2a4
gitlab: move weblog/postgres diagnostics to after_script + log file
nccatoni Jun 9, 2026
bb45169
gitlab: filter LIBRARIES via E2E_SUPPORTED_LANGUAGES in system-tests-…
nccatoni Jun 10, 2026
99e93c0
gitlab: set E2E_SUPPORTED_LANGUAGES to python
nccatoni Jun 10, 2026
882bc64
gitlab: remove unused generate_wrapper_pipeline.py
nccatoni Jun 10, 2026
9ab3f8d
gitlab: remove unused ci_environment template variable
nccatoni Jun 10, 2026
325aa4b
gitlab: remove unused extra_gitlab_output function
nccatoni Jun 10, 2026
3bb38da
gitlab: remove unused id_tokens from build_test_pipeline
nccatoni Jun 10, 2026
edd174c
gitlab: remove unused test_optimization_datadog_site and EXCLUDED_SCE…
nccatoni Jun 10, 2026
dfbbd75
gitlab: factor docker-auth retry block into Jinja2 macro
nccatoni Jun 10, 2026
522655b
format
nccatoni Jun 10, 2026
7923ccd
cleanup
nccatoni Jun 10, 2026
75c517a
gitlab: keep CI_PIPELINE_SOURCE/CI_COMMIT_REF_NAME and omit empty lib…
nccatoni Jun 10, 2026
86af479
Uncommenting new SSI path
nccatoni Jun 10, 2026
a5cbaa9
Merge branch 'main' into nccatoni/gitlab
nccatoni Jun 10, 2026
c022969
Fix end to end jobs stage
nccatoni Jun 10, 2026
809cbcb
gitlab: handle pipeline chunking in build_pipeline.py
nccatoni Jun 10, 2026
b9fccc6
gitlab: emit noop stub for empty chunks instead of dotenv-gated rules
nccatoni Jun 10, 2026
1c72100
Stage ordering
nccatoni Jun 10, 2026
734a520
format
nccatoni Jun 10, 2026
d728114
Stage rereordering
nccatoni Jun 10, 2026
66de5b2
gitlab: strip local includes when generating tracer child pipeline
nccatoni Jun 11, 2026
c648db7
gitlab: rename system-tests.yml jinja template to .yml.j2
nccatoni Jun 11, 2026
612d10e
format: extend yaml linting to utils/ci/gitlab and .gitlab-ci.yml
nccatoni Jun 11, 2026
ba96c5a
gitlab(build_pipeline): refactor into testable main/build functions
nccatoni Jun 11, 2026
18566f3
test(test_the_test): cover GitLab mode in compute_libraries_and_scena…
nccatoni Jun 11, 2026
1a1dd31
test(test_the_test): cover compute-workflow-parameters safe access re…
nccatoni Jun 11, 2026
6b541e0
test(test_the_test): cover build_pipeline chunking and rendering
nccatoni Jun 11, 2026
cd815f4
test(test_the_test): cover external_gitlab_pipeline local-include str…
nccatoni Jun 11, 2026
37cf6d9
test(test_the_test): cover generated GitLab pipeline structural integ…
nccatoni Jun 11, 2026
6bbd7e6
fix: ruff and mypy issues in new test files and build_pipeline
nccatoni Jun 11, 2026
da36260
format: preserve blank lines in gitlab YAML files via yamlfmt config
nccatoni Jun 11, 2026
367fd25
format: scope yamllint indentation disable to gitlab files only
nccatoni Jun 11, 2026
1f8eb81
format: lint utils/ci/gitlab YAML files in full
nccatoni Jun 11, 2026
3497375
Cleanup
nccatoni Jun 11, 2026
b8ca127
Replaced local import with project imports
nccatoni Jun 12, 2026
5c2b902
Optional docker auth
nccatoni Jun 12, 2026
d137e09
ci: enable docker hub auth
nccatoni Jun 12, 2026
2f008ec
Docker hub image mirroring
nccatoni Jun 17, 2026
0437e20
ci: single-script mirror image regeneration (yaml + lock, no push)
nccatoni Jun 17, 2026
d2f2e3a
adding image lock file
nccatoni Jun 17, 2026
ae13347
ci: add mirror_images_verify to check the mirror is fully populated
nccatoni Jun 17, 2026
0363a06
ci: collapse mirror image jobs into a single mirror_images job
nccatoni Jun 17, 2026
9be8d85
feat: pull scenario images from the mirror when USE_IMAGE_MIRROR is set
nccatoni Jun 17, 2026
e2353a5
ci: gate build jobs on mirror_images; move Docker Hub auth to the mir…
nccatoni Jun 17, 2026
f33dc33
ci: add binaries_artifact_path so consumers can place pre-built binaries
nccatoni Jun 18, 2026
a0299f0
ci: fix cross-pipeline artifact reference for binaries_artifact
nccatoni Jun 18, 2026
d533b18
ci: always use parent pipeline ref for binaries_artifact needs
nccatoni Jun 18, 2026
023763d
Cleanup
nccatoni Jun 18, 2026
c289a4a
ci: wait for binaries_artifact job before launching child pipeline
nccatoni Jun 18, 2026
7b69ae1
ci: quote binaries_artifact job name in j2 template
nccatoni Jun 18, 2026
44ac1d6
ci: wait for binaries_artifact before generating the child pipeline
nccatoni Jun 18, 2026
4463f6e
ci: artifacts: false for binaries_artifact wait — timing only
nccatoni Jun 18, 2026
38757e5
ci: use \$CI_PARENT_PIPELINE_ID instead of a manually-passed variable
nccatoni Jun 18, 2026
62fbaa6
ci: wait for binaries_artifact before generating the child pipeline
nccatoni Jun 18, 2026
35dbaf2
Fix upstream pipeline requirement
nccatoni Jun 18, 2026
9d658db
ci: pass UPSTREAM_PIPELINE_ID to child pipeline
nccatoni Jun 18, 2026
0c72538
ci: support a list of artifact jobs via binaries_artifacts input
nccatoni Jun 18, 2026
33cbc55
Static CI image tags
nccatoni Jun 18, 2026
b8840fd
fix
nccatoni Jun 19, 2026
7895dd4
fix
nccatoni Jun 19, 2026
6161ea6
Removing SSI
nccatoni Jun 19, 2026
16e65b1
Variable input cleanup
nccatoni Jun 19, 2026
8faeaf5
Cleanup
nccatoni Jun 19, 2026
63dabb3
Binary artifact cleanup
nccatoni Jun 19, 2026
c44196a
Improved param job
nccatoni Jun 22, 2026
e2bd59f
cleanup
nccatoni Jun 22, 2026
e52ea4b
Skip condition
nccatoni Jun 22, 2026
2f500dd
Use buildx for forwarding pulls to the mirror
nccatoni Jun 24, 2026
65ddb09
Use remote mirror_images.py instead of local copy
nccatoni Jun 24, 2026
43c3ec5
Fix ruff T201 and formatting in validate_param_env
nccatoni Jun 24, 2026
efccfa5
Merge branch 'main' into nccatoni/gitlab
nccatoni Jun 25, 2026
f017c70
Optional chunking
nccatoni Jun 25, 2026
f387d56
Move all e2e pipeline to the earliest stage
nccatoni Jun 25, 2026
b30bf98
buildkitd auto gen
nccatoni Jun 25, 2026
d100a94
Mirror update
nccatoni Jun 25, 2026
1d7463b
test
nccatoni Jun 25, 2026
d154807
ci: build_ci_image only on relevant file changes, add CI_IMAGE check …
nccatoni Jun 26, 2026
da4683f
Job name prefix
nccatoni Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 164 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
include:
- remote: https://gitlab-templates.ddbuild.io/libdatadog/one-pipeline/ca/0b4d88122bb64a87131eeb9446a3671598790917ec30fc31851ccb6ee8375b8a/single-step-instrumentation-tests.yml
- local: /utils/ci/gitlab/main.yml
inputs:
stage: "configure"
ref: "$CI_COMMIT_SHA"
push_to_test_optimization: true
split_pipeline: true
stages:
- configure
- nodejs
Expand All @@ -13,6 +19,12 @@ stages:

variables:
TEST: 1
# TEMPORARY: rollout-control allowlist for system-tests-param LIBRARIES filter.
E2E_SUPPORTED_LANGUAGES: "python"
# dd-repo-tools mirror_images.py (pinned). Used by the mirror_images_* jobs.
MIRROR_IMAGES_URL: "https://binaries.ddbuild.io/dd-repo-tools/default/ca/d6c8f8ec4b1fb69b36e96dc204e5f79bed6bf067/mirror_images.py"
# Destination registry for mirrored CI images.
MIRROR_DEST_REGISTRY: "registry.ddbuild.io/system-tests/mirror"

compute_pipeline:
image: registry.ddbuild.io/ci/libdatadog-build/system-tests:100425777
Expand Down Expand Up @@ -251,8 +263,6 @@ check_merge_labels:
- dd-octo-sts version
- dd-octo-sts debug --scope DataDog/system-tests --policy self.gitlab-read
- dd-octo-sts token --scope DataDog/system-tests --policy self.gitlab-read > token.txt
- export DOCKER_LOGIN=$(aws ssm get-parameter --region us-east-1 --name ci.system-tests.docker-login-write --with-decryption --query "Parameter.Value" --out text)
- export DOCKER_LOGIN_PASS=$(aws ssm get-parameter --region us-east-1 --name ci.system-tests.docker-login-pass-write --with-decryption --query "Parameter.Value" --out text)
script:
- docker buildx version
- export GITHUB_TOKEN=$(cat token.txt)
Expand Down Expand Up @@ -304,3 +314,155 @@ generate_system_tests_lib_injection_images:
- echo "⏳ Waiting before triggering the child pipeline..."
when: delayed
start_in: 5 minutes

# ──────────────────────────────────────────────
# End-to-end pipeline — only for the system-tests repo
# ──────────────────────────────────────────────

system_tests_param:
extends: .system_tests_param_base
stage: configure
needs:
- job: build_ci_image
artifacts: false
optional: true
before_script:
- ln -sf /system-tests/venv venv
- source venv/bin/activate
- export PYTHONPATH=$(pwd)
- git fetch origin main
- mkdir -p original && git archive origin/main -- manifests/ | tar -xC original/
- git diff origin/main...HEAD --name-only > modified_files.txt
- ./run.sh MOCK_THE_TEST --collect-only --scenario-report
- python3 utils/scripts/compute_libraries_and_scenarios.py --output raw_params.txt
- |
python3 -c "
import json, shlex
with open('raw_params.txt') as f:
for line in f:
line = line.strip()
if '=' not in line: continue
key, val = line.split('=', 1)
val = json.loads(val)
if key == 'libraries': print('export LIBRARIES=' + shlex.quote(str(val)))
elif key == 'scenarios': print('export SCENARIOS=' + shlex.quote(str(val)))
elif key == 'scenarios_groups': print('export SCENARIO_GROUPS=' + shlex.quote(str(val)))
" > set_vars.sh
source set_vars.sh
# TEMPORARY: filter LIBRARIES via E2E_SUPPORTED_LANGUAGES (space-separated allowlist)
# used to control rollout, to be removed once rollout is complete.
- |
if [ -n "${E2E_SUPPORTED_LANGUAGES:-}" ]; then
echo "Filtering LIBRARIES with E2E_SUPPORTED_LANGUAGES='$E2E_SUPPORTED_LANGUAGES'"
filtered=""
for lib in $LIBRARIES; do
for allowed in $E2E_SUPPORTED_LANGUAGES; do
if [ "$lib" = "$allowed" ]; then
filtered="${filtered:+$filtered }$lib"
break
fi
done
done
export LIBRARIES="$filtered"
fi
- export EXCLUDED_SCENARIOS='DEBUGGER_EXPRESSION_LANGUAGE,APM_TRACING_E2E_SINGLE_SPAN,APM_TRACING_E2E_OTEL,OTEL_COLLECTOR_E2E'
- export SYSTEM_TESTS_PUSH_TO_TEST_OPTIMIZATION=true

build_ci_image:
image: registry.ddbuild.io/images/docker:20.10.13-jammy
interruptible: false
tags:
- docker-in-docker:amd64
stage: configure
script:
- IMAGE_TAG=$(cat utils/ci/gitlab/docker/system-tests.Dockerfile requirements.txt | sha256sum | cut -c1-12)
- EXPECTED_IMAGE="registry.ddbuild.io/system-tests/ci-runner:$IMAGE_TAG"
- |
if [ "$EXPECTED_IMAGE" != "$CI_IMAGE" ]; then
echo "❌ CI_IMAGE mismatch: hardcoded '$CI_IMAGE' does not match computed '$EXPECTED_IMAGE'"
echo " Update CI_IMAGE in utils/ci/gitlab/main.yml:"
echo " cat utils/ci/gitlab/docker/system-tests.Dockerfile requirements.txt | sha256sum | cut -c1-12"
exit 1
fi
- >
if docker manifest inspect $EXPECTED_IMAGE > /dev/null 2>&1; then
echo "Image already exists, skipping build";
else
docker build -f utils/ci/gitlab/docker/system-tests.Dockerfile -t $EXPECTED_IMAGE . &&
docker push $EXPECTED_IMAGE;
fi
rules:
- changes:
- utils/ci/gitlab/docker/system-tests.Dockerfile
- requirements.txt

# ──────────────────────────────────────────────
# Mirror CI scenario images into registry.ddbuild.io/system-tests/mirror
#
# A single job that, on every push:
# * regenerates the image list from the scenarios and fails if the committed
# mirror_images.yaml is out of date (regenerate + commit it with
# utils/scripts/update_mirror_images.py whenever scenarios or weblog
# Dockerfiles change);
# * pushes any image from the committed mirror_images.lock.yaml that is not yet
# present in MIRROR_DEST_REGISTRY. `mirror` checks the destination first and
# only copies what is missing, so re-running it is cheap and idempotent.
#
# It never updates the lock file: mirror_images.lock.yaml is the committed
# contract, regenerated by developers via update_mirror_images.py.
#
# crane copies registry-to-registry over HTTPS (no Docker daemon needed), so this
# runs on the framework runner image used for the scenario enumeration.
# ──────────────────────────────────────────────

mirror_images:
image: $CI_IMAGE
# Runs in e2e (not the last stage) so the build/run jobs can depend on it and
# only start once the mirror is populated.
stage: configure
tags:
- arch:amd64
needs:
- job: build_ci_image
artifacts: false
optional: true
before_script:
# crane handles multi-arch manifest lists cleanly; mirror_images.py picks it up on PATH.
- CRANE_VERSION=v0.20.2
- curl -sSL "https://github.com/google/go-containerregistry/releases/download/${CRANE_VERSION}/go-containerregistry_Linux_x86_64.tar.gz" | tar -xz -C /usr/local/bin crane
# This is the only job that pulls from Docker Hub (the mirror sources), so it
# is the only one that needs Docker Hub auth (avoids unauthenticated rate limits).
- export DOCKER_LOGIN=$(aws ssm get-parameter --region us-east-1 --name ci.system-tests.docker-login-write --with-decryption --query "Parameter.Value" --out text)
- export DOCKER_LOGIN_PASS=$(aws ssm get-parameter --region us-east-1 --name ci.system-tests.docker-login-pass-write --with-decryption --query "Parameter.Value" --out text)
- echo "$DOCKER_LOGIN_PASS" | crane auth login index.docker.io --username "$DOCKER_LOGIN" --password-stdin
script:
- IMAGE_TAG=$(cat utils/ci/gitlab/docker/system-tests.Dockerfile requirements.txt | sha256sum | cut -c1-12)
- EXPECTED_IMAGE="registry.ddbuild.io/system-tests/ci-runner:$IMAGE_TAG"
- |
if [ "$EXPECTED_IMAGE" != "$CI_IMAGE" ]; then
echo "❌ CI_IMAGE mismatch: hardcoded '$CI_IMAGE' does not match computed '$EXPECTED_IMAGE'"
echo " Update CI_IMAGE in utils/ci/gitlab/main.yml:"
echo " cat utils/ci/gitlab/docker/system-tests.Dockerfile requirements.txt | sha256sum | cut -c1-12"
exit 1
fi
- ln -sf /system-tests/venv venv
- source venv/bin/activate
- python -m pip install --quiet uv
# Fail if the committed image list is stale vs the scenarios (does not touch the lock).
- python utils/scripts/update_mirror_images.py --skip-lock
- |
if ! git diff --exit-code -- mirror_images.yaml; then
echo "❌ mirror_images.yaml is out of date. Regenerate and commit it:"
echo " python utils/scripts/update_mirror_images.py"
exit 1
fi
- |
if ! git diff --exit-code -- utils/build/docker/buildkitd.toml; then
echo "❌ utils/build/docker/buildkitd.toml is out of date. Regenerate and commit it:"
echo " python utils/scripts/update_mirror_images.py"
exit 1
fi
# Push any locked image missing from the mirror (already-present images are skipped).
- uv run --no-config --script "$MIRROR_IMAGES_URL" mirror
rules:
- if: '$SCHEDULED_JOB == "" || $SCHEDULED_JOB == null'
1 change: 1 addition & 0 deletions .yamlfmt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
formatter:
type: basic
include_document_start: true
retain_line_breaks_single: true
indent: 2
pad_line_comments: 2
eof_newline: true
4 changes: 4 additions & 0 deletions .yamllint
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@ extends: relaxed
rules:
line-length: disable
key-ordering: disable
indentation:
# .gitlab-ci.yml uses intentional mixed indentation (GitLab CI style).
ignore: |
.gitlab-ci.yml
2 changes: 1 addition & 1 deletion format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ else
fi

echo "Running yamllint checks..."
if ! ./venv/bin/yamllint -s manifests/; then
if ! ./venv/bin/yamllint -s manifests/ utils/ci/gitlab/ .gitlab-ci.yml; then
echo "yamllint checks failed. Please fix the errors above. 💥 💔 💥"
exit 1
fi
Expand Down
Loading
Loading