Skip to content

[Backport 7.83.x] Publish datadog-fips-proxy to the pipeline testing repositories - #55562

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
7.83.xfrom
backport-54908-to-7.83.x
Aug 28, 2026
Merged

gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
7.83.xfrom
backport-54908-to-7.83.x

Conversation

@dd-octo-sts

@dd-octo-sts dd-octo-sts Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Backport c212f32 from #54908.


What does this PR do?

Publishes the released datadog-fips-proxy package into the testing repositories of the pipelines whose install-script tests need it, so the install script resolves it from the same repository as the Agent packages built by that pipeline.

Motivation

test_install_script triggers the agent-linux-install-script pipeline with TESTING_APT_URL and TESTING_YUM_URL so the install script installs the Agent built by the pipeline. Those variables land in the apt and yum configuration, so every Datadog package the script installs is resolved against the pipeline repository — including datadog-fips-proxy, which is released from another repository and is not published there. Nightly and RC pipelines failed with Error: Unable to find a match: datadog-fips-proxy.

The mitigation was to stop forwarding those variables for the FIPS test, which leaves it installing the latest stable Agent instead of the pipeline's packages.

Describe how you validated your changes

dda inv linter.full-gitlab-ci passes locally.

The pipeline of test commit 89fb6f4 published datadog-fips-proxy 1:1.1.29-1 into both testing repositories alongside the Agent it built. Its yum index still lists the package after the Agent upload rewrote that index, confirming rpm-s3 merges rather than replaces.

The job that triggers the install-script pipeline against it, on the branch that restores the testing-variable forwarding, ran the FIPS suite on all five of its platforms and passed. The Debian 11 job installed every package from the pipeline repository:

Get:1 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-agent amd64 1:7.84.0~devel.git.171.89fb6f4.pipeline.132516692-1 [188 MB]
Get:2 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-fips-proxy amd64 1:1.1.29-1 [7590 kB]
Get:3 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-signing-keys all 1:1.4.0-1 [23.7 kB]
--- PASS: TestInstallFipsSuite/install-fips-datadog-agent-Debian_11-132584924/TestInstallFips

This is the configuration that previously failed with Error: Unable to find a match: datadog-fips-proxy.

Additional Notes

…) ### What does this PR do?

Publishes the released `datadog-fips-proxy` package into the testing repositories of the pipelines whose install-script tests need it, so the install script resolves it from the same repository as the Agent packages built by that pipeline.

### Motivation

`test_install_script` triggers the `agent-linux-install-script` pipeline with `TESTING_APT_URL` and `TESTING_YUM_URL` so the install script installs the Agent built by the pipeline. Those variables land in the apt and yum configuration, so every Datadog package the script installs is resolved against the pipeline repository — including `datadog-fips-proxy`, which is released from another repository and is not published there. Nightly and RC pipelines failed with `Error: Unable to find a match: datadog-fips-proxy`.

The mitigation was to stop forwarding those variables for the FIPS test, which leaves it installing the latest stable Agent instead of the pipeline's packages.

### Describe how you validated your changes

`dda inv linter.full-gitlab-ci` passes locally.

The [pipeline](https://gitlab.ddbuild.io/DataDog/datadog-agent/-/pipelines/132516692) of test commit 89fb6f4 published `datadog-fips-proxy 1:1.1.29-1` into both testing repositories alongside the Agent it built. Its yum index still lists the package after the Agent upload rewrote that index, confirming `rpm-s3` merges rather than replaces.

The [job](https://gitlab.ddbuild.io/DataDog/datadog-agent/-/jobs/1974262997) that triggers the install-script pipeline against it, on the [branch](DataDog/agent-linux-install-script#446) that restores the testing-variable forwarding, ran the FIPS suite on all five of its platforms and passed. The Debian 11 [job](https://gitlab.ddbuild.io/DataDog/agent-linux-install-script/-/jobs/1974914627) installed every package from the pipeline repository:

```
Get:1 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-agent amd64 1:7.84.0~devel.git.171.89fb6f4.pipeline.132516692-1 [188 MB]
Get:2 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-fips-proxy amd64 1:1.1.29-1 [7590 kB]
Get:3 https://apttesting.***.com/datadog-agent/pipeline-132516692-a7 stable-x86_64/7 amd64 datadog-signing-keys all 1:1.4.0-1 [23.7 kB]
--- PASS: TestInstallFipsSuite/install-fips-datadog-agent-Debian_11-132584924/TestInstallFips
```

This is the configuration that previously failed with `Error: Unable to find a match: datadog-fips-proxy`.

### Additional Notes

- Merging is blocked by DataDog/agent-linux-install-script#446.
- Publishing before the Agent uploads instead of after them fails safe. Were `rpm-s3` ever to replace repository metadata rather than merge into it, this order costs `datadog-fips-proxy` its index entry and the FIPS test behaves as it does today; the reverse order would drop the Agent packages and break every e2e test that consumes them. A failed download now blocks the two Agent testing uploads rather than only the install-script test. Making the job `allow_failure: true` would trade that for a silent index race.

Co-authored-by: ofek.lev <ofek.lev@datadoghq.com>
(cherry picked from commit c212f32)

___

Co-authored-by: Ofek Lev <ofekmeister@gmail.com>
@dd-octo-sts dd-octo-sts Bot added backport bot changelog/no-changelog No changelog entry needed labels Aug 27, 2026
@dd-octo-sts
dd-octo-sts Bot requested a review from a team as a code owner August 27, 2026 22:07
@dd-octo-sts dd-octo-sts Bot added internal Identify a non-fork PR qa/no-code-change No code change in Agent code requiring validation short review PR is simple enough to be reviewed quickly team/agent-build team/agent-devx changelog/no-changelog No changelog entry needed backport bot labels Aug 27, 2026
@dd-octo-sts

dd-octo-sts Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor Author

Gitlab CI Configuration Changes

Updated: .gitlab-ci.yml

Modified Jobs

variables (configuration)
  variables:
    AGENT_API_KEY_ORG2: agent-api-key-org-2
    AGENT_APP_KEY_ORG2: agent-app-key-org-2
    AGENT_BINARIES_DIR: bin/agent
    AGENT_QA_E2E: agent-qa-e2e
    ARTIFACT_DOWNLOAD_ATTEMPTS: 2
    ATLASSIAN_WRITE: atlassian-write
    BTFHUB_ARCHIVE_BRANCH: main
    BUCKET_BRANCH: dev
    CACHE_COMPRESSION_LEVEL: slowest
    CHANGELOG_COMMIT_SHA: ci.datadog-agent.gitlab_changelog_commit_sha
-   CI_IMAGE_BTF_GEN: v126430166-27084be1
+   CI_IMAGE_BTF_GEN: v132738347-e4f7b27f
    CI_IMAGE_BTF_GEN_SUFFIX: ''
-   CI_IMAGE_DOCKER_ARM64: v126430166-27084be1
?                            --- -----  ^   ^^
+   CI_IMAGE_DOCKER_ARM64: v132738347-e4f7b27f
?                               ^ + ++++++ ^^^
    CI_IMAGE_DOCKER_ARM64_SUFFIX: ''
-   CI_IMAGE_DOCKER_X64: v126430166-27084be1
+   CI_IMAGE_DOCKER_X64: v132738347-e4f7b27f
    CI_IMAGE_DOCKER_X64_SUFFIX: ''
-   CI_IMAGE_GITLAB_AGENT_DEPLOY: v126430166-27084be1
?                                   --- -----  ^   ^^
+   CI_IMAGE_GITLAB_AGENT_DEPLOY: v132738347-e4f7b27f
?                                      ^ + ++++++ ^^^
    CI_IMAGE_GITLAB_AGENT_DEPLOY_SUFFIX: ''
-   CI_IMAGE_LINUX: v126430166-27084be1
+   CI_IMAGE_LINUX: v132738347-e4f7b27f
    CI_IMAGE_LINUX_SUFFIX: ''
-   CI_IMAGE_RPM_ARM64: v126430166-27084be1
+   CI_IMAGE_RPM_ARM64: v132738347-e4f7b27f
    CI_IMAGE_RPM_ARM64_SUFFIX: ''
-   CI_IMAGE_RPM_ARMHF: v126430166-27084be1
+   CI_IMAGE_RPM_ARMHF: v132738347-e4f7b27f
    CI_IMAGE_RPM_ARMHF_SUFFIX: ''
-   CI_IMAGE_RPM_X64: v126430166-27084be1
+   CI_IMAGE_RPM_X64: v132738347-e4f7b27f
    CI_IMAGE_RPM_X64_SUFFIX: ''
-   CI_IMAGE_WIN_LTSC2022_X64: v126430166-27084be1
?                                --- -----  ^   ^^
+   CI_IMAGE_WIN_LTSC2022_X64: v132738347-e4f7b27f
?                                   ^ + ++++++ ^^^
    CI_IMAGE_WIN_LTSC2022_X64_SUFFIX: ''
-   CI_IMAGE_WIN_LTSC2025_X64: v126430166-27084be1
?                                --- -----  ^   ^^
+   CI_IMAGE_WIN_LTSC2025_X64: v132738347-e4f7b27f
?                                   ^ + ++++++ ^^^
    CI_IMAGE_WIN_LTSC2025_X64_SUFFIX: ''
    CLANG_BUILD_VERSION: v60409452-ee70de70
    CLANG_LLVM_VER: 12.0.1
    CLUSTER_AGENT_BINARIES_DIR: bin/datadog-cluster-agent
    CLUSTER_AGENT_CLOUDFOUNDRY_BINARIES_DIR: bin/datadog-cluster-agent-cloudfoundry
    CODECOV: codecov
-   COMPARE_TO_BRANCH: main
?                      ^^^^
+   COMPARE_TO_BRANCH: 7.83.x
?                      ^^^^^^
    CRC_PULL_SECRET: ci.datadog-agent.crc-pull-secret
    CWS_INSTRUMENTATION_BINARIES_DIR: bin/cws-instrumentation
    DATADOG_AGENT_EMBEDDED_PATH: /opt/datadog-agent/embedded
    DDA_CLIENT_TOKEN: dda-feature-flags-client-token
    DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS: ci.datadog-agent.dda-feature-flags-client-token
    DDA_FEATURE_FLAGS_CI_VAULT_KEY: token
    DDA_FEATURE_FLAGS_CI_VAULT_KEY_MACOS: token
    DDA_FEATURE_FLAGS_CI_VAULT_PATH: k8s/gitlab-runner-datadog-agent/datadog-agent/$DDA_CLIENT_TOKEN
    DDA_FEATURE_FLAGS_CI_VAULT_PATH_MACOS: aws/arn:aws:iam::486234852809:role/ci-datadog-agent/$DDA_CLIENT_TOKEN
    DD_AGENT_TESTING_DIR: $CI_PROJECT_DIR/test/new-e2e/tests
    DD_PKG_GITLAB_URL: https://artifact-gateway.us1.ddbuild.io/internal/artifact-gateway/api/v4
    DEB_GPG_KEY_ID: c0962c7d
    DEB_GPG_KEY_NAME: Datadog, Inc. APT key
    DEB_RPM_TESTING_BUCKET_BRANCH: testing
    DEB_S3_BUCKET: apt.datad0g.com
    DEB_TESTING_S3_BUCKET: apttesting.datad0g.com
    DISABLE_GIT_CACHE: true
    DOCKER_REGISTRY_RO: dockerhub-readonly
    DOCKER_REGISTRY_URL: docker.io
    DOGSTATSD_BINARIES_DIR: bin/dogstatsd
    DYNAMIC_TESTS_BREAKGLASS: dynamic-tests-breakglass
    E2E_AZURE: e2e-azure
    E2E_COVERAGE_PIPELINE: false
    E2E_GCP: e2e-gcp
    EXECUTOR_JOB_SECTION_ATTEMPTS: 2
    FF_CLEAN_UP_FAILED_CACHE_EXTRACT: true
    FF_KUBERNETES_HONOR_ENTRYPOINT: true
    FF_SCRIPT_SECTIONS: 1
    FF_TIMESTAMPS: true
    FF_USE_FASTZIP: true
    FF_USE_WINDOWS_JOB_OBJECT: true
    GENERAL_ARTIFACTS_CACHE_BUCKET_URL: https://dd-agent-omnibus.s3.amazonaws.com
    GET_SOURCES_ATTEMPTS: 2
    GIT_STRATEGY: fetch
    GO_TEST_SKIP_FLAKE: 'true'
    GPG_TEST_KEY_ID: crypto/k8s/keys/k8s_gitlab-runner-datadog-agent_datadog-agent_testing_signing-key
    INSTALLER_TESTING_S3_BUCKET: installtesting.datad0g.com
    INSTALL_SCRIPT_API_KEY_ORG2: install-script-api-key-org-2
    KERNEL_MATRIX_TESTING_ARM_AMI_ID: ami-0b5f838a19d37fc61
    KERNEL_MATRIX_TESTING_X86_AMI_ID: ami-05b3973acf5422348
    KITCHEN_INFRASTRUCTURE_FLAKES_RETRY: 2
    MACOS_APPLE_APPLICATION_SIGNING: apple-application-signing
    MACOS_APPLE_DEVELOPER_ACCOUNT: apple-developer-account
    MACOS_APPLE_INSTALLER_SIGNING: apple-installer-signing
    MACOS_KEYCHAIN_PWD: ci-keychain
    MACOS_S3_BUCKET: dd-agent-macostesting
    OMNIBUS_BASE_DIR: /omnibus
    OMNIBUS_PACKAGE_DIR: $CI_PROJECT_DIR/omnibus/pkg/
    OMNIBUS_PACKAGE_DIR_SUSE: $CI_PROJECT_DIR/omnibus/suse/pkg
    PIPELINE_KEY_ALIAS: alias/ci_datadog-agent_pipeline-key
    PROCESS_S3_BUCKET: datad0g-process-agent
    PYTHONUNBUFFERED: 1
    RESTORE_CACHE_ATTEMPTS: 2
    RPM_GPG_KEY_ID: b01082d3
    RPM_GPG_KEY_NAME: Datadog, Inc. RPM key
    RPM_S3_BUCKET: yum.datad0g.com
    RPM_TESTING_S3_BUCKET: yumtesting.datad0g.com
    RUN_E2E_TESTS: auto
    RUN_KMT_TESTS: auto
    RUN_UNIT_TESTS: auto
    S3_ARTIFACTS_URI: s3://dd-ci-artefacts-build-stable/$CI_PROJECT_NAME/$CI_PIPELINE_ID
    S3_CP_CMD: aws s3 cp $S3_CP_OPTIONS
    S3_CP_OPTIONS: --no-progress --region us-east-1 --sse AES256
    S3_DD_AGENT_OMNIBUS_BTFS_URI: s3://dd-agent-omnibus/btfs
    S3_DD_AGENT_OMNIBUS_JAVA_URI: s3://dd-agent-omnibus/openjdk
    S3_DD_AGENT_OMNIBUS_LLVM_URI: s3://dd-agent-omnibus/llvm
    S3_DSD6_URI: s3://dsd6-staging
    S3_OMNIBUS_CACHE_BUCKET: dd-ci-datadog-agent-omnibus-cache-build-stable
    S3_OMNIBUS_GIT_CACHE_BUCKET: dd-ci-datadog-agent-omnibus-git-cache-build-stable
    S3_PERMANENT_ARTIFACTS_URI: s3://dd-ci-persistent-artefacts-build-stable/$CI_PROJECT_NAME
    S3_PROJECT_ARTIFACTS_URI: s3://dd-ci-artefacts-build-stable/$CI_PROJECT_NAME
    S3_RELEASE_ARTIFACTS_URI: s3://dd-release-artifacts/$CI_PROJECT_NAME/$CI_PIPELINE_ID
    S3_RELEASE_INSTALLER_ARTIFACTS_URI: s3://dd-release-artifacts/datadog-installer/$CI_PIPELINE_ID
    S3_SBOM_STORAGE_URI: s3://sbom-root-us1-ddbuild-io/$CI_PROJECT_NAME/$CI_PIPELINE_ID
    SECRET_GENERIC_CONNECTOR_BINARIES_DIR: bin/secret-generic-connector
    SKIP_WINDOWS: 'false'
    SLACK_AGENT: slack-agent-ci
    SMP_ACCOUNT: smp
    STATIC_BINARIES_DIR: bin/static
    SYSTEM_PROBE_BINARIES_DIR: bin/system-probe
    TEST_KEYS_URL: apttesting.datad0g.com/test-keys
    VCPKG_BLOB_SAS_URL: vcpkg-blob-sas
    VIRUS_TOTAL: virus-total
    WINDOWS_BUILDS_S3_BUCKET: $WIN_S3_BUCKET/builds
    WINDOWS_POWERSHELL_DIR: $CI_PROJECT_DIR/signed_scripts
    WINDOWS_SYMBOLS_S3_BUCKET: pipelines/windows-symbols
    WINDOWS_TESTING_S3_BUCKET: pipelines/A7/$CI_PIPELINE_ID
    WINGET_PAT: winget-pat
    WIN_S3_BUCKET: dd-agent-mstesting
workflow (configuration)
  workflow:
    rules:
    - if: $DDR_WORKFLOW_ID != null && $CI_COMMIT_BRANCH == "main"
      variables:
        BAZEL_CACHE_POLICY_SUFFIX: -push
        GO_TEST_SKIP_FLAKE: 'false'
        WINDOWS_SIGNING_CERT: s3://windows-code-signing-certificates/certs/beta/kms-signed.crt
        WINDOWS_SIGNING_CONFIG: s3://windows-code-signing-certificates/certs/beta/config.json
    - if: $CI_PIPELINE_SOURCE == "trigger" || $CI_PIPELINE_SOURCE == "pipeline"
    - if: $CI_COMMIT_BRANCH == "main"
      variables:
        BAZEL_CACHE_POLICY_SUFFIX: -push
        GO_TEST_SKIP_FLAKE: 'false'
    - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.[0-9]+\.x$/
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    - if: $RUN_E2E_TESTS == "on"
    - if: $DEPLOY_INSTALLER == "true" || $DDR_WORKFLOW_ID != null
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
+   - changes:
+       compare_to: $COMPARE_TO_BRANCH
+       paths:
+       - deps/agent_data_plane/agent_data_plane.MODULE.bazel
+     variables:
+       RUN_ALL_BUILDS: 'true'
+       RUN_E2E_TESTS: 'on'
+       RUN_KMT_TESTS: 'on'
+       RUN_UNIT_TESTS: 'on'
+       SKIP_WINDOWS: 'false'
    - changes:
        compare_to: main
        paths:
        - '**/*_windows.go'
        - '**/*_windows_test.go'
        - pkg/util/winutil/**/*
        - pkg/windowsdriver/**/*
        - pkg/util/pdhutil/**/*
        - pkg/util/crashreport/**/*
        - pkg/collector/corechecks/system/wincrashdetect/**/*
        - pkg/collector/corechecks/system/windowscertificate/**/*
        - pkg/collector/corechecks/system/winkmem/**/*
        - pkg/collector/corechecks/system/winproc/**/*
        - pkg/collector/corechecks/net/wlan/**/*
        - pkg/logs/launchers/windowsevent/**/*
        - pkg/logs/tailers/windowsevent/**/*
        - pkg/logs/util/windowsevent/**/*
        - pkg/network/driver/**/*
        - pkg/config/**/*
        - pkg/security/**/*
        - cmd/agent/**/*
        - cmd/process-agent/**/*
        - cmd/security-agent/**/*
        - cmd/otel-agent/**/*
        - cmd/privateactionrunner/**/*
        - cmd/system-probe/**/*
        - cmd/trace-agent/**/*
        - cmd/installer/**/*
        - cmd/systray/**/*
        - cmd/otel-agent/**/*
      variables:
        SKIP_WINDOWS: 'false'
    - changes:
        compare_to: main
        paths:
        - comp/systray/**/*
        - comp/updater/**/*
        - comp/checks/agentcrashdetect/**/*
        - comp/checks/windowseventlog/**/*
        - comp/checks/winregistry/**/*
        - comp/metadata/hostsysteminfo/**/*
        - comp/trace/etwtracer/**/*
        - comp/etw/**/*
        - comp/notableevents/**/*
        - comp/publishermetadatacache/**/*
        - comp/softwareinventory/**/*
        - tools/windows/**/*
        - omnibus/**/*
        - packages/**/*
        - rtloader/**/*
        - Dockerfiles/agent/windows/**/*
        - Dockerfiles/agent/entrypoint.ps1
        - Dockerfiles/agent/entrypoint.d.windows/**/*
        - chocolatey/**/*
        - tasks/msi.py
        - tasks/winbuild.py
        - tasks/winbuildscripts/**/*
        - tasks/windows_resources.py
        - tasks/systray.py
        - release.json
        - .gitlab-ci.yml
        - .gitlab/**/*
      variables:
        SKIP_WINDOWS: 'false'
    - changes:
        compare_to: main
        paths:
        - test/new-e2e/tests/fleet/**/*
        - test/new-e2e/tests/installer/windows/**/*
        - test/new-e2e/tests/windows/**/*
        - test/new-e2e/tests/sysprobe-functional/**/*
        - test/new-e2e/tests/process/**/*
        - test/new-e2e/tests/agent-runtimes/**/*
        - test/e2e-framework/components/activedirectory/**/*
      variables:
        SKIP_WINDOWS: 'false'
    - changes:
        compare_to: main
        paths:
        - pkg/procmgr/**/*
        - pkg/proto/datadog/procmgr/**/*
        - pkg/proto/pbgo/procmgr/**/*
        - Cargo.toml
        - Cargo.lock
      variables:
        SKIP_WINDOWS: 'false'
    - changes:
        compare_to: main
        paths:
        - '**/*.bazel*'
        - deps/**/*
        - bazel/**/*
        - tasks/build_tags.bzl
      variables:
        SKIP_WINDOWS: 'false'
    - if: $CI_COMMIT_TAG == null
      variables:
        SKIP_WINDOWS: 'true'
.docker_trigger_base
  .docker_trigger_base:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
.windows_choco_7_x64
  .windows_choco_7_x64:
    artifacts:
      expire_in: 2 weeks
      paths:
      - omnibus/pkg/pipeline-$CI_PIPELINE_ID
    before_script:
    - C:\ci-identities-gitlab-job-client.exe assume-role
    id_tokens:
      CI_IDENTITIES_GITLAB_ID_TOKEN:
        aud: ci-identities
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - allow_failure: true
      if: $BUCKET_BRANCH != "beta" && $BUCKET_BRANCH != "stable"
      when: manual
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    script:
    - $ErrorActionPreference = "Stop"
    - if (Test-Path build-out) { remove-item -recurse -force build-out }
-   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
+   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e CI_IDENTITIES_GITLAB_ID_TOKEN
+     -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
      -e CI_PROJECT_NAME -e CI_PIPELINE_ID -e BUCKET_BRANCH -e AWS_NETWORKING=true ${WINBUILDIMAGE}
      powershell.exe -C "C:\mnt\tasks\winbuildscripts\Generate-Chocolatey-Package.ps1
      -MSIDirectory c:\mnt\omnibus\pkg\pipeline-${CI_PIPELINE_ID} -Flavor $FLAVOR -InstallDeps
      1"
  
      '
    - If ($lastExitCode -ne "0") { throw "Previous command returned $lastExitCode" }
    - $CopyNupkgToS3 = "$S3_CP_CMD --recursive --exclude '*' --include '*.nupkg' build-out
      $S3_RELEASE_ARTIFACTS_URI/choco/nupkg"
    - Invoke-Expression $CopyNupkgToS3
    stage: choco_build
    tags:
    - windows-v2:2022
    variables:
      ARCH: x64
      AWS_SHARED_CREDENTIALS_FILE: ${CI_PROJECT_DIR}\.aws\credentials-by-job-id\${CI_JOB_ID}
      GIT_STRATEGY: clone
      WINBUILDIMAGE: registry.ddbuild.io/ci/datadog-agent-buildimages/windows_ltsc2022_${ARCH}${CI_IMAGE_WIN_LTSC2022_X64_SUFFIX}:${CI_IMAGE_WIN_LTSC2022_X64}
deploy_deb_testing-a7_x64
  deploy_deb_testing-a7_x64:
    before_script:
    - ls $OMNIBUS_PACKAGE_DIR
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/gitlab_agent_deploy$CI_IMAGE_GITLAB_AGENT_DEPLOY_SUFFIX:$CI_IMAGE_GITLAB_AGENT_DEPLOY
    needs:
    - installer_deb-amd64
    - agent_deb-x64-a7
    - agent_deb-x64-a7-fips
    - agent_heroku_deb-x64-a7
    - iot_agent_deb-x64
    - dogstatsd_deb-x64
    - ddot_deb-x64
+   - job: deploy_fips_proxy_testing-a7_x64
+     optional: true
    rules:
    - allow_failure: true
      if: $DEPLOY_AGENT == "false" && $DDR_WORKFLOW_ID == null && $RUN_E2E_TESTS ==
        "off"
      when: manual
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - when: on_success
    script:
    - echo 'deb [signed-by=/usr/share/keyrings/datadog-archive-keyring.gpg] https://apt.datadoghq.com/
      stable 7' > /etc/apt/sources.list.d/datadog.list
    - touch /usr/share/keyrings/datadog-archive-keyring.gpg
    - chmod a+r /usr/share/keyrings/datadog-archive-keyring.gpg
    - curl https://keys.datadoghq.com/DATADOG_APT_KEY_CURRENT.public | gpg --no-default-keyring
      --keyring /usr/share/keyrings/datadog-archive-keyring.gpg --import --batch
    - apt-get -o Acquire::Retries="5" update
    - apt-get -o Acquire::Retries="5" -o "Dir::Cache::archives=$OMNIBUS_PACKAGE_DIR"
      install --download-only datadog-signing-keys
    - pushd $OMNIBUS_PACKAGE_DIR
    - filename=$(ls datadog-signing-keys*.deb); mv $filename datadog-signing-keys_${DD_PIPELINE_ID}.deb
    - popd
    - ${CI_PROJECT_DIR}/tools/ci/retry.sh aws s3 cp s3://binaries-ddbuild-io-prod/dd-source/domains/seceng/sit/apps/artifact-security/vault-gpg-client/gpg-vault/dev/gpg-vault-v1.6.2-linux-amd64.tar.gz
      .
    - tar -xzf gpg-vault-v1.6.2-linux-amd64.tar.gz
    - mv gpg-vault-linux-amd64 /usr/bin/gpg-vault-bin
    - echo '#!/usr/bin/env bash' > /usr/bin/gpg
    - echo 'GPG_VAULT_COMPAT_MODE=true GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com"
      /usr/bin/gpg-vault "$@"' >> /usr/bin/gpg
    - chmod +x /usr/bin/gpg
    - echo '#!/usr/bin/env bash' > /usr/bin/gpg-vault
    - echo 'GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com" /usr/bin/gpg-vault-bin
      "$@"' >> /usr/bin/gpg-vault
    - chmod +x /usr/bin/gpg-vault
    - "for package in $OMNIBUS_PACKAGE_DIR/datadog-*_7*amd64.deb; do\n  tools/ci/signing/sign_deb_package.sh\
      \ \"$package\" $GPG_TEST_KEY_ID out/\ndone\n"
    - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a amd64 --sign=$GPG_TEST_KEY_ID
      --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
      public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} out/datadog-*_7*amd64.deb
    - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a x86_64 --sign=$GPG_TEST_KEY_ID
      --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
      public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} out/datadog-*_7*amd64.deb
    - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a amd64 --sign=$GPG_TEST_KEY_ID
      --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
      public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} $OMNIBUS_PACKAGE_DIR/datadog-signing-keys_${DD_PIPELINE_ID}.deb
    - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a x86_64 --sign=$GPG_TEST_KEY_ID
      --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
      public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} $OMNIBUS_PACKAGE_DIR/datadog-signing-keys_${DD_PIPELINE_ID}.deb
    stage: e2e_deploy
    tags:
    - arch:amd64
    - specific:true
    variables:
      DD_PIPELINE_ID: $CI_PIPELINE_ID-a7
deploy_rpm_testing-a7_x64
  deploy_rpm_testing-a7_x64:
    before_script:
    - ls $OMNIBUS_PACKAGE_DIR
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/gitlab_agent_deploy$CI_IMAGE_GITLAB_AGENT_DEPLOY_SUFFIX:$CI_IMAGE_GITLAB_AGENT_DEPLOY
    needs:
    - installer_rpm-amd64
    - agent_rpm-x64-a7
    - agent_rpm-x64-a7-fips
    - iot_agent_rpm-x64
    - dogstatsd_rpm-x64
    - ddot_rpm-x64
+   - job: deploy_fips_proxy_testing-a7_x64
+     optional: true
    rules:
    - allow_failure: true
      if: $DEPLOY_AGENT == "false" && $DDR_WORKFLOW_ID == null && $RUN_E2E_TESTS ==
        "off"
      when: manual
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - when: on_success
    script:
    - ${CI_PROJECT_DIR}/tools/ci/retry.sh aws s3 cp s3://binaries-ddbuild-io-prod/dd-source/domains/seceng/sit/apps/artifact-security/vault-gpg-client/gpg-vault/dev/gpg-vault-v1.6.2-linux-amd64.tar.gz
      .
    - tar -xzf gpg-vault-v1.6.2-linux-amd64.tar.gz
    - mv gpg-vault-linux-amd64 /usr/bin/gpg-vault-bin
    - echo '#!/usr/bin/env bash' > /usr/bin/gpg
    - echo 'GPG_VAULT_COMPAT_MODE=true GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com"
      /usr/bin/gpg-vault "$@"' >> /usr/bin/gpg
    - chmod +x /usr/bin/gpg
    - echo '#!/usr/bin/env bash' > /usr/bin/gpg-vault
    - echo 'GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com" /usr/bin/gpg-vault-bin
      "$@"' >> /usr/bin/gpg-vault
    - chmod +x /usr/bin/gpg-vault
    - "for package in $OMNIBUS_PACKAGE_DIR/datadog-*-7.*x86_64.rpm; do\n  tools/ci/signing/sign_rpm_package.sh\
      \ \"$package\" $GPG_TEST_KEY_ID out/\ndone\n"
    - python2 /opt/rpm-s3/bin/rpm-s3 --verbose --visibility public-read -c "https://s3.amazonaws.com"
      -b $RPM_TESTING_S3_BUCKET -p "testing/pipeline-$DD_PIPELINE_ID/7/x86_64/" -a "x86_64"
      --sign --metadata-signing-key $GPG_TEST_KEY_ID out/datadog-*-7.*x86_64.rpm
    stage: e2e_deploy
    tags:
    - arch:amd64
    - specific:true
    variables:
      DD_PIPELINE_ID: $CI_PIPELINE_ID-a7
new-e2e-containers-k8s-latest
  new-e2e-containers-k8s-latest:
    after_script:
    - CODECOV_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $CODECOV token) || exit
      $?; export CODECOV_TOKEN
    - $CI_PROJECT_DIR/tools/ci/junit_upload.sh "junit-${CI_JOB_ID}.tgz" "$E2E_RESULT_JSON"
    - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  dda inv -- -e coverage.process-e2e-coverage-folders\
      \ $E2E_COVERAGE_OUT_DIR\n  dda inv -- -e dyntest.compute-and-upload-job-index\
      \ --bucket-uri $S3_PERMANENT_ARTIFACTS_URI --coverage-folder $E2E_COVERAGE_OUT_DIR\
      \ --commit-sha $CI_COMMIT_SHA --job-id $CI_JOB_ID\nfi\n"
    - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh\
      \ $AGENT_API_KEY_ORG2 token) || exit $?; export DD_API_KEY\n  for coverage in\
      \ \"$E2E_COVERAGE_OUT_DIR\"/*/coverage.txt; do\n    datadog-ci coverage upload\
      \ --format=go-coverprofile \"$coverage\" || true\n  done\nfi\n"
    artifacts:
      expire_in: 2 weeks
      paths:
      - $E2E_OUTPUT_DIR
      - $E2E_RESULT_JSON
      - junit-*.tgz
      - $E2E_COVERAGE_OUT_DIR
      reports:
        annotations:
        - $EXTERNAL_LINKS_PATH
      when: always
    before_script:
    - mkdir -p $GOPATH/pkg/mod/cache && zstd -dc modcache_e2e.tar.zst | tar xf - -C
      $GOPATH/pkg/mod/cache
    - rm -f modcache_e2e.tar.zst
    - mkdir -p ~/.pulumi && zstd -dc pulumi_plugins.tar.zst | tar xf - -C ~/.pulumi
    - rm -f pulumi_plugins.tar.zst
    - "go_bin=\"$(go env GOBIN)\"\nif [ -z \"$go_bin\" ]; then\n  go_bin=\"$(go env\
      \ GOPATH)/bin\"\nfi\nmkdir -p \"$go_bin\" \"$GOPATH/pkg/mod/cache\"\nzstd -dc\
      \ go_tools_bin.tar.zst | tar xf - -C \"$go_bin\"\nzstd -dc modcache_tools.tar.zst\
      \ | tar xf - -C \"$GOPATH/pkg/mod/cache\"\n"
    - rm -f go_tools_bin.tar.zst modcache_tools.tar.zst
    - export PATH=$PATH:$go_bin
    - mkdir -p ~/.aws
    - "if [ -n \"$E2E_USE_AWS_PROFILE\" ]; then\n  echo Using agent-qa-ci aws profile\n\
      \  $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E profile >> ~/.aws/config\
      \ || exit $?\n  # Now all `aws` commands target the agent-qa profile\n  export\
      \ AWS_PROFILE=agent-qa-ci\nelse\n  # Assume role to fetch only once credentials\
      \ and avoid rate limits\n  echo Assuming ddbuild-agent-ci role\n  roleoutput=\"\
      $(aws sts assume-role --role-arn arn:aws:iam::669783387624:role/ddbuild-agent-ci\
      \ --external-id ddbuild-agent-ci --role-session-name RoleSession)\"\n  export\
      \ AWS_ACCESS_KEY_ID=\"$(echo \"$roleoutput\" | jq -r '.Credentials.AccessKeyId')\"\
      \n  export AWS_SECRET_ACCESS_KEY=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SecretAccessKey')\"\
      \n  export AWS_SESSION_TOKEN=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SessionToken')\"\
      \nfi\n"
    - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AWS_PUBLIC_KEY_PATH
      || exit $?
    - touch $E2E_AWS_PRIVATE_KEY_PATH && chmod 600 $E2E_AWS_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
      $AGENT_QA_E2E ssh_key_rsa > $E2E_AWS_PRIVATE_KEY_PATH || exit $?
    - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AZURE_PUBLIC_KEY_PATH
      || exit $?
    - touch $E2E_AZURE_PRIVATE_KEY_PATH && chmod 600 $E2E_AZURE_PRIVATE_KEY_PATH &&
      $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_key_rsa > $E2E_AZURE_PRIVATE_KEY_PATH
      || exit $?
    - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_GCP_PUBLIC_KEY_PATH
      || exit $?
    - touch $E2E_GCP_PRIVATE_KEY_PATH && chmod 600 $E2E_GCP_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
      $AGENT_QA_E2E ssh_key_rsa > $E2E_GCP_PRIVATE_KEY_PATH || exit $?
    - pulumi login "s3://dd-pulumi-state?region=us-east-1&awssdk=v2&profile=$AWS_PROFILE"
    - ARM_CLIENT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE client_id)
      || exit $?; export ARM_CLIENT_ID
    - ARM_CLIENT_SECRET=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE token)
      || exit $?; export ARM_CLIENT_SECRET
    - ARM_TENANT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE tenant_id)
      || exit $?; export ARM_TENANT_ID
    - ARM_SUBSCRIPTION_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE subscription_id)
      || exit $?; export ARM_SUBSCRIPTION_ID
    - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_json > ~/gcp-credentials.json
      || exit $?
    - export GOOGLE_APPLICATION_CREDENTIALS=~/gcp-credentials.json
    - 'gcp_acr_key=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_acr_readonly)
      || exit $?
  
      export E2E_GCP_IMAGE_PULL_PASSWORD="b64=$(printf ''%s'' "$gcp_acr_key" | base64
      -w 0)"
  
      '
    - dda inv -- -e gitlab.generate-ci-visibility-links --output=$EXTERNAL_LINKS_PATH
    - export DD_ENV=nativetest
    - export DD_CIVISIBILITY_ENABLED=true
    - export DD_CIVISIBILITY_AGENTLESS_ENABLED=true
    - export DD_CIVISIBILITY_FLAKY_RETRY_ENABLED=false
    - export DD_TAGS="gitlab.pipeline_source:${CI_PIPELINE_SOURCE}"
    - DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_API_KEY_ORG2 token)
      || exit $?; export DD_API_KEY
    - export WINDOWS_DDNPM_DRIVER=${WINDOWS_DDNPM_DRIVER:-$(dda inv release.get-release-json-value
      "dependencies::WINDOWS_DDNPM_DRIVER" --no-worktree)}
    - export WINDOWS_DDPROCMON_DRIVER=${WINDOWS_DDPROCMON_DRIVER:-$(dda inv release.get-release-json-value
      "dependencies::WINDOWS_DDPROCMON_DRIVER" --no-worktree)}
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - go_e2e_deps
    - artifacts: false
      job: go_e2e_test_binaries
    - go_tools_deps
    - job: new-e2e-base-coverage
      optional: true
    - job: publish_fakeintake
      optional: true
    - job: publish_fakeintake_pinned
      optional: true
    - qa_agent_linux
    - qa_agent_linux_jmx
    - qa_dca
    - qa_dogstatsd
    rules:
    - if: $RUN_E2E_TESTS == "off"
      when: never
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - test/fakeintake/cmd/server/**/*.go
        - test/fakeintake/server/**/*.go
        - test/fakeintake/aggregator/**/*.go
        - test/fakeintake/api/**/*.go
        - test/fakeintake/go.mod
        - test/fakeintake/go.sum
        - test/fakeintake/Dockerfile
        - test/fakeintake/version/VERSION
        - .gitlab/build/binary_build/fakeintake.yml
        - .gitlab/deploy/container_build/fakeintake.yml
        - .gitlab/deploy/dev_container_deploy/fakeintake.yml
      variables:
        E2E_FAKEINTAKE_IMAGE_OVERRIDE: public.ecr.aws/datadog/fakeintake:v$CI_COMMIT_SHORT_SHA
      when: on_success
    - if: $RUN_E2E_TESTS == "on"
      when: on_success
    - if: $CI_COMMIT_BRANCH == "main"
      when: on_success
    - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.[0-9]+\.x$/
      when: on_success
    - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$/
      when: on_success
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - test/fakeintake/**/*
        - .gitlab/build/binary_build/fakeintake.yml
        - .gitlab/deploy/container_build/fakeintake.yml
        - .gitlab/deploy/dev_container_deploy/fakeintake.yml
      when: on_success
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/test/e2e/e2e.yml
        - test/e2e-framework/**/*
        - test/new-e2e/go.mod
        - flakes.yaml
        - release.json
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - comp/core/tagger/**/*
        - comp/core/workloadmeta/**/*
        - comp/core/autodiscovery/listeners/**/*
        - comp/core/autodiscovery/providers/**/*
        - comp/forwarder/defaultforwarder/**/*
        - comp/serializer/**/*
        - pkg/aggregator/*/**
        - comp/languagedetection/**/*
        - pkg/clusteragent/admission/mutate/**/*
        - pkg/clusteragent/languagedetection/**/*
        - pkg/collector/corechecks/cluster/**/*
        - pkg/collector/corechecks/containers/**/*
        - pkg/collector/corechecks/containerimage/**/*
        - pkg/collector/corechecks/containerlifecycle/**/*
        - pkg/collector/corechecks/sbom/**/*
        - pkg/sbom/**/*
        - pkg/util/clusteragent/**/*
        - pkg/util/containerd/**/*
        - pkg/util/containers/**/*
        - pkg/util/docker/**/*
        - pkg/util/ecs/**/*
        - pkg/util/kubernetes/**/*
        - pkg/util/cgroups/**/*
        - pkg/util/trivy/**/*
        - test/new-e2e/tests/containers/**/*
        - test/new-e2e/go.mod
      when: on_success
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - allow_failure: true
      when: manual
    script:
    - export IS_DEV_BRANCH="$(dda inv -- -e pipeline.is-dev-branch)"
    - DYNAMIC_TESTS_BREAKGLASS=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $DYNAMIC_TESTS_BREAKGLASS
      value) || exit $?; export DYNAMIC_TESTS_BREAKGLASS
    - "if [ \"$DYNAMIC_TESTS_BREAKGLASS\" == \"true\" ] || [ \"$IS_DEV_BRANCH\" == \"\
      false\" ] || [ \"$RUN_E2E_TESTS\" == \"on\" ]; then\n  export DYNAMIC_TESTS_FLAG=\"\
      \"\nfi\n"
    - export E2E_IMAGE_PULL_PASSWORD=$(aws ecr get-login-password),$E2E_GCP_IMAGE_PULL_PASSWORD
    - dda inv -- -e new-e2e-tests.run $DYNAMIC_TESTS_FLAG $PRE_BUILT_BINARIES_FLAG $MAX_RETRIES_FLAG
      --local-package $CI_PROJECT_DIR/$OMNIBUS_BASE_DIR --result-json $E2E_RESULT_JSON
      --targets $TARGETS --junit-tar junit-${CI_JOB_ID}.tgz ${EXTRA_PARAMS} --test-washer
      --logs-folder=$E2E_OUTPUT_DIR/logs --logs-post-processing --logs-post-processing-test-depth=$E2E_LOGS_PROCESSING_TEST_DEPTH
    stage: e2e
    tags:
    - arch:amd64
    - specific:true
    variables:
      DYNAMIC_TESTS_FLAG: --impacted
      E2E_AWS_PRIVATE_KEY_PATH: /tmp/agent-qa-aws-ssh-key
      E2E_AWS_PUBLIC_KEY_PATH: /tmp/agent-qa-aws-ssh-key.pub
      E2E_AZURE_PRIVATE_KEY_PATH: /tmp/agent-qa-azure-ssh-key
      E2E_AZURE_PUBLIC_KEY_PATH: /tmp/agent-qa-azure-ssh-key.pub
      E2E_COMMIT_SHA: $CI_COMMIT_SHORT_SHA
      E2E_COVERAGE_OUT_DIR: $CI_PROJECT_DIR/coverage
      E2E_GCP_PRIVATE_KEY_PATH: /tmp/agent-qa-gcp-ssh-key
      E2E_GCP_PUBLIC_KEY_PATH: /tmp/agent-qa-gcp-ssh-key.pub
      E2E_IMAGE_PULL_REGISTRY: 669783387624.dkr.ecr.us-east-1.amazonaws.com,us-central1-docker.pkg.dev
      E2E_IMAGE_PULL_USERNAME: AWS,_json_key
      E2E_KEY_PAIR_NAME: datadog-agent-ci-rsa
      E2E_LOGS_PROCESSING_TEST_DEPTH: 1
      E2E_OUTPUT_DIR: $CI_PROJECT_DIR/e2e-output
      E2E_PIPELINE_ID: $CI_PIPELINE_ID
      E2E_PREBUILD_S3_URI: $S3_PERMANENT_ARTIFACTS_URI/e2e-pre-build/$CI_PIPELINE_ID
      E2E_RESULT_JSON: $CI_PROJECT_DIR/e2e_test_output.json
      E2E_SKIP_WINDOWS: $SKIP_WINDOWS
      E2E_USE_AWS_PROFILE: 'true'
      EXTERNAL_LINKS_PATH: external_links_$CI_JOB_ID.json
-     EXTRA_PARAMS: --run TestKindSuite -c ddinfra:kubernetesVersion=v1.36.3@sha256:a16e7786dbb06083ddd49e59a17f9cb36e75e85491b192d6977a674d5364b720
+     EXTRA_PARAMS: --run TestKindSuite -c ddinfra:kubernetesVersion=v1.36.1@sha256:3489c7674813ba5d8b1a9977baea8a6e553784dab7b84759d1014dbd78f7ebd5
      FLAKY_PATTERNS_CONFIG: $CI_PROJECT_DIR/flaky-patterns-runtime.yaml
      GIT_STRATEGY: clone
      KUBERNETES_CPU_REQUEST: 6
      KUBERNETES_MEMORY_LIMIT: 16Gi
      KUBERNETES_MEMORY_REQUEST: 12Gi
      MAX_RETRIES_FLAG: ''
      ON_NIGHTLY_FIPS: 'true'
      PRE_BUILT_BINARIES_FLAG: --use-prebuilt-binaries
      REMOTE_STACK_CLEANING: 'true'
      SHOULD_RUN_IN_FLAKES_FINDER: 'true'
      TARGETS: ./tests/containers
      TEAM: container-integrations
publish_internal_container_image-fips
  publish_internal_container_image-fips:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_fips_agent7_jmx
    - artifacts: false
      job: docker_build_fips_agent7_arm64_jmx
    parallel:
      matrix:
      - COMPRESSION: -nydus
-       IMAGE_VERSION: tmpl-v24
+       IMAGE_VERSION: tmpl-v24.1
?                              ++
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
-       IMAGE_VERSION: tmpl-v25
?                             ^
+       IMAGE_VERSION: tmpl-v26
?                             ^
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: datadog-agent
      RELEASE_TAG_SUFFIX: -fips-jmx
      TMPL_SRC_IMAGE_SUFFIX: -7-fips-jmx
      TMPL_SRC_REPO: ci/datadog-agent/agent
publish_internal_container_image-host_profiler_standalone
  publish_internal_container_image-host_profiler_standalone:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_host_profiler_standalone_amd64
    - artifacts: false
      job: docker_build_host_profiler_standalone_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
        IMAGE_VERSION: tmpl-v1
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
        IMAGE_VERSION: tmpl-v2
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: ddot-ebpf
      RELEASE_PROD_OVERRIDE: 'true'
      TMPL_SRC_IMAGE_SUFFIX: '-7'
      TMPL_SRC_REPO: ci/datadog-agent/ddot-ebpf
publish_internal_container_image-jmx
  publish_internal_container_image-jmx:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_agent7_jmx
    - artifacts: false
      job: docker_build_agent7_jmx_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
-       IMAGE_VERSION: tmpl-v24
+       IMAGE_VERSION: tmpl-v24.1
?                              ++
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
-       IMAGE_VERSION: tmpl-v25
?                             ^
+       IMAGE_VERSION: tmpl-v26
?                             ^
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: datadog-agent
      RELEASE_TAG_SUFFIX: -jmx
      TMPL_ADP_VERSION: 0.1.7
      TMPL_SRC_IMAGE_SUFFIX: -7-jmx
      TMPL_SRC_REPO: ci/datadog-agent/agent
publish_internal_container_image-ot_standalone
  publish_internal_container_image-ot_standalone:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_ot_agent_standalone_amd64
    - artifacts: false
      job: docker_build_ot_agent_standalone_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
        IMAGE_VERSION: tmpl-v7
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
        IMAGE_VERSION: tmpl-v8
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: otel-agent
      TMPL_SRC_IMAGE_SUFFIX: '-7'
      TMPL_SRC_REPO: ci/datadog-agent/otel-agent
publish_internal_container_image-ot_standalone-fips
  publish_internal_container_image-ot_standalone-fips:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_ot_agent_standalone_fips_amd64
    - artifacts: false
      job: docker_build_ot_agent_standalone_fips_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
        IMAGE_VERSION: tmpl-v7
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
        IMAGE_VERSION: tmpl-v8
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: otel-agent
      RELEASE_TAG_SUFFIX: -fips
      TMPL_SRC_IMAGE_SUFFIX: -7-fips
      TMPL_SRC_REPO: ci/datadog-agent/otel-agent
publish_internal_dca_container_image
  publish_internal_dca_container_image:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_cluster_agent_amd64
    - artifacts: false
      job: docker_build_cluster_agent_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
        IMAGE_VERSION: tmpl-v12
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
        IMAGE_VERSION: tmpl-v13
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: datadog-cluster-agent
      RELEASE_PROD: 'true'
      TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
publish_internal_dca_container_image-fips
  publish_internal_dca_container_image-fips:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
    needs:
    - artifacts: false
      job: docker_build_cluster_agent_fips_amd64
    - artifacts: false
      job: docker_build_cluster_agent_fips_arm64
    parallel:
      matrix:
      - COMPRESSION: -nydus
        IMAGE_VERSION: tmpl-v12
+       MERGE_PLATFORM: 'false'
        RELEASE_TAG_COMPRESSION_SUFFIX: -zstd-nydus
      - COMPRESSION: ''
        IMAGE_VERSION: tmpl-v13
+       MERGE_PLATFORM: 'true'
        RELEASE_TAG_COMPRESSION_SUFFIX: ''
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
      variables:
        RELEASE_PROD: 'true'
    - changes:
        compare_to: $COMPARE_TO_BRANCH
        paths:
        - .gitlab/deploy/internal_image_deploy/internal_image_deploy.yml
        - Dockerfiles/**/*
      variables:
        RELEASE_PROD: 'false'
    - allow_failure: true
      variables:
        RELEASE_PROD: 'false'
      when: manual
    script:
    - export RELEASE_STAGING=""
    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
    - export IMAGES_GIT_REF="master"
    - export BASE_RELEASE_TAG="${CI_COMMIT_REF_NAME//\//-}"
    - export RELEASE_TAG="${BASE_RELEASE_TAG}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}"
    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
    - export IMAGE_VERSION="${IMAGE_VERSION}${COMPRESSION}"
    - export BUILD_TAG="${RELEASE_TAG}"
    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
      fi
    - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}\"\
      \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${BASE_RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}${RELEASE_TAG_SUFFIX}${RELEASE_TAG_COMPRESSION_SUFFIX}";
      fi
    - "# TODO: Remove this workaround once JIT replication is reliable for these\n#\
      \ images.\nif [ -z \"$CI_COMMIT_TAG\" ]; then\n  export RELEASE_STAGING=\"true\"\
      \n  export RELEASE_PROD=\"\"\nfi\n"
    - if [ "${RELEASE_PROD_OVERRIDE:-}" = "true" ]; then export RELEASE_PROD="true";
      fi
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
      ${IMAGES_GIT_REF} --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME
      --variable RELEASE_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --variable
      TMPL_ADP_VERSION --variable RELEASE_STAGING --variable RELEASE_PROD --variable
      DYNAMIC_BUILD_RENDER_RULES --variable APPS --variable BAZEL_TARGET --variable
      DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+     --variable MERGE_PLATFORM
    stage: internal_image_deploy
    tags:
    - arch:amd64
    - specific:true
    timeout: 1h
    variables:
      IMAGE_NAME: datadog-cluster-agent
      RELEASE_PROD: 'true'
      RELEASE_TAG_SUFFIX: -fips
      TMPL_SRC_IMAGE_SUFFIX: -fips
      TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
windows_choco_7_x64
  windows_choco_7_x64:
    artifacts:
      expire_in: 2 weeks
      paths:
      - omnibus/pkg/pipeline-$CI_PIPELINE_ID
    before_script:
    - C:\ci-identities-gitlab-job-client.exe assume-role
    id_tokens:
      CI_IDENTITIES_GITLAB_ID_TOKEN:
        aud: ci-identities
    needs:
    - windows_msi_and_bosh_zip_x64-a7
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - allow_failure: true
      if: $BUCKET_BRANCH != "beta" && $BUCKET_BRANCH != "stable"
      when: manual
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    script:
    - $ErrorActionPreference = "Stop"
    - if (Test-Path build-out) { remove-item -recurse -force build-out }
-   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
+   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e CI_IDENTITIES_GITLAB_ID_TOKEN
+     -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
      -e CI_PROJECT_NAME -e CI_PIPELINE_ID -e BUCKET_BRANCH -e AWS_NETWORKING=true ${WINBUILDIMAGE}
      powershell.exe -C "C:\mnt\tasks\winbuildscripts\Generate-Chocolatey-Package.ps1
      -MSIDirectory c:\mnt\omnibus\pkg\pipeline-${CI_PIPELINE_ID} -Flavor $FLAVOR -InstallDeps
      1"
  
      '
    - If ($lastExitCode -ne "0") { throw "Previous command returned $lastExitCode" }
    - $CopyNupkgToS3 = "$S3_CP_CMD --recursive --exclude '*' --include '*.nupkg' build-out
      $S3_RELEASE_ARTIFACTS_URI/choco/nupkg"
    - Invoke-Expression $CopyNupkgToS3
    stage: choco_build
    tags:
    - windows-v2:2022
    variables:
      ARCH: x64
      AWS_SHARED_CREDENTIALS_FILE: ${CI_PROJECT_DIR}\.aws\credentials-by-job-id\${CI_JOB_ID}
      FLAVOR: datadog-agent
      GIT_STRATEGY: clone
      WINBUILDIMAGE: registry.ddbuild.io/ci/datadog-agent-buildimages/windows_ltsc2022_${ARCH}${CI_IMAGE_WIN_LTSC2022_X64_SUFFIX}:${CI_IMAGE_WIN_LTSC2022_X64}
windows_choco_7_x64-fips
  windows_choco_7_x64-fips:
    artifacts:
      expire_in: 2 weeks
      paths:
      - omnibus/pkg/pipeline-$CI_PIPELINE_ID
    before_script:
    - C:\ci-identities-gitlab-job-client.exe assume-role
    id_tokens:
      CI_IDENTITIES_GITLAB_ID_TOKEN:
        aud: ci-identities
    needs:
    - windows_msi_and_bosh_zip_x64-a7-fips
    retry: 2
    rules:
    - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
      when: never
    - allow_failure: true
      if: $BUCKET_BRANCH != "beta" && $BUCKET_BRANCH != "stable"
      when: manual
    - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    script:
    - $ErrorActionPreference = "Stop"
    - if (Test-Path build-out) { remove-item -recurse -force build-out }
-   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
+   - 'docker run --rm -v "$(Get-Location):c:\mnt" -e CI -e GITLAB_CI -e CI_IDENTITIES_GITLAB_ID_TOKEN
+     -e DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS="${DDA_FEATURE_FLAGS_CI_SSM_KEY_WINDOWS}"
      -e CI_PROJECT_NAME -e CI_PIPELINE_ID -e BUCKET_BRANCH -e AWS_NETWORKING=true ${WINBUILDIMAGE}
      powershell.exe -C "C:\mnt\tasks\winbuildscripts\Generate-Chocolatey-Package.ps1
      -MSIDirectory c:\mnt\omnibus\pkg\pipeline-${CI_PIPELINE_ID} -Flavor $FLAVOR -InstallDeps
      1"
  
      '
    - If ($lastExitCode -ne "0") { throw "Previous command returned $lastExitCode" }
    - $CopyNupkgToS3 = "$S3_CP_CMD --recursive --exclude '*' --include '*.nupkg' build-out
      $S3_RELEASE_ARTIFACTS_URI/choco/nupkg"
    - Invoke-Expression $CopyNupkgToS3
    stage: choco_build
    tags:
    - windows-v2:2022
    variables:
      ARCH: x64
      AWS_SHARED_CREDENTIALS_FILE: ${CI_PROJECT_DIR}\.aws\credentials-by-job-id\${CI_JOB_ID}
      FLAVOR: datadog-fips-agent
      GIT_STRATEGY: clone
      WINBUILDIMAGE: registry.ddbuild.io/ci/datadog-agent-buildimages/windows_ltsc2022_${ARCH}${CI_IMAGE_WIN_LTSC2022_X64_SUFFIX}:${CI_IMAGE_WIN_LTSC2022_X64}

Added Jobs

.on_adp_preflight_mode_or_e2e_changes
.on_adp_preflight_mode_or_e2e_changes:
- if: $RUN_E2E_TESTS == "off"
  when: never
- if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
  when: never
- changes:
    compare_to: $COMPARE_TO_BRANCH
    paths:
    - test/fakeintake/cmd/server/**/*.go
    - test/fakeintake/server/**/*.go
    - test/fakeintake/aggregator/**/*.go
    - test/fakeintake/api/**/*.go
    - test/fakeintake/go.mod
    - test/fakeintake/go.sum
    - test/fakeintake/Dockerfile
    - test/fakeintake/version/VERSION
    - .gitlab/build/binary_build/fakeintake.yml
    - .gitlab/deploy/container_build/fakeintake.yml
    - .gitlab/deploy/dev_container_deploy/fakeintake.yml
  variables:
    E2E_FAKEINTAKE_IMAGE_OVERRIDE: public.ecr.aws/datadog/fakeintake:v$CI_COMMIT_SHORT_SHA
  when: on_success
- if: $RUN_E2E_TESTS == "on"
  when: on_success
- if: $CI_COMMIT_BRANCH == "main"
  when: on_success
- if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.[0-9]+\.x$/
  when: on_success
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$/
  when: on_success
- changes:
    compare_to: $COMPARE_TO_BRANCH
    paths:
    - test/fakeintake/**/*
    - .gitlab/build/binary_build/fakeintake.yml
    - .gitlab/deploy/container_build/fakeintake.yml
    - .gitlab/deploy/dev_container_deploy/fakeintake.yml
  when: on_success
- changes:
    compare_to: $COMPARE_TO_BRANCH
    paths:
    - .gitlab/test/e2e/e2e.yml
    - test/e2e-framework/**/*
    - test/new-e2e/go.mod
    - flakes.yaml
    - release.json
- changes:
    compare_to: $COMPARE_TO_BRANCH
    paths:
    - comp/dataplane/preflightmode/**/*
    - test/new-e2e/tests/agent-data-plane/**/*
    - pkg/config/setup/config.go
    - deps/agent_data_plane/**/*
deploy_fips_proxy_testing-a7_x64
deploy_fips_proxy_testing-a7_x64:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/gitlab_agent_deploy$CI_IMAGE_GITLAB_AGENT_DEPLOY_SUFFIX:$CI_IMAGE_GITLAB_AGENT_DEPLOY
  needs: []
  rules:
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - .gitlab/deploy/e2e_testing_deploy/e2e_deploy.yml
  script:
  - ${CI_PROJECT_DIR}/tools/ci/retry.sh aws s3 cp s3://binaries-ddbuild-io-prod/dd-source/domains/seceng/sit/apps/artifact-security/vault-gpg-client/gpg-vault/dev/gpg-vault-v1.6.2-linux-amd64.tar.gz
    .
  - tar -xzf gpg-vault-v1.6.2-linux-amd64.tar.gz
  - mv gpg-vault-linux-amd64 /usr/bin/gpg-vault-bin
  - echo '#!/usr/bin/env bash' > /usr/bin/gpg
  - echo 'GPG_VAULT_COMPAT_MODE=true GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com"
    /usr/bin/gpg-vault "$@"' >> /usr/bin/gpg
  - chmod +x /usr/bin/gpg
  - echo '#!/usr/bin/env bash' > /usr/bin/gpg-vault
  - echo 'GPG_USER_ID="Datadog Packages" GPG_USER_EMAIL="package@datadoghq.com" /usr/bin/gpg-vault-bin
    "$@"' >> /usr/bin/gpg-vault
  - chmod +x /usr/bin/gpg-vault
  - tools/ci/retry.sh curl -fsSLO "https://yum.datadoghq.com/stable/7/x86_64/datadog-fips-proxy-${FIPS_PROXY_VERSION}.x86_64.rpm"
  - tools/ci/retry.sh curl -fsSLO "https://apt.datadoghq.com/pool/d/da/datadog-fips-proxy_${FIPS_PROXY_VERSION}_amd64.deb"
  - tools/ci/signing/sign_rpm_package.sh "datadog-fips-proxy-${FIPS_PROXY_VERSION}.x86_64.rpm"
    $GPG_TEST_KEY_ID out/
  - python2 /opt/rpm-s3/bin/rpm-s3 --verbose --visibility public-read -c "https://s3.amazonaws.com"
    -b $RPM_TESTING_S3_BUCKET -p "testing/pipeline-$DD_PIPELINE_ID/7/x86_64/" -a "x86_64"
    --sign --metadata-signing-key $GPG_TEST_KEY_ID "out/datadog-fips-proxy-${FIPS_PROXY_VERSION}.x86_64.rpm"
  - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a amd64 --sign=$GPG_TEST_KEY_ID
    --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
    public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} "datadog-fips-proxy_${FIPS_PROXY_VERSION}_amd64.deb"
  - deb-s3 upload -c "stable-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a x86_64 --sign=$GPG_TEST_KEY_ID
    --gpg_options="--batch --digest-algo sha512" --preserve_versions --visibility
    public --prefix datadog-agent/pipeline-${DD_PIPELINE_ID} "datadog-fips-proxy_${FIPS_PROXY_VERSION}_amd64.deb"
  stage: e2e_deploy
  tags:
  - arch:amd64
  - specific:true
  variables:
    DD_PIPELINE_ID: $CI_PIPELINE_ID-a7
    FIPS_PROXY_VERSION: 1.1.29-1
new-e2e-adp-preflight-mode
new-e2e-adp-preflight-mode:
  after_script:
  - CODECOV_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $CODECOV token) || exit
    $?; export CODECOV_TOKEN
  - $CI_PROJECT_DIR/tools/ci/junit_upload.sh "junit-${CI_JOB_ID}.tgz" "$E2E_RESULT_JSON"
  - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  dda inv -- -e coverage.process-e2e-coverage-folders\
    \ $E2E_COVERAGE_OUT_DIR\n  dda inv -- -e dyntest.compute-and-upload-job-index\
    \ --bucket-uri $S3_PERMANENT_ARTIFACTS_URI --coverage-folder $E2E_COVERAGE_OUT_DIR\
    \ --commit-sha $CI_COMMIT_SHA --job-id $CI_JOB_ID\nfi\n"
  - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh\
    \ $AGENT_API_KEY_ORG2 token) || exit $?; export DD_API_KEY\n  for coverage in\
    \ \"$E2E_COVERAGE_OUT_DIR\"/*/coverage.txt; do\n    datadog-ci coverage upload\
    \ --format=go-coverprofile \"$coverage\" || true\n  done\nfi\n"
  artifacts:
    expire_in: 2 weeks
    paths:
    - $E2E_OUTPUT_DIR
    - $E2E_RESULT_JSON
    - junit-*.tgz
    - $E2E_COVERAGE_OUT_DIR
    reports:
      annotations:
      - $EXTERNAL_LINKS_PATH
    when: always
  before_script:
  - mkdir -p $GOPATH/pkg/mod/cache && zstd -dc modcache_e2e.tar.zst | tar xf - -C
    $GOPATH/pkg/mod/cache
  - rm -f modcache_e2e.tar.zst
  - mkdir -p ~/.pulumi && zstd -dc pulumi_plugins.tar.zst | tar xf - -C ~/.pulumi
  - rm -f pulumi_plugins.tar.zst
  - "go_bin=\"$(go env GOBIN)\"\nif [ -z \"$go_bin\" ]; then\n  go_bin=\"$(go env\
    \ GOPATH)/bin\"\nfi\nmkdir -p \"$go_bin\" \"$GOPATH/pkg/mod/cache\"\nzstd -dc\
    \ go_tools_bin.tar.zst | tar xf - -C \"$go_bin\"\nzstd -dc modcache_tools.tar.zst\
    \ | tar xf - -C \"$GOPATH/pkg/mod/cache\"\n"
  - rm -f go_tools_bin.tar.zst modcache_tools.tar.zst
  - export PATH=$PATH:$go_bin
  - mkdir -p ~/.aws
  - "if [ -n \"$E2E_USE_AWS_PROFILE\" ]; then\n  echo Using agent-qa-ci aws profile\n\
    \  $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E profile >> ~/.aws/config\
    \ || exit $?\n  # Now all `aws` commands target the agent-qa profile\n  export\
    \ AWS_PROFILE=agent-qa-ci\nelse\n  # Assume role to fetch only once credentials\
    \ and avoid rate limits\n  echo Assuming ddbuild-agent-ci role\n  roleoutput=\"\
    $(aws sts assume-role --role-arn arn:aws:iam::669783387624:role/ddbuild-agent-ci\
    \ --external-id ddbuild-agent-ci --role-session-name RoleSession)\"\n  export\
    \ AWS_ACCESS_KEY_ID=\"$(echo \"$roleoutput\" | jq -r '.Credentials.AccessKeyId')\"\
    \n  export AWS_SECRET_ACCESS_KEY=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SecretAccessKey')\"\
    \n  export AWS_SESSION_TOKEN=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SessionToken')\"\
    \nfi\n"
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AWS_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_AWS_PRIVATE_KEY_PATH && chmod 600 $E2E_AWS_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
    $AGENT_QA_E2E ssh_key_rsa > $E2E_AWS_PRIVATE_KEY_PATH || exit $?
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AZURE_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_AZURE_PRIVATE_KEY_PATH && chmod 600 $E2E_AZURE_PRIVATE_KEY_PATH &&
    $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_key_rsa > $E2E_AZURE_PRIVATE_KEY_PATH
    || exit $?
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_GCP_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_GCP_PRIVATE_KEY_PATH && chmod 600 $E2E_GCP_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
    $AGENT_QA_E2E ssh_key_rsa > $E2E_GCP_PRIVATE_KEY_PATH || exit $?
  - pulumi login "s3://dd-pulumi-state?region=us-east-1&awssdk=v2&profile=$AWS_PROFILE"
  - ARM_CLIENT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE client_id)
    || exit $?; export ARM_CLIENT_ID
  - ARM_CLIENT_SECRET=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE token)
    || exit $?; export ARM_CLIENT_SECRET
  - ARM_TENANT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE tenant_id)
    || exit $?; export ARM_TENANT_ID
  - ARM_SUBSCRIPTION_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE subscription_id)
    || exit $?; export ARM_SUBSCRIPTION_ID
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_json > ~/gcp-credentials.json
    || exit $?
  - export GOOGLE_APPLICATION_CREDENTIALS=~/gcp-credentials.json
  - 'gcp_acr_key=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_acr_readonly)
    || exit $?

    export E2E_GCP_IMAGE_PULL_PASSWORD="b64=$(printf ''%s'' "$gcp_acr_key" | base64
    -w 0)"

    '
  - dda inv -- -e gitlab.generate-ci-visibility-links --output=$EXTERNAL_LINKS_PATH
  - export DD_ENV=nativetest
  - export DD_CIVISIBILITY_ENABLED=true
  - export DD_CIVISIBILITY_AGENTLESS_ENABLED=true
  - export DD_CIVISIBILITY_FLAKY_RETRY_ENABLED=false
  - export DD_TAGS="gitlab.pipeline_source:${CI_PIPELINE_SOURCE}"
  - DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_API_KEY_ORG2 token)
    || exit $?; export DD_API_KEY
  - export WINDOWS_DDNPM_DRIVER=${WINDOWS_DDNPM_DRIVER:-$(dda inv release.get-release-json-value
    "dependencies::WINDOWS_DDNPM_DRIVER" --no-worktree)}
  - export WINDOWS_DDPROCMON_DRIVER=${WINDOWS_DDPROCMON_DRIVER:-$(dda inv release.get-release-json-value
    "dependencies::WINDOWS_DDPROCMON_DRIVER" --no-worktree)}
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
  needs:
  - go_e2e_deps
  - artifacts: false
    job: go_e2e_test_binaries
  - go_tools_deps
  - job: new-e2e-base-coverage
    optional: true
  - job: publish_fakeintake
    optional: true
  - job: publish_fakeintake_pinned
    optional: true
  - agent_deb-x64-a7
  - agent_deb-x64-a7-fips
  rules:
  - if: $RUN_E2E_TESTS == "off"
    when: never
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - test/fakeintake/cmd/server/**/*.go
      - test/fakeintake/server/**/*.go
      - test/fakeintake/aggregator/**/*.go
      - test/fakeintake/api/**/*.go
      - test/fakeintake/go.mod
      - test/fakeintake/go.sum
      - test/fakeintake/Dockerfile
      - test/fakeintake/version/VERSION
      - .gitlab/build/binary_build/fakeintake.yml
      - .gitlab/deploy/container_build/fakeintake.yml
      - .gitlab/deploy/dev_container_deploy/fakeintake.yml
    variables:
      E2E_FAKEINTAKE_IMAGE_OVERRIDE: public.ecr.aws/datadog/fakeintake:v$CI_COMMIT_SHORT_SHA
    when: on_success
  - if: $RUN_E2E_TESTS == "on"
    when: on_success
  - if: $CI_COMMIT_BRANCH == "main"
    when: on_success
  - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.[0-9]+\.x$/
    when: on_success
  - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$/
    when: on_success
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - test/fakeintake/**/*
      - .gitlab/build/binary_build/fakeintake.yml
      - .gitlab/deploy/container_build/fakeintake.yml
      - .gitlab/deploy/dev_container_deploy/fakeintake.yml
    when: on_success
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - .gitlab/test/e2e/e2e.yml
      - test/e2e-framework/**/*
      - test/new-e2e/go.mod
      - flakes.yaml
      - release.json
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - comp/dataplane/preflightmode/**/*
      - test/new-e2e/tests/agent-data-plane/**/*
      - pkg/config/setup/config.go
      - deps/agent_data_plane/**/*
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - allow_failure: true
    when: manual
  script:
  - export IS_DEV_BRANCH="$(dda inv -- -e pipeline.is-dev-branch)"
  - DYNAMIC_TESTS_BREAKGLASS=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $DYNAMIC_TESTS_BREAKGLASS
    value) || exit $?; export DYNAMIC_TESTS_BREAKGLASS
  - "if [ \"$DYNAMIC_TESTS_BREAKGLASS\" == \"true\" ] || [ \"$IS_DEV_BRANCH\" == \"\
    false\" ] || [ \"$RUN_E2E_TESTS\" == \"on\" ]; then\n  export DYNAMIC_TESTS_FLAG=\"\
    \"\nfi\n"
  - export E2E_IMAGE_PULL_PASSWORD=$(aws ecr get-login-password),$E2E_GCP_IMAGE_PULL_PASSWORD
  - dda inv -- -e new-e2e-tests.run $DYNAMIC_TESTS_FLAG $PRE_BUILT_BINARIES_FLAG $MAX_RETRIES_FLAG
    --local-package $CI_PROJECT_DIR/$OMNIBUS_BASE_DIR --result-json $E2E_RESULT_JSON
    --targets $TARGETS --junit-tar junit-${CI_JOB_ID}.tgz ${EXTRA_PARAMS} --test-washer
    --logs-folder=$E2E_OUTPUT_DIR/logs --logs-post-processing --logs-post-processing-test-depth=$E2E_LOGS_PROCESSING_TEST_DEPTH
  stage: e2e
  tags:
  - arch:amd64
  - specific:true
  variables:
    DYNAMIC_TESTS_FLAG: --impacted
    E2E_AWS_PRIVATE_KEY_PATH: /tmp/agent-qa-aws-ssh-key
    E2E_AWS_PUBLIC_KEY_PATH: /tmp/agent-qa-aws-ssh-key.pub
    E2E_AZURE_PRIVATE_KEY_PATH: /tmp/agent-qa-azure-ssh-key
    E2E_AZURE_PUBLIC_KEY_PATH: /tmp/agent-qa-azure-ssh-key.pub
    E2E_COMMIT_SHA: $CI_COMMIT_SHORT_SHA
    E2E_COVERAGE_OUT_DIR: $CI_PROJECT_DIR/coverage
    E2E_GCP_PRIVATE_KEY_PATH: /tmp/agent-qa-gcp-ssh-key
    E2E_GCP_PUBLIC_KEY_PATH: /tmp/agent-qa-gcp-ssh-key.pub
    E2E_IMAGE_PULL_REGISTRY: 669783387624.dkr.ecr.us-east-1.amazonaws.com,us-central1-docker.pkg.dev
    E2E_IMAGE_PULL_USERNAME: AWS,_json_key
    E2E_KEY_PAIR_NAME: datadog-agent-ci-rsa
    E2E_LOGS_PROCESSING_TEST_DEPTH: 1
    E2E_OUTPUT_DIR: $CI_PROJECT_DIR/e2e-output
    E2E_PIPELINE_ID: $CI_PIPELINE_ID
    E2E_PREBUILD_S3_URI: $S3_PERMANENT_ARTIFACTS_URI/e2e-pre-build/$CI_PIPELINE_ID
    E2E_RESULT_JSON: $CI_PROJECT_DIR/e2e_test_output.json
    E2E_SKIP_WINDOWS: $SKIP_WINDOWS
    E2E_USE_AWS_PROFILE: 'true'
    EXTERNAL_LINKS_PATH: external_links_$CI_JOB_ID.json
    EXTRA_PARAMS: --run "TestPreflightModeLinuxSuite"
    FLAKY_PATTERNS_CONFIG: $CI_PROJECT_DIR/flaky-patterns-runtime.yaml
    GIT_STRATEGY: clone
    KUBERNETES_CPU_REQUEST: 6
    KUBERNETES_MEMORY_LIMIT: 16Gi
    KUBERNETES_MEMORY_REQUEST: 12Gi
    MAX_RETRIES_FLAG: ''
    PRE_BUILT_BINARIES_FLAG: --use-prebuilt-binaries
    REMOTE_STACK_CLEANING: 'true'
    SHOULD_RUN_IN_FLAKES_FINDER: 'true'
    TARGETS: ./tests/agent-data-plane/preflight-mode
    TEAM: agent-data-plane
new-e2e-adp-preflight-mode-windows
new-e2e-adp-preflight-mode-windows:
  after_script:
  - CODECOV_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $CODECOV token) || exit
    $?; export CODECOV_TOKEN
  - $CI_PROJECT_DIR/tools/ci/junit_upload.sh "junit-${CI_JOB_ID}.tgz" "$E2E_RESULT_JSON"
  - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  dda inv -- -e coverage.process-e2e-coverage-folders\
    \ $E2E_COVERAGE_OUT_DIR\n  dda inv -- -e dyntest.compute-and-upload-job-index\
    \ --bucket-uri $S3_PERMANENT_ARTIFACTS_URI --coverage-folder $E2E_COVERAGE_OUT_DIR\
    \ --commit-sha $CI_COMMIT_SHA --job-id $CI_JOB_ID\nfi\n"
  - "if [ -d \"$E2E_COVERAGE_OUT_DIR\" ]; then\n  DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh\
    \ $AGENT_API_KEY_ORG2 token) || exit $?; export DD_API_KEY\n  for coverage in\
    \ \"$E2E_COVERAGE_OUT_DIR\"/*/coverage.txt; do\n    datadog-ci coverage upload\
    \ --format=go-coverprofile \"$coverage\" || true\n  done\nfi\n"
  artifacts:
    expire_in: 2 weeks
    paths:
    - $E2E_OUTPUT_DIR
    - $E2E_RESULT_JSON
    - junit-*.tgz
    - $E2E_COVERAGE_OUT_DIR
    reports:
      annotations:
      - $EXTERNAL_LINKS_PATH
    when: always
  before_script:
  - mkdir -p $GOPATH/pkg/mod/cache && zstd -dc modcache_e2e.tar.zst | tar xf - -C
    $GOPATH/pkg/mod/cache
  - rm -f modcache_e2e.tar.zst
  - mkdir -p ~/.pulumi && zstd -dc pulumi_plugins.tar.zst | tar xf - -C ~/.pulumi
  - rm -f pulumi_plugins.tar.zst
  - "go_bin=\"$(go env GOBIN)\"\nif [ -z \"$go_bin\" ]; then\n  go_bin=\"$(go env\
    \ GOPATH)/bin\"\nfi\nmkdir -p \"$go_bin\" \"$GOPATH/pkg/mod/cache\"\nzstd -dc\
    \ go_tools_bin.tar.zst | tar xf - -C \"$go_bin\"\nzstd -dc modcache_tools.tar.zst\
    \ | tar xf - -C \"$GOPATH/pkg/mod/cache\"\n"
  - rm -f go_tools_bin.tar.zst modcache_tools.tar.zst
  - export PATH=$PATH:$go_bin
  - mkdir -p ~/.aws
  - "if [ -n \"$E2E_USE_AWS_PROFILE\" ]; then\n  echo Using agent-qa-ci aws profile\n\
    \  $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E profile >> ~/.aws/config\
    \ || exit $?\n  # Now all `aws` commands target the agent-qa profile\n  export\
    \ AWS_PROFILE=agent-qa-ci\nelse\n  # Assume role to fetch only once credentials\
    \ and avoid rate limits\n  echo Assuming ddbuild-agent-ci role\n  roleoutput=\"\
    $(aws sts assume-role --role-arn arn:aws:iam::669783387624:role/ddbuild-agent-ci\
    \ --external-id ddbuild-agent-ci --role-session-name RoleSession)\"\n  export\
    \ AWS_ACCESS_KEY_ID=\"$(echo \"$roleoutput\" | jq -r '.Credentials.AccessKeyId')\"\
    \n  export AWS_SECRET_ACCESS_KEY=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SecretAccessKey')\"\
    \n  export AWS_SESSION_TOKEN=\"$(echo \"$roleoutput\" | jq -r '.Credentials.SessionToken')\"\
    \nfi\n"
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AWS_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_AWS_PRIVATE_KEY_PATH && chmod 600 $E2E_AWS_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
    $AGENT_QA_E2E ssh_key_rsa > $E2E_AWS_PRIVATE_KEY_PATH || exit $?
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_AZURE_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_AZURE_PRIVATE_KEY_PATH && chmod 600 $E2E_AZURE_PRIVATE_KEY_PATH &&
    $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_key_rsa > $E2E_AZURE_PRIVATE_KEY_PATH
    || exit $?
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_QA_E2E ssh_public_key_rsa > $E2E_GCP_PUBLIC_KEY_PATH
    || exit $?
  - touch $E2E_GCP_PRIVATE_KEY_PATH && chmod 600 $E2E_GCP_PRIVATE_KEY_PATH && $CI_PROJECT_DIR/tools/ci/fetch_secret.sh
    $AGENT_QA_E2E ssh_key_rsa > $E2E_GCP_PRIVATE_KEY_PATH || exit $?
  - pulumi login "s3://dd-pulumi-state?region=us-east-1&awssdk=v2&profile=$AWS_PROFILE"
  - ARM_CLIENT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE client_id)
    || exit $?; export ARM_CLIENT_ID
  - ARM_CLIENT_SECRET=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE token)
    || exit $?; export ARM_CLIENT_SECRET
  - ARM_TENANT_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE tenant_id)
    || exit $?; export ARM_TENANT_ID
  - ARM_SUBSCRIPTION_ID=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_AZURE subscription_id)
    || exit $?; export ARM_SUBSCRIPTION_ID
  - $CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_json > ~/gcp-credentials.json
    || exit $?
  - export GOOGLE_APPLICATION_CREDENTIALS=~/gcp-credentials.json
  - 'gcp_acr_key=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $E2E_GCP credentials_acr_readonly)
    || exit $?

    export E2E_GCP_IMAGE_PULL_PASSWORD="b64=$(printf ''%s'' "$gcp_acr_key" | base64
    -w 0)"

    '
  - dda inv -- -e gitlab.generate-ci-visibility-links --output=$EXTERNAL_LINKS_PATH
  - export DD_ENV=nativetest
  - export DD_CIVISIBILITY_ENABLED=true
  - export DD_CIVISIBILITY_AGENTLESS_ENABLED=true
  - export DD_CIVISIBILITY_FLAKY_RETRY_ENABLED=false
  - export DD_TAGS="gitlab.pipeline_source:${CI_PIPELINE_SOURCE}"
  - DD_API_KEY=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $AGENT_API_KEY_ORG2 token)
    || exit $?; export DD_API_KEY
  - export WINDOWS_DDNPM_DRIVER=${WINDOWS_DDNPM_DRIVER:-$(dda inv release.get-release-json-value
    "dependencies::WINDOWS_DDNPM_DRIVER" --no-worktree)}
  - export WINDOWS_DDPROCMON_DRIVER=${WINDOWS_DDPROCMON_DRIVER:-$(dda inv release.get-release-json-value
    "dependencies::WINDOWS_DDPROCMON_DRIVER" --no-worktree)}
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux$CI_IMAGE_LINUX_SUFFIX:$CI_IMAGE_LINUX
  needs:
  - go_e2e_deps
  - artifacts: false
    job: go_e2e_test_binaries
  - go_tools_deps
  - job: new-e2e-base-coverage
    optional: true
  - job: publish_fakeintake
    optional: true
  - job: publish_fakeintake_pinned
    optional: true
  - windows_msi_and_bosh_zip_x64-a7
  - windows_msi_and_bosh_zip_x64-a7-fips
  rules:
  - if: $RUN_E2E_TESTS == "off"
    when: never
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - test/fakeintake/cmd/server/**/*.go
      - test/fakeintake/server/**/*.go
      - test/fakeintake/aggregator/**/*.go
      - test/fakeintake/api/**/*.go
      - test/fakeintake/go.mod
      - test/fakeintake/go.sum
      - test/fakeintake/Dockerfile
      - test/fakeintake/version/VERSION
      - .gitlab/build/binary_build/fakeintake.yml
      - .gitlab/deploy/container_build/fakeintake.yml
      - .gitlab/deploy/dev_container_deploy/fakeintake.yml
    variables:
      E2E_FAKEINTAKE_IMAGE_OVERRIDE: public.ecr.aws/datadog/fakeintake:v$CI_COMMIT_SHORT_SHA
    when: on_success
  - if: $RUN_E2E_TESTS == "on"
    when: on_success
  - if: $CI_COMMIT_BRANCH == "main"
    when: on_success
  - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.[0-9]+\.x$/
    when: on_success
  - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$/
    when: on_success
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - test/fakeintake/**/*
      - .gitlab/build/binary_build/fakeintake.yml
      - .gitlab/deploy/container_build/fakeintake.yml
      - .gitlab/deploy/dev_container_deploy/fakeintake.yml
    when: on_success
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - .gitlab/test/e2e/e2e.yml
      - test/e2e-framework/**/*
      - test/new-e2e/go.mod
      - flakes.yaml
      - release.json
  - changes:
      compare_to: $COMPARE_TO_BRANCH
      paths:
      - comp/dataplane/preflightmode/**/*
      - test/new-e2e/tests/agent-data-plane/**/*
      - pkg/config/setup/config.go
      - deps/agent_data_plane/**/*
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - allow_failure: true
    when: manual
  script:
  - export IS_DEV_BRANCH="$(dda inv -- -e pipeline.is-dev-branch)"
  - DYNAMIC_TESTS_BREAKGLASS=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $DYNAMIC_TESTS_BREAKGLASS
    value) || exit $?; export DYNAMIC_TESTS_BREAKGLASS
  - "if [ \"$DYNAMIC_TESTS_BREAKGLASS\" == \"true\" ] || [ \"$IS_DEV_BRANCH\" == \"\
    false\" ] || [ \"$RUN_E2E_TESTS\" == \"on\" ]; then\n  export DYNAMIC_TESTS_FLAG=\"\
    \"\nfi\n"
  - export E2E_IMAGE_PULL_PASSWORD=$(aws ecr get-login-password),$E2E_GCP_IMAGE_PULL_PASSWORD
  - dda inv -- -e new-e2e-tests.run $DYNAMIC_TESTS_FLAG $PRE_BUILT_BINARIES_FLAG $MAX_RETRIES_FLAG
    --local-package $CI_PROJECT_DIR/$OMNIBUS_BASE_DIR --result-json $E2E_RESULT_JSON
    --targets $TARGETS --junit-tar junit-${CI_JOB_ID}.tgz ${EXTRA_PARAMS} --test-washer
    --logs-folder=$E2E_OUTPUT_DIR/logs --logs-post-processing --logs-post-processing-test-depth=$E2E_LOGS_PROCESSING_TEST_DEPTH
  stage: e2e
  tags:
  - arch:amd64
  - specific:true
  variables:
    DYNAMIC_TESTS_FLAG: --impacted
    E2E_AWS_PRIVATE_KEY_PATH: /tmp/agent-qa-aws-ssh-key
    E2E_AWS_PUBLIC_KEY_PATH: /tmp/agent-qa-aws-ssh-key.pub
    E2E_AZURE_PRIVATE_KEY_PATH: /tmp/agent-qa-azure-ssh-key
    E2E_AZURE_PUBLIC_KEY_PATH: /tmp/agent-qa-azure-ssh-key.pub
    E2E_COMMIT_SHA: $CI_COMMIT_SHORT_SHA
    E2E_COVERAGE_OUT_DIR: $CI_PROJECT_DIR/coverage
    E2E_GCP_PRIVATE_KEY_PATH: /tmp/agent-qa-gcp-ssh-key
    E2E_GCP_PUBLIC_KEY_PATH: /tmp/agent-qa-gcp-ssh-key.pub
    E2E_IMAGE_PULL_REGISTRY: 669783387624.dkr.ecr.us-east-1.amazonaws.com,us-central1-docker.pkg.dev
    E2E_IMAGE_PULL_USERNAME: AWS,_json_key
    E2E_KEY_PAIR_NAME: datadog-agent-ci-rsa
    E2E_LOGS_PROCESSING_TEST_DEPTH: 1
    E2E_OUTPUT_DIR: $CI_PROJECT_DIR/e2e-output
    E2E_PIPELINE_ID: $CI_PIPELINE_ID
    E2E_PREBUILD_S3_URI: $S3_PERMANENT_ARTIFACTS_URI/e2e-pre-build/$CI_PIPELINE_ID
    E2E_RESULT_JSON: $CI_PROJECT_DIR/e2e_test_output.json
    E2E_SKIP_WINDOWS: $SKIP_WINDOWS
    E2E_USE_AWS_PROFILE: 'true'
    EXTERNAL_LINKS_PATH: external_links_$CI_JOB_ID.json
    EXTRA_PARAMS: --run "TestPreflightModeWindowsSuite"
    FLAKY_PATTERNS_CONFIG: $CI_PROJECT_DIR/flaky-patterns-runtime.yaml
    GIT_STRATEGY: clone
    KUBERNETES_CPU_REQUEST: 6
    KUBERNETES_MEMORY_LIMIT: 16Gi
    KUBERNETES_MEMORY_REQUEST: 12Gi
    MAX_RETRIES_FLAG: ''
    PRE_BUILT_BINARIES_FLAG: --use-prebuilt-binaries
    REMOTE_STACK_CLEANING: 'true'
    SHOULD_RUN_IN_FLAKES_FINDER: 'true'
    TARGETS: ./tests/agent-data-plane/preflight-mode
    TEAM: agent-data-plane

Removed Jobs

  • .setup_github_ci_platform_machine_images_token

Changes Summary

Removed Modified Added Renamed
1 16 4 0

Updated: .gitlab/distribution.yml

Removed Jobs

  • .setup_github_ci_platform_machine_images_token
  • generate_windows_gitlab_runner_bump_pr
  • generate_windows_gitlab_runner_bump_pr_manual

Changes Summary

Removed Modified Added Renamed
3 0 0 0

ℹ️ Diff available in the job log.

@dd-octo-sts

dd-octo-sts Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor Author

Files inventory check summary

File checks results against ancestor d2034250:

Results for datadog-agent_7.83.0~rc.8.git.1.bef75b4.pipeline.133801946-1_amd64.deb:

No change detected

Results for datadog-iot-agent_7.83.0~rc.8.git.1.bef75b4.pipeline.133801946-1_amd64.deb:

No change detected

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit 55f1611 into 7.83.x Aug 28, 2026
430 of 440 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the backport-54908-to-7.83.x branch August 28, 2026 08:25
@github-actions github-actions Bot added this to the 7.83.0 milestone Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport bot changelog/no-changelog No changelog entry needed internal Identify a non-fork PR qa/no-code-change No code change in Agent code requiring validation short review PR is simple enough to be reviewed quickly team/agent-build team/agent-devx

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant