Skip to content

Gitlab pipeline for End to End and parametric scenarios (WIP)#6651

Draft
nccatoni wants to merge 233 commits into
mainfrom
nccatoni/gitlab
Draft

Gitlab pipeline for End to End and parametric scenarios (WIP)#6651
nccatoni wants to merge 233 commits into
mainfrom
nccatoni/gitlab

Conversation

@nccatoni

@nccatoni nccatoni commented Mar 31, 2026

Copy link
Copy Markdown
Collaborator

Motivation

Changes

Potential issue

Rebuilding of CI images is susceptible to race conditions if two PRs modifying different dependencies of the image are merged to main without being rebased on one another before. The right way to solve this issue would be to implement a merge queue. This is still unlikely in the current configuration and should be caught fairly fast by running the workflow on main.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Test logic is modified? -> Get a review from RFC owner.
    • Framework is modified, or non obvious usage of it -> get a review from R&P team

🚀 Once your PR is reviewed and the CI green, you can merge it!

🛟 #apm-shared-testing 🛟

Reviewer checklist

  • Anything but tests/ or manifests/ is modified ? I have the approval from R&P team
  • A docker base image is modified?
    • the relevant build-XXX-image label is present
  • A scenario is added, removed or renamed?

@github-actions

github-actions Bot commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

mirror_images.lock.yaml                                                 @DataDog/system-tests-core
mirror_images.yaml                                                      @DataDog/system-tests-core
tests/test_the_test/test_build_pipeline.py                              @DataDog/system-tests-core
tests/test_the_test/test_external_gitlab_pipeline.py                    @DataDog/system-tests-core
tests/test_the_test/test_gitlab_pipeline_structure.py                   @DataDog/system-tests-core
utils/_context/_image_mirror.py                                         @DataDog/system-tests-core
utils/build/docker/buildkitd.toml                                       @DataDog/system-tests-core
utils/ci/__init__.py                                                    @DataDog/system-tests-core
utils/ci/gitlab/__init__.py                                             @DataDog/system-tests-core
utils/ci/gitlab/build_pipeline.py                                       @DataDog/system-tests-core
utils/ci/gitlab/docker/git.Dockerfile                                   @DataDog/system-tests-core
utils/ci/gitlab/docker/system-tests.Dockerfile                          @DataDog/system-tests-core
utils/ci/gitlab/main.yml                                                @DataDog/system-tests-core
utils/ci/gitlab/section.sh                                              @DataDog/system-tests-core
utils/ci/gitlab/system-tests.yml.j2                                     @DataDog/system-tests-core
utils/ci/gitlab/templates.yml                                           @DataDog/system-tests-core
utils/ci/gitlab/validate_param_env.py                                   @DataDog/system-tests-core
utils/scripts/update_mirror_images.py                                   @DataDog/system-tests-core
.gitlab-ci.yml                                                          @DataDog/system-tests-core
.yamlfmt                                                                @DataDog/system-tests-core
.yamllint                                                               @DataDog/system-tests-core
format.sh                                                               @DataDog/system-tests-core
requirements.txt                                                        @DataDog/system-tests-core
tests/test_the_test/test_ci_orchestrator.py                             @DataDog/system-tests-core
tests/test_the_test/test_compute_libraries_and_scenarios.py             @DataDog/system-tests-core
utils/_context/containers.py                                            @DataDog/system-tests-core
utils/build/build.sh                                                    @DataDog/system-tests-core
utils/docker_fixtures/_test_agent.py                                    @DataDog/system-tests-core
utils/scripts/ci_orchestrators/external_gitlab_pipeline.py              @DataDog/system-tests-core
utils/scripts/ci_orchestrators/gitlab_exporter.py                       @DataDog/system-tests-core
utils/scripts/ci_orchestrators/workflow_data.py                         @DataDog/system-tests-core
utils/scripts/compute-workflow-parameters.py                            @DataDog/system-tests-core
utils/scripts/compute_libraries_and_scenarios.py                        @DataDog/system-tests-core

@nccatoni nccatoni force-pushed the nccatoni/gitlab branch 6 times, most recently from 17e7dfc to 047676e Compare March 31, 2026 15:41
@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Mar 31, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 28 Pipeline jobs failed

Testing the test | System Tests (php, prod) / End-to-end #1 / apache-mod-7.1 1   View in Datadog   GitHub Actions

🧪 1 Test failed

tests.ffe.test_exposures.Test_FFE_Exposure_Events.test_ffe_multiple_remote_config_files[apache-mod-7.1] from system_tests_suite   View in Datadog
AssertionError: Timed out waiting for exposure event for flags ['test-flag-1', 'test-flag-2'] and subject 'test-user-multi'
assert False
 +  where False = <bound method ProxyBasedInterfaceValidator.wait_for of AgentInterfaceValidator('agent')>(<function wait_for_exposure_event.<locals>.<lambda> at 0x7fa8c7c1f060>, timeout=30)
 +    where <bound method ProxyBasedInterfaceValidator.wait_for of AgentInterfaceValidator('agent')> = AgentInterfaceValidator('agent').wait_for
 +      where AgentInterfaceValidator('agent') = interfaces.agent

self = <tests.ffe.test_exposures.Test_FFE_Exposure_Events object at 0x7fa8f09ea6f0>

    def test_ffe_multiple_remote_config_files(self):
        """Test that FFE correctly handles multiple remote config files with different flags."""
...

DataDog/system-tests | run_cpp_nginx_TRACE_STATS_COMPUTATION_CLIENT_DROP_P0S_FALSE_nginx   View in Datadog   GitLab

DataDog/system-tests | run_nodejs_DEFAULT_express5   View in Datadog   GitLab

View all 28 failed jobs.

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: feb7bc9 | Docs | Datadog PR Page | Give us feedback!

@nccatoni nccatoni force-pushed the nccatoni/gitlab branch 6 times, most recently from c7fe9a2 to ad45877 Compare April 1, 2026 09:45
@nccatoni nccatoni force-pushed the nccatoni/gitlab branch 2 times, most recently from 9384467 to ed748cf Compare April 1, 2026 10:46
nccatoni and others added 11 commits June 18, 2026 12:00
The trigger jobs (.run_test_pipeline_base) now need the binaries_artifact
job (optional) so the child pipeline doesn't start before the artifact is
ready. Without this the child pipeline fired immediately and the
cross-pipeline needs failed to retrieve artifacts.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Job names containing ':' and '[' (e.g. parallel matrix instance names like
'build linux: [amd64, cp311-cp311, ...]') are special YAML characters and
must be quoted, otherwise the generated pipeline YAML is invalid.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
build_test_pipeline needs the binaries_artifact job (optional, so it's
a no-op when the input is empty). Since run_test_pipeline_* always waits
for build_test_pipeline before triggering the child pipeline, this
guarantees the artifact is ready before any child job tries to download it
via pipeline: \$PARENT_PIPELINE_ID.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
build_test_pipeline only needs to wait for the job to finish before
generating the child pipeline; it never uses the artifacts itself.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
\$CI_PARENT_PIPELINE_ID is provided automatically by GitLab in any triggered
child pipeline. The manually-passed PARENT_PIPELINE_ID was redundant and
potentially empty if not resolved correctly, causing the artifact download to
fail. Since needs:pipeline: waits for the referenced job itself, build_test_pipeline
also doesn't need to wait for binaries_artifact.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
needs:pipeline: in child jobs does NOT wait — it just tries to download
the artifact and fails if the upstream job is not done yet. build_test_pipeline
must therefore wait for the binaries_artifact job (optional, no-op when the
input is empty) so the artifact is guaranteed to exist before any child
pipeline job runs.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
The generated child pipeline jobs use pipeline: \$UPSTREAM_PIPELINE_ID
to reference the parent pipeline's binaries artifact. This variable was
never being set, so the artifact download had an empty pipeline reference
and failed.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Different weblogs need different python version wheels. Add binaries_artifacts
(semicolon-separated, since job names contain commas) as the full list of
upstream artifact jobs to download from in the generated child pipeline.
The existing single-job binaries_artifact remains the timing gate.

Falls back to [binaries_artifact] when binaries_artifacts is empty, so
existing callers that only set binaries_artifact are unaffected.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@datadog-system-tests-org

datadog-system-tests-org Bot commented Jun 18, 2026

Copy link
Copy Markdown

Pipelines

⚠️ Warnings

🚦 2 Pipeline jobs failed

Testing the test | all-jobs-are-green   View in Datadog   GitHub Actions

Testing the test | lint / lint   View in Datadog   GitHub Actions

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: e52ea4b | Docs | Give us feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant