Repository: DataDog/datadog-agent
Pull request #36953: Improve code hygiene for internal image deploy jobs
Author: login: AliDatadog
Labels: name: changelog/no-changelog
description: No changelog entry needed
name: qa/no-code-change
description: No code change in Agent code requiring validation
name: long review
description: PR is complex, plan time to review it
Created: 2025-05-14T11:46:48Z | Merged: 2025-05-14T17:03:22Z

<!--
* Contributors are encouraged to read our [CONTRIBUTING](/CONTRIBUTING.md) documentation.
* Both Contributor and Reviewer Checklists are available at https://datadoghq.dev/datadog-agent/guidelines/contributing/#pull-requests.
* The pull request:
  * Should only fix one issue or add one feature at a time.
  * Must update the test suite for the relevant functionality.
  * Should pass all status checks before being reviewed or merged.
* Commit titles should be prefixed with general area of pull request's change.
* Please fill the below sections if possible with relevant information or links.
-->
### What does this PR do?

- Factorize jobs in `.gitlab/internal_image_deploy/internal_image_deploy.yml` to highlight actual differences between jobs
- Rename `docker_trigger_internal` as `publish-container-image`

### Motivation

Improve maintainability. There are way too many copy pasted jobs and it's easy to do mistakes

### Describe how you validated your changes
<!--
Validate your changes before merge, ensuring that:
* Your PR is tested by static / unit / integrations / e2e tests
* Your PR description details which e2e tests cover your changes, if any
* The PR description contains details of how you validated your changes. If you validated changes manually and not through automated tests, add context on why automated tests did not fit your changes validation.

If you want additional validation by a second person, you can ask reviewers to do it. Describe how to set up an environment for manual tests in the PR description. Manual validation is expected to happen on every commit before merge.

Any manual validation step should then map to an automated test. Manual validation should not substitute automation, minus exceptions not supported by test tooling yet.
-->
Run the CI and manually compare the final yaml with what is currently on main (see comments)

### Possible Drawbacks / Trade-offs

### Additional Notes
<!--
* Anything else we should know when reviewing?
* Include benchmarking information here whenever possible.
* Include info about alternatives that were considered and why the proposed
  version was chosen.
-->


Diff:
diff --git a/.gitlab/JOBOWNERS b/.gitlab/JOBOWNERS
index e34c81224555..dd2df03cb783 100644
--- a/.gitlab/JOBOWNERS
+++ b/.gitlab/JOBOWNERS
@@ -103,8 +103,8 @@ qa_dca*                                @DataDog/agent-devx
 qa_dogstatsd*                          @DataDog/agent-devx
 
 # Internal image deploy
-docker_trigger_internal*                     @Datadog/agent-delivery
-docker_trigger_cluster_agent_internal*       @Datadog/agent-delivery
+publish_internal_container_image*            @Datadog/agent-delivery
+publish_internal_dca_container_image*        @Datadog/agent-delivery
 
 # Internal kubernetes deploy
 internal_kubernetes_deploy*            @Datadog/agent-delivery
diff --git a/.gitlab/internal_image_deploy/internal_image_deploy.yml b/.gitlab/internal_image_deploy/internal_image_deploy.yml
index 3f6f89c89d5c..0b69a34ee8fb 100644
--- a/.gitlab/internal_image_deploy/internal_image_deploy.yml
+++ b/.gitlab/internal_image_deploy/internal_image_deploy.yml
@@ -2,28 +2,24 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
@@ -31,163 +27,95 @@ docker_trigger_internal:
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish_internal_container_image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish_internal_container_image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish_internal_container_image-full:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_amd64
+    - job: docker_build_agent7_full
       artifacts: false
-    - job: docker_build_cluster_agent_arm64
+    - job: docker_build_agent7_full_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-full"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-full"
 
-docker_trigger_cluster_agent_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish_internal_container_image-ot_standalone:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_fips_amd64
+    - job: docker_build_ot_agent_standalone_amd64
       artifacts: false
-    - job: docker_build_cluster_agent_fips_arm64
+    - job: docker_build_ot_agent_standalone_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-fips
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *ot_standalone_variables
+    TMPL_SRC_IMAGE_SUFFIX: "-7"
 
-docker_trigger_internal-full:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# DCA publish jobs
+publish_internal_dca_container_image:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_agent7_full
+    - job: docker_build_cluster_agent_amd64
       artifacts: false
-    - job: docker_build_agent7_full_arm64
+    - job: docker_build_cluster_agent_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-full
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-full
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-full
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
-  retry: 2
+    <<: *cluster_agent_variables
 
-docker_trigger_internal-ot_standalone:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish_internal_dca_container_image-fips:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_ot_agent_standalone_amd64
+    - job: docker_build_cluster_agent_fips_amd64
       artifacts: false
-    - job: docker_build_ot_agent_standalone_arm64
+    - job: docker_build_cluster_agent_fips_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v1
-    IMAGE_NAME: otel-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7
-    TMPL_SRC_REPO: ci/datadog-agent/otel-agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *cluster_agent_variables
+    RELEASE_TAG_SUFFIX: "-fips"
+    TMPL_SRC_IMAGE_SUFFIX: "-fips"
diff --git a/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml b/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
index 8da6c129478d..ac0f38b82bf5 100644
--- a/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
+++ b/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
@@ -7,11 +7,15 @@ internal_kubernetes_deploy_experimental:
   rules:
     - !reference [.on_scheduled_main]
   needs:
-    - job: docker_trigger_internal
+    - job: publish_internal_container_image-jmx
       artifacts: false
-    - job: docker_trigger_internal-full
+    - job: publish_internal_container_image-full
       artifacts: false
-    - job: docker_trigger_cluster_agent_internal
+    - job: publish_internal_container_image-ot_standalone
+      artifacts: false
+    - job: publish_internal_container_image-fips
+      artifacts: false
+    - job: publish_internal_dca_container_image
       artifacts: false
     - job: docker_build_agent7_windows1809
       artifacts: false
@@ -43,17 +47,17 @@ internal_kubernetes_deploy_experimental:
   script:
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
     - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/k8s-datadog-agent-ops --git-ref main
-        --variable OPTION_AUTOMATIC_ROLLOUT
-        --variable EXPLICIT_WORKFLOWS
-        --variable OPTION_PRE_SCRIPT
-        --variable SKIP_PLAN_CHECK
-        --variable APPS
-        --variable BAZEL_TARGET
-        --variable DDR
-        --variable DDR_WORKFLOW_ID
-        --variable TARGET_ENV
-        --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
-        --variable BUNDLE_VERSION_OVERRIDE"
+      --variable OPTION_AUTOMATIC_ROLLOUT
+      --variable EXPLICIT_WORKFLOWS
+      --variable OPTION_PRE_SCRIPT
+      --variable SKIP_PLAN_CHECK
+      --variable APPS
+      --variable BAZEL_TARGET
+      --variable DDR
+      --variable DDR_WORKFLOW_ID
+      --variable TARGET_ENV
+      --variable DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS
+      --variable BUNDLE_VERSION_OVERRIDE"
 
 notify-slack:
   stage: internal_kubernetes_deploy
diff --git a/.gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml b/.gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
index f9dc69cd7bfd..ac4caf22947c 100644
--- a/.gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
+++ b/.gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
@@ -10,11 +10,15 @@ rc_kubernetes_deploy:
     - if: $RC_BUILD == "true"
       when: manual
   needs:
-    - job: docker_trigger_internal
+    - job: publish_internal_container_image-jmx
       artifacts: false
-    - job: docker_trigger_cluster_agent_internal
+    - job: publish_internal_container_image-fips
       artifacts: false
-    - job: docker_trigger_internal-full
+    - job: publish_internal_container_image-ot_standalone
+      artifacts: false
+    - job: publish_internal_dca_container_image
+      artifacts: false
+    - job: publish_internal_container_image-full
       artifacts: false
     - job: k8s-e2e-main # Currently only require container Argo workflow
       artifacts: false
diff --git a/.gitlab/post_rc_build/post_rc_tasks.yml b/.gitlab/post_rc_build/post_rc_tasks.yml
index d465c368c9a7..dc4dd1b5acea 100644
--- a/.gitlab/post_rc_build/post_rc_tasks.yml
+++ b/.gitlab/post_rc_build/post_rc_tasks.yml
@@ -6,7 +6,15 @@ update_rc_build_links:
   rules:
     - if: $RC_BUILD == "true"
   needs:
-    - job: docker_trigger_internal
+    - job: publish_internal_container_image-jmx
+      artifacts: false
+    - job: publish_internal_container_image-fips
+      artifacts: false
+    - job: publish_internal_container_image-ot_standalone
+      artifacts: false
+    - job: publish_internal_dca_container_image
+      artifacts: false
+    - job: publish_internal_container_image-full
       artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]


Reviews:
user: login: FlorentClarret
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-14T12:34:55Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR improves the code hygiene for internal image deploy jobs by factorizing duplicated job definitions and renaming jobs to clarify their purpose. Key changes include:
- Renaming jobs from "docker_trigger_internal*" to descriptive "publish-internal-container-image-*" names.
- Refactoring job configurations to use common variable anchors for shared settings.
- Updating related job dependencies and JOBOWNERS to match the new naming convention.

### Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

<details>
<summary>Show a summary per file</summary>

| File                                                        | Description                                                                            |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| .gitlab/post_rc_build/post_rc_tasks.yml                     | Updated job dependencies to reference new publish-internal-container-image jobs.       |
| .gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml   | Replaced old job names with new publish-internal-container-image names.                |
| .gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml  | Updated job names per new convention for internal kubernetes deploy pipelines.     |
| .gitlab/internal_image_deploy/internal_image_deploy.yml     | Refactored job template and variable usage; introduced shared anchors for consistency.   |
| .gitlab/JOBOWNERS                                           | Adjusted job patterns to match the new publish-internal-container-image naming.        |
</details>



<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**.gitlab/post_rc_build/post_rc_tasks.yml:9**
* Ensure that the job name 'publish-internal-container-image-jmx' exactly matches the definition in the internal image deploy configuration to prevent misconfiguration.
```
    - job: publish-internal-container-image-jmx
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T12:42:36Z
user: login: chouetz
body: "Minor" suggestion regarding the naming convention, thanks!
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-14T13:36:08Z
user: login: AliDatadog
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T13:54:43Z
user: login: AliDatadog
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T13:59:10Z

Review comments:
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: Copilot
body: Consider adding TMPL_ADP_VERSION to the existing agent_variables anchor to reduce duplication and improve long-term maintainability.
```suggestion

```
created_at: 2025-05-14T12:42:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-full:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_amd64
+    - job: docker_build_agent7_full
       artifacts: false
-    - job: docker_build_cluster_agent_arm64
+    - job: docker_build_agent7_full_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-full"
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: Copilot
body: Adding an inline comment to explain the purpose of RELEASE_TAG_SUFFIX and TMPL_SRC_IMAGE_SUFFIX would aid future maintainers in understanding the job configuration logic.
created_at: 2025-05-14T12:42:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -103,8 +103,8 @@ qa_dca*                                @DataDog/agent-devx
 qa_dogstatsd*                          @DataDog/agent-devx
 
 # Internal image deploy
-docker_trigger_internal*                     @Datadog/agent-delivery
-docker_trigger_cluster_agent_internal*       @Datadog/agent-delivery
+publish-internal-container-image*            @Datadog/agent-delivery
+publish-internal-dca-container-image*        @Datadog/agent-delivery
path: .gitlab/JOBOWNERS
user: login: chouetz
body: ```suggestion
publish_internal_image*            @Datadog/agent-delivery
publish_internal_dca_image*        @Datadog/agent-delivery
```
I think we should keep the underscore (even if I'm not a big fan of the current convention)
created_at: 2025-05-14T13:18:31Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: It there a specific reason to stop using `variables` here?
created_at: 2025-05-14T13:20:11Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_image-jmx:
```
To be consistent with above
created_at: 2025-05-14T13:21:13Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_image-fips:
```
Here the last separator is well `-` as it specifies a `type`/`arch`/`os`
created_at: 2025-05-14T13:22:48Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-full:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_image-full:
```
Same as previously
created_at: 2025-05-14T13:23:26Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-full:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_amd64
+    - job: docker_build_agent7_full
       artifacts: false
-    - job: docker_build_cluster_agent_arm64
+    - job: docker_build_agent7_full_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-full"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-full"
 
-docker_trigger_cluster_agent_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-ot_standalone:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_image-ot_standalone:
```
created_at: 2025-05-14T13:23:56Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-full:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_amd64
+    - job: docker_build_agent7_full
       artifacts: false
-    - job: docker_build_cluster_agent_arm64
+    - job: docker_build_agent7_full_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-full"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-full"
 
-docker_trigger_cluster_agent_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-ot_standalone:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_fips_amd64
+    - job: docker_build_ot_agent_standalone_amd64
       artifacts: false
-    - job: docker_build_cluster_agent_fips_arm64
+    - job: docker_build_ot_agent_standalone_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-fips
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *ot_standalone_variables
+    TMPL_SRC_IMAGE_SUFFIX: "-7"
 
-docker_trigger_internal-full:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# DCA publish jobs
+publish-internal-dca-container-image:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_dca_image:
```
created_at: 2025-05-14T13:24:43Z
author_association: MEMBER
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
+    # Fetch Gitlab token
     - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
+    # Set TMPL_SRC_REPO based on branch and release tag based on branch
     - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
     - |
       if [ "$BUCKET_BRANCH" = "nightly" ]; then
         RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
         TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
       fi
     - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
+    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --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"
   retry: 2
 
-docker_trigger_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# -- binary specific variables --
+.agent_variables: &agent_variables
+  IMAGE_VERSION: tmpl-v14
+  IMAGE_NAME: datadog-agent
+  TMPL_SRC_REPO: ci/datadog-agent/agent
+
+.cluster_agent_variables: &cluster_agent_variables
+  IMAGE_VERSION: tmpl-v6
+  IMAGE_NAME: datadog-cluster-agent
+  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
+  RELEASE_PROD: "true"
+
+.ot_standalone_variables: &ot_standalone_variables
+  IMAGE_VERSION: tmpl-v1
+  IMAGE_NAME: otel-agent
+  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
+
+# -- publish jobs --
+publish-internal-container-image-jmx:
+  extends: .docker_trigger_base
+  needs:
+    - job: docker_build_agent7_jmx
+      artifacts: false
+    - job: docker_build_agent7_jmx_arm64
+      artifacts: false
+  variables:
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-jmx"
+
+publish-internal-container-image-fips:
+  extends: .docker_trigger_base
   needs:
     - job: docker_build_fips_agent7_jmx
       artifacts: false
     - job: docker_build_fips_agent7_arm64_jmx
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-fips-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    RELEASE_TAG_SUFFIX: "-fips-jmx"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-fips-jmx"
 
-docker_trigger_cluster_agent_internal:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-full:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_amd64
+    - job: docker_build_agent7_full
       artifacts: false
-    - job: docker_build_cluster_agent_arm64
+    - job: docker_build_agent7_full_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *agent_variables
+    TMPL_ADP_VERSION: 0.1.7
+    RELEASE_TAG_SUFFIX: "-full"
+    TMPL_SRC_IMAGE_SUFFIX: "-7-full"
 
-docker_trigger_cluster_agent_internal-fips:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-container-image-ot_standalone:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_cluster_agent_fips_amd64
+    - job: docker_build_ot_agent_standalone_amd64
       artifacts: false
-    - job: docker_build_cluster_agent_fips_arm64
+    - job: docker_build_ot_agent_standalone_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v6
-    IMAGE_NAME: datadog-cluster-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-fips
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-fips
-    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
-    RELEASE_STAGING: "true"
-    RELEASE_PROD: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_TAG --variable TMPL_SRC_IMAGE --variable TMPL_SRC_REPO --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"
-  retry: 2
+    <<: *ot_standalone_variables
+    TMPL_SRC_IMAGE_SUFFIX: "-7"
 
-docker_trigger_internal-full:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+# DCA publish jobs
+publish-internal-dca-container-image:
+  extends: .docker_trigger_base
   needs:
-    - job: docker_build_agent7_full
+    - job: docker_build_cluster_agent_amd64
       artifacts: false
-    - job: docker_build_agent7_full_arm64
+    - job: docker_build_cluster_agent_arm64
       artifacts: false
-  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
-  tags: ["arch:amd64"]
   variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-full
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-full
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-full
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
-  script:
-    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api) || exit $?; export GITLAB_TOKEN
-    - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release"; fi
-    - |
-      if [ "$BUCKET_BRANCH" = "nightly" ]; then
-        RELEASE_TAG="${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"
-        TMPL_SRC_REPO="${TMPL_SRC_REPO}-nightly"
-      fi
-    - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}"; fi
-    - "dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref master --timeout 3600 --variable IMAGE_VERSION --variable IMAGE_NAME --variable RELEASE_TAG --variable BUILD_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"
-  retry: 2
+    <<: *cluster_agent_variables
 
-docker_trigger_internal-ot_standalone:
-  stage: internal_image_deploy
-  rules: !reference [.on_deploy_internal_or_manual]
+publish-internal-dca-container-image-fips:
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: chouetz
body: ```suggestion
publish_internal_dca_image-fips:
```
created_at: 2025-05-14T13:24:53Z
author_association: MEMBER
diff_hunk: @@ -103,8 +103,8 @@ qa_dca*                                @DataDog/agent-devx
 qa_dogstatsd*                          @DataDog/agent-devx
 
 # Internal image deploy
-docker_trigger_internal*                     @Datadog/agent-delivery
-docker_trigger_cluster_agent_internal*       @Datadog/agent-delivery
+publish-internal-container-image*            @Datadog/agent-delivery
path: .gitlab/JOBOWNERS
user: login: chouetz
body: Nit: is `container_image` a good name? I suppose we only publish an image.
created_at: 2025-05-14T13:26:47Z
author_association: MEMBER
diff_hunk: @@ -7,11 +7,15 @@ internal_kubernetes_deploy_experimental:
   rules:
     - !reference [.on_scheduled_main]
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
path: .gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-jmx
```
created_at: 2025-05-14T13:30:09Z
author_association: MEMBER
diff_hunk: @@ -7,11 +7,15 @@ internal_kubernetes_deploy_experimental:
   rules:
     - !reference [.on_scheduled_main]
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
       artifacts: false
-    - job: docker_trigger_internal-full
+    - job: publish-internal-container-image-full
path: .gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-full
```
created_at: 2025-05-14T13:30:26Z
author_association: MEMBER
diff_hunk: @@ -7,11 +7,15 @@ internal_kubernetes_deploy_experimental:
   rules:
     - !reference [.on_scheduled_main]
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
       artifacts: false
-    - job: docker_trigger_internal-full
+    - job: publish-internal-container-image-full
       artifacts: false
-    - job: docker_trigger_cluster_agent_internal
+    - job: publish-internal-container-image-ot_standalone
+      artifacts: false
+    - job: publish-internal-container-image-fips
+      artifacts: false
+    - job: publish-internal-dca-container-image
path: .gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-ot_standalone
      artifacts: false
    - job: publish_internal_image-fips
      artifacts: false
    - job: publish_internal_dca_image
```
created_at: 2025-05-14T13:31:43Z
author_association: MEMBER
diff_hunk: @@ -10,11 +10,15 @@ rc_kubernetes_deploy:
     - if: $RC_BUILD == "true"
       when: manual
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
path: .gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-jmx
```
created_at: 2025-05-14T13:32:05Z
author_association: MEMBER
diff_hunk: @@ -10,11 +10,15 @@ rc_kubernetes_deploy:
     - if: $RC_BUILD == "true"
       when: manual
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
       artifacts: false
-    - job: docker_trigger_cluster_agent_internal
+    - job: publish-internal-container-image-fips
path: .gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-fips
```
created_at: 2025-05-14T13:32:14Z
author_association: MEMBER
diff_hunk: @@ -10,11 +10,15 @@ rc_kubernetes_deploy:
     - if: $RC_BUILD == "true"
       when: manual
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
       artifacts: false
-    - job: docker_trigger_cluster_agent_internal
+    - job: publish-internal-container-image-fips
       artifacts: false
-    - job: docker_trigger_internal-full
+    - job: publish-internal-container-image-ot_standalone
+      artifacts: false
+    - job: publish-internal-dca-container-image
+      artifacts: false
+    - job: publish-internal-container-image-full
path: .gitlab/internal_kubernetes_deploy/rc_kubernetes_deploy.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-ot_standalone
      artifacts: false
    - job: publish_internal_dca_image
      artifacts: false
    - job: publish_internal_image-full
```
created_at: 2025-05-14T13:32:42Z
author_association: MEMBER
diff_hunk: @@ -6,7 +6,15 @@ update_rc_build_links:
   rules:
     - if: $RC_BUILD == "true"
   needs:
-    - job: docker_trigger_internal
+    - job: publish-internal-container-image-jmx
+      artifacts: false
+    - job: publish-internal-container-image-fips
+      artifacts: false
+    - job: publish-internal-container-image-ot_standalone
+      artifacts: false
+    - job: publish-internal-dca-container-image
+      artifacts: false
+    - job: publish-internal-container-image-full
path: .gitlab/post_rc_build/post_rc_tasks.yml
user: login: chouetz
body: ```suggestion
    - job: publish_internal_image-jmx
      artifacts: false
    - job: publish_internal_image-fips
      artifacts: false
    - job: publish_internal_image-ot_standalone
      artifacts: false
    - job: publish_internal_dca_image
      artifacts: false
    - job: publish_internal_image-full
```
created_at: 2025-05-14T13:33:25Z
author_association: MEMBER
diff_hunk: @@ -103,8 +103,8 @@ qa_dca*                                @DataDog/agent-devx
 qa_dogstatsd*                          @DataDog/agent-devx
 
 # Internal image deploy
-docker_trigger_internal*                     @Datadog/agent-delivery
-docker_trigger_cluster_agent_internal*       @Datadog/agent-delivery
+publish-internal-container-image*            @Datadog/agent-delivery
path: .gitlab/JOBOWNERS
user: login: AliDatadog
body: I feel like `image` is a bit vague. Imagine onboarding to the code base, it makes more sense for someone who doesn't have the context around what we publish
created_at: 2025-05-14T13:54:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,192 +2,120 @@
 # internal_image_deploy stage
 # Contains jobs to trigger a pipeline in the images repo to create internal Agent images.
 
-docker_trigger_internal:
+# Base template with common configuration
+.docker_trigger_base:
   stage: internal_image_deploy
   rules: !reference [.on_deploy_internal_or_manual]
-  needs:
-    - job: docker_build_agent7_jmx
-      artifacts: false
-    - job: docker_build_agent7_jmx_arm64
-      artifacts: false
   image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
   tags: ["arch:amd64"]
-  variables:
-    DYNAMIC_BUILD_RENDER_RULES: agent-build-only # fake rule to not trigger the ones in the images repo
-    IMAGE_VERSION: tmpl-v14
-    IMAGE_NAME: datadog-agent
-    RELEASE_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    BUILD_TAG: ${CI_COMMIT_REF_SLUG}-jmx
-    TMPL_SRC_IMAGE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}-7-jmx
-    TMPL_SRC_REPO: ci/datadog-agent/agent
-    TMPL_ADP_VERSION: 0.1.7
-    RELEASE_STAGING: "true"
   script:
+    # Constant variables
+    - export RELEASE_STAGING="true"
+    - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
+    # Job specific variables
+    - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
+    - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
+    # BUILD_TAG is always RELEASE_TAG
+    - export BUILD_TAG="${RELEASE_TAG}"
path: .gitlab/internal_image_deploy/internal_image_deploy.yml
user: login: AliDatadog
body: So it depends what you mean by "here"?

- Constant variables are not in `variables` because it's a template and I did not want to risk overriding them by mistake.
-  RELEASE_TAG and TMPL_SRC_IMAGE are crafted using a constant part and a mutable part, making it easier to see the difference between two jobs.
- BUILD_TAG is always equivalent to RELEASE_TAG, we can stop setting it everywhere
created_at: 2025-05-14T13:59:10Z
author_association: CONTRIBUTOR

PR comments:
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-14T11:52:05Z
body: ## Gitlab CI Configuration Changes

### Modified Jobs
<details>
<summary><b>internal_kubernetes_deploy_experimental</b></summary>

```diff
  internal_kubernetes_deploy_experimental:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
    needs:
    - artifacts: false
-     job: docker_trigger_internal
+     job: publish_internal_container_image-jmx
    - artifacts: false
-     job: docker_trigger_internal-full
+     job: publish_internal_container_image-full
    - artifacts: false
-     job: docker_trigger_cluster_agent_internal
+     job: publish_internal_container_image-ot_standalone
+   - artifacts: false
+     job: publish_internal_container_image-fips
+   - artifacts: false
+     job: publish_internal_dca_container_image
    - artifacts: false
      job: docker_build_agent7_windows1809
    - artifacts: false
      job: docker_build_agent7_windows2022
    - artifacts: false
      job: docker_build_agent7_windows1809_jmx
    - artifacts: false
      job: docker_build_agent7_windows2022_jmx
    - artifacts: false
      job: docker_build_agent7_windows1809_core
    - artifacts: false
      job: docker_build_agent7_windows2022_core
    - artifacts: false
      job: docker_build_agent7_windows1809_core_jmx
    - artifacts: false
      job: docker_build_agent7_windows2022_core_jmx
    - artifacts: false
      job: k8s-e2e-main
      optional: true
    rules:
    - if: $DDR_WORKFLOW_ID != null && $CI_COMMIT_BRANCH == "main"
      when: always
    script:
    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
      || exit $?; export GITLAB_TOKEN
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/k8s-datadog-agent-ops
      --git-ref main --variable OPTION_AUTOMATIC_ROLLOUT --variable EXPLICIT_WORKFLOWS
      --variable OPTION_PRE_SCRIPT --variable SKIP_PLAN_CHECK --variable APPS --variable
      BAZEL_TARGET --variable DDR --variable DDR_WORKFLOW_ID --variable TARGET_ENV --variable
      DYNAMIC_BUILD_RENDER_TARGET_FORWARD_PARAMETERS --variable BUNDLE_VERSION_OVERRIDE
    stage: internal_kubernetes_deploy
    tags:
    - arch:amd64
    variables:
      BUNDLE_VERSION_OVERRIDE: v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}
      EXPLICIT_WORKFLOWS: //workflows:beta_builds.agents_nightly.staging-deploy.publish,//workflows:beta_builds.agents_nightly.staging-validate.publish,//workflows:beta_builds.agents_nightly.prod-wait-business-hours.publish,//workflows:beta_builds.agents_nightly.prod-deploy.publish,//workflows:beta_builds.agents_nightly.publish-image-confirmation.publish
      OPTION_AUTOMATIC_ROLLOUT: 'true'
      OPTION_PRE_SCRIPT: patch-cluster-images-operator.sh env=ci ${CI_COMMIT_REF_SLUG}-full-${CI_COMMIT_SHORT_SHA}
        ${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}
      SKIP_PLAN_CHECK: 'true'
```

</details>
<details>
<summary><b>rc_kubernetes_deploy</b></summary>

```diff
  rc_kubernetes_deploy:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
    needs:
    - artifacts: false
-     job: docker_trigger_internal
+     job: publish_internal_container_image-jmx
    - artifacts: false
-     job: docker_trigger_cluster_agent_internal
+     job: publish_internal_container_image-fips
    - artifacts: false
-     job: docker_trigger_internal-full
+     job: publish_internal_container_image-ot_standalone
+   - artifacts: false
+     job: publish_internal_dca_container_image
+   - artifacts: false
+     job: publish_internal_container_image-full
    - artifacts: false
      job: k8s-e2e-main
      optional: true
    rules:
    - if: $RC_K8S_DEPLOYMENTS == "true"
      when: on_success
    - if: $RC_BUILD == "true"
      when: manual
    script:
    - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
      || exit $?; export GITLAB_TOKEN
    - dda inv pipeline.trigger-child-pipeline --project-name DataDog/k8s-datadog-agent-ops
      --git-ref main --variable OPTION_AUTOMATIC_ROLLOUT --variable EXPLICIT_WORKFLOWS
      --variable OPTION_PRE_SCRIPT --variable SKIP_PLAN_CHECK --variable AGENT_IMAGE_TAG
    stage: internal_kubernetes_deploy
    tags:
    - arch:amd64
    variables:
      AGENT_IMAGE_TAG: $CI_COMMIT_REF_NAME
      EXPLICIT_WORKFLOWS: //workflows:deploy_rc.agents_rc
      OPTION_AUTOMATIC_ROLLOUT: 'true'
      SKIP_PLAN_CHECK: 'true'
```

</details>
<details>
<summary><b>update_rc_build_links</b></summary>

```diff
  update_rc_build_links:
    image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
    needs:
    - artifacts: false
-     job: docker_trigger_internal
+     job: publish_internal_container_image-jmx
+   - artifacts: false
+     job: publish_internal_container_image-fips
+   - artifacts: false
+     job: publish_internal_container_image-ot_standalone
+   - artifacts: false
+     job: publish_internal_dca_container_image
+   - artifacts: false
+     job: publish_internal_container_image-full
    rules:
    - if: $RC_BUILD == "true"
    script:
    - ATLASSIAN_PASSWORD=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $ATLASSIAN_WRITE
      token) || exit $?; export ATLASSIAN_PASSWORD
    - ATLASSIAN_USERNAME=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $ATLASSIAN_WRITE
      user) || exit $?; export ATLASSIAN_USERNAME
    - python3 -m pip install "git+https://github.com/DataDog/datadog-agent-dev.git@v$(cat
      .dda/version)" --break-system-packages
    - python3 -m dda self dep sync -f legacy-tasks
    - PATCH=$(echo "$CI_COMMIT_REF_NAME" | cut -d'.' -f3 | cut -c1)
    - if [[ "$PATCH" == "0" ]]; then PATCH_OPTION=""; else PATCH_OPTION="-p"; fi
    - dda inv -- -e release.update-build-links ${CI_COMMIT_REF_NAME} ${PATCH_OPTION}
    stage: post_rc_build
    tags:
    - arch:amd64
```

</details>

<details>
<summary><h3>Added Jobs</h3></summary>
<details>
<summary><b>.agent_variables</b></summary>

```yaml
.agent_variables:
  IMAGE_NAME: datadog-agent
  IMAGE_VERSION: tmpl-v14
  TMPL_SRC_REPO: ci/datadog-agent/agent
```

</details>
<details>
<summary><b>.cluster_agent_variables</b></summary>

```yaml
.cluster_agent_variables:
  IMAGE_NAME: datadog-cluster-agent
  IMAGE_VERSION: tmpl-v6
  RELEASE_PROD: 'true'
  TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
```

</details>
<details>
<summary><b>.docker_trigger_base</b></summary>

```yaml
.docker_trigger_base:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
```

</details>
<details>
<summary><b>.ot_standalone_variables</b></summary>

```yaml
.ot_standalone_variables:
  IMAGE_NAME: otel-agent
  IMAGE_VERSION: tmpl-v1
  TMPL_SRC_REPO: ci/datadog-agent/otel-agent
```

</details>
<details>
<summary><b>publish_internal_container_image-fips</b></summary>

```yaml
publish_internal_container_image-fips:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_fips_agent7_jmx
  - artifacts: false
    job: docker_build_fips_agent7_arm64_jmx
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: datadog-agent
    IMAGE_VERSION: tmpl-v14
    RELEASE_TAG_SUFFIX: -fips-jmx
    TMPL_SRC_IMAGE_SUFFIX: -7-fips-jmx
    TMPL_SRC_REPO: ci/datadog-agent/agent
```

</details>
<details>
<summary><b>publish_internal_container_image-full</b></summary>

```yaml
publish_internal_container_image-full:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_agent7_full
  - artifacts: false
    job: docker_build_agent7_full_arm64
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: datadog-agent
    IMAGE_VERSION: tmpl-v14
    RELEASE_TAG_SUFFIX: -full
    TMPL_ADP_VERSION: 0.1.7
    TMPL_SRC_IMAGE_SUFFIX: -7-full
    TMPL_SRC_REPO: ci/datadog-agent/agent
```

</details>
<details>
<summary><b>publish_internal_container_image-jmx</b></summary>

```yaml
publish_internal_container_image-jmx:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_agent7_jmx
  - artifacts: false
    job: docker_build_agent7_jmx_arm64
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: datadog-agent
    IMAGE_VERSION: tmpl-v14
    RELEASE_TAG_SUFFIX: -jmx
    TMPL_ADP_VERSION: 0.1.7
    TMPL_SRC_IMAGE_SUFFIX: -7-jmx
    TMPL_SRC_REPO: ci/datadog-agent/agent
```

</details>
<details>
<summary><b>publish_internal_container_image-ot_standalone</b></summary>

```yaml
publish_internal_container_image-ot_standalone:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_ot_agent_standalone_amd64
  - artifacts: false
    job: docker_build_ot_agent_standalone_arm64
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: otel-agent
    IMAGE_VERSION: tmpl-v1
    TMPL_SRC_IMAGE_SUFFIX: '-7'
    TMPL_SRC_REPO: ci/datadog-agent/otel-agent
```

</details>
<details>
<summary><b>publish_internal_dca_container_image</b></summary>

```yaml
publish_internal_dca_container_image:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_cluster_agent_amd64
  - artifacts: false
    job: docker_build_cluster_agent_arm64
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: datadog-cluster-agent
    IMAGE_VERSION: tmpl-v6
    RELEASE_PROD: 'true'
    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
```

</details>
<details>
<summary><b>publish_internal_dca_container_image-fips</b></summary>

```yaml
publish_internal_dca_container_image-fips:
  image: registry.ddbuild.io/ci/datadog-agent-buildimages/linux-glibc-2-17-x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES
  needs:
  - artifacts: false
    job: docker_build_cluster_agent_fips_amd64
  - artifacts: false
    job: docker_build_cluster_agent_fips_arm64
  retry: 2
  rules:
  - if: $CI_COMMIT_BRANCH =~ /^mq-working-branch-/
    when: never
  - if: $DEPLOY_AGENT == "true" || $DDR_WORKFLOW_ID != null
    variables:
      RELEASE_PROD: 'true'
  - allow_failure: true
    variables:
      RELEASE_PROD: 'false'
    when: manual
  script:
  - export RELEASE_STAGING="true"
  - export DYNAMIC_BUILD_RENDER_RULES="agent-build-only"
  - export RELEASE_TAG="${CI_COMMIT_REF_SLUG}${RELEASE_TAG_SUFFIX}"
  - export TMPL_SRC_IMAGE="v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}${TMPL_SRC_IMAGE_SUFFIX}"
  - export BUILD_TAG="${RELEASE_TAG}"
  - GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/fetch_secret.sh $GITLAB_TOKEN write_api)
    || exit $?; export GITLAB_TOKEN
  - if [ "$BUCKET_BRANCH" = "beta" ] || [ "$BUCKET_BRANCH" = "stable" ]; then TMPL_SRC_REPO="${TMPL_SRC_REPO}-release";
    fi
  - "if [ \"$BUCKET_BRANCH\" = \"nightly\" ]; then\n  RELEASE_TAG=\"${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}\"\
    \n  TMPL_SRC_REPO=\"${TMPL_SRC_REPO}-nightly\"\nfi\n"
  - if [ "$BUCKET_BRANCH" = "dev" ]; then RELEASE_TAG="dev-${RELEASE_TAG}-${CI_COMMIT_SHORT_SHA}";
    fi
  - dda inv pipeline.trigger-child-pipeline --project-name DataDog/images --git-ref
    master --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
  stage: internal_image_deploy
  tags:
  - arch:amd64
  variables:
    IMAGE_NAME: datadog-cluster-agent
    IMAGE_VERSION: tmpl-v6
    RELEASE_PROD: 'true'
    RELEASE_TAG_SUFFIX: -fips
    TMPL_SRC_IMAGE_SUFFIX: -fips
    TMPL_SRC_REPO: ci/datadog-agent/cluster-agent
```

</details>
</details>

### Removed Jobs
- **docker_trigger_cluster_agent_internal-fips**
- **docker_trigger_cluster_agent_internal**
- **docker_trigger_internal**
- **docker_trigger_internal-ot_standalone**
- **docker_trigger_internal-full**
- **docker_trigger_internal-fips**

### Changes Summary
| Removed | Modified | Added | Renamed |
| ------- | -------- | ----- | ------- |
| 6 | 3 | 10 | 0 |

:information_source: *Diff available in the [job log](https://gitlab.ddbuild.io/DataDog/datadog-agent/-/jobs/937955920).*
author_association: CONTRIBUTOR
user: login: AliDatadog
created_at: 2025-05-14T12:40:07Z
body: /merge
author_association: CONTRIBUTOR
user: login: dd-devflow[bot]
created_at: 2025-05-14T12:40:13Z
body: <!-- "FeedbackWorkflowId":"345e421e-86a9-4d39-960f-928ac23a966a_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/345e421e-86a9-4d39-960f-928ac23a966a_36)

`2025-05-14 12:40:12 UTC` :information_source: Start processing command `/merge`

---
`2025-05-14 12:40:20 UTC` :information_source: **MergeQueue:** waiting for PR to be ready

This merge request is not mergeable yet, because of pending checks/missing approvals. It will be added to the queue as soon as checks pass and/or get approvals.
**Note:** if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with `/remove` command.

---
`2025-05-14 13:52:16 UTC` :warning: **MergeQueue:** This merge request was unqueued

ali.benabdallah@datadoghq.com unqueued this merge request

author_association: NONE
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-14T13:04:15Z
body: ## Uncompressed package size comparison

Comparison with [ancestor](https://github.com/DataDog/datadog-agent/commit/d9776391b8bad29a720bc9970f910159d98511a8) `d9776391b8bad29a720bc9970f910159d98511a8`
<details open>
<summary> Size reduction summary </summary>

|package|diff|status|size|ancestor|threshold|
|--|--|--|--|--|--|
|datadog-agent-x86_64-rpm|-0.00MB|✅|783.46MB|783.46MB|0.50MB|
|datadog-agent-x86_64-suse|-0.00MB|✅|783.46MB|783.46MB|0.50MB|

</details>


<details>
  <summary> Diff per package </summary>

|package|diff|status|size|ancestor|threshold|
|--|--|--|--|--|--|
|datadog-agent-arm64-deb|0.00MB|✅|763.92MB|763.92MB|0.50MB|
|datadog-agent-aarch64-rpm|0.00MB|✅|772.85MB|772.85MB|0.50MB|
|datadog-agent-amd64-deb|0.00MB|✅|774.52MB|774.52MB|0.50MB|
|datadog-dogstatsd-amd64-deb|0.00MB|✅|31.21MB|31.21MB|0.50MB|
|datadog-dogstatsd-x86_64-rpm|0.00MB|✅|31.30MB|31.30MB|0.50MB|
|datadog-dogstatsd-x86_64-suse|0.00MB|✅|31.30MB|31.30MB|0.50MB|
|datadog-dogstatsd-arm64-deb|0.00MB|✅|30.04MB|30.04MB|0.50MB|
|datadog-heroku-agent-amd64-deb|0.00MB|✅|377.96MB|377.96MB|0.50MB|
|datadog-iot-agent-amd64-deb|0.00MB|✅|60.63MB|60.63MB|0.50MB|
|datadog-iot-agent-x86_64-rpm|0.00MB|✅|60.71MB|60.71MB|0.50MB|
|datadog-iot-agent-x86_64-suse|0.00MB|✅|60.71MB|60.71MB|0.50MB|
|datadog-iot-agent-arm64-deb|0.00MB|✅|57.92MB|57.92MB|0.50MB|
|datadog-iot-agent-aarch64-rpm|0.00MB|✅|58.00MB|58.00MB|0.50MB|

</details>

## Decision
✅ Passed



author_association: CONTRIBUTOR
user: login: cit-pr-commenter[bot]
created_at: 2025-05-14T13:24:45Z
body: ## Regression Detector

# Regression Detector Results

[Metrics dashboard](https://app.datadoghq.com/dashboard/ykh-ua8-vcu/SMP-Regression-Detector-Metrics?fromUser=true&refresh_mode=paused&tpl_var_run-id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)  
[Target profiles](https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Adatadog-agent%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start=1747225409000&end=1747236809000&paused=true)  
Run ID: 837edcec-68b0-4bde-bdc4-8349378ff148

Baseline: d9776391b8bad29a720bc9970f910159d98511a8
Comparison: cb461d5f252df338440d2f80932a2ebec047ce03
[Diff](d9776391b8bad29a720bc9970f910159d98511a8...cb461d5f252df338440d2f80932a2ebec047ce03)


## Optimization Goals: ✅ No significant changes detected


<details>
<summary><h2>
Fine details of change detection per experiment
</h2></summary>

| perf | experiment                                   | goal               | Δ mean % | Δ mean % CI    | trials | links                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|------|----------------------------------------------|--------------------|----------|----------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ➖   | docker_containers_cpu                        | % cpu utilization  | +2.26    | [-1.59, +6.11] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_cpu%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                           |
| ➖   | uds_dogstatsd_to_api_cpu                     | % cpu utilization  | +1.32    | [+0.42, +2.21] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api_cpu%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | quality_gate_idle                            | memory utilization | +1.22    | [+1.14, +1.30] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)                           |
| ➖   | quality_gate_logs                            | % cpu utilization  | +1.05    | [-1.74, +3.85] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_logs%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)                           |
| ➖   | docker_containers_memory                     | memory utilization | +0.19    | [+0.12, +0.26] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_memory%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | ddot_logs                                    | memory utilization | +0.16    | [+0.04, +0.29] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_logs%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | ddot_metrics                                 | memory utilization | +0.08    | [-0.03, +0.20] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_metrics%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                                    |
| ➖   | file_to_blackhole_1000ms_latency_linear_load | egress throughput  | +0.07    | [-0.16, +0.31] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency_linear_load%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                    |
| ➖   | file_to_blackhole_100ms_latency              | egress throughput  | +0.05    | [-0.58, +0.67] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_100ms_latency%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_0ms_latency_http2          | egress throughput  | +0.01    | [-0.64, +0.67] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http2%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | uds_dogstatsd_to_api                         | ingress throughput | +0.01    | [-0.29, +0.31] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                            |
| ➖   | tcp_dd_logs_filter_exclude                   | ingress throughput | +0.01    | [-0.01, +0.02] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_dd_logs_filter_exclude%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                      |
| ➖   | file_to_blackhole_0ms_latency                | egress throughput  | +0.00    | [-0.67, +0.67] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                   |
| ➖   | file_to_blackhole_1000ms_latency             | egress throughput  | -0.03    | [-0.68, +0.62] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                |
| ➖   | file_to_blackhole_0ms_latency_http1          | egress throughput  | -0.04    | [-0.66, +0.59] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http1%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | file_to_blackhole_500ms_latency              | egress throughput  | -0.06    | [-0.72, +0.60] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_500ms_latency%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_300ms_latency              | egress throughput  | -0.06    | [-0.73, +0.60] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_300ms_latency%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | otlp_ingest_logs                             | memory utilization | -0.18    | [-0.30, -0.05] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_logs%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                                |
| ➖   | otlp_ingest_metrics                          | memory utilization | -0.41    | [-0.56, -0.27] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_metrics%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                             |
| ➖   | file_tree                                    | memory utilization | -0.49    | [-0.70, -0.28] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_tree%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | tcp_syslog_to_blackhole                      | ingress throughput | -0.68    | [-0.74, -0.61] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_syslog_to_blackhole%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                                         |
| ➖   | quality_gate_idle_all_features               | memory utilization | -1.32    | [-1.45, -1.19] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle_all_features%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false) |
| ➖   | uds_dogstatsd_20mb_12k_contexts_20_senders   | memory utilization | -1.33    | [-1.37, -1.29] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_20mb_12k_contexts_20_senders%20job_id%3A837edcec-68b0-4bde-bdc4-8349378ff148&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747225409000&to_ts=1747236809000&live=false)                                                                                                                                                                                                                                                                                      |
</details>


## Bounds Checks: ❌ Failed

| perf | experiment                                   | bounds_check_name  | replicates_passed | links                                                                                                                                                                                                                                                                                            |
|------|----------------------------------------------|--------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ❌   | docker_containers_memory                     | memory_usage       | 9/10              |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_cpu                        | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_memory                     | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency             | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency_linear_load | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | quality_gate_idle                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)              |
| ✅   | quality_gate_idle                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)              |
| ✅   | quality_gate_idle_all_features               | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false) |
| ✅   | quality_gate_idle_all_features               | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false) |
| ✅   | quality_gate_logs                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)              |
| ✅   | quality_gate_logs                            | lost_bytes         | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)              |
| ✅   | quality_gate_logs                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=837edcec-68b0-4bde-bdc4-8349378ff148&view=spans&from_ts=1747232609000&to_ts=1747233209000&live=false)              |


<details>
<summary><h2>
Explanation
</h2></summary>

**Confidence level:** 90.00%
**Effect size tolerance:** |Δ mean %| ≥ 5.00%

Performance changes are noted in the **perf** column of each table:

* ✅ = significantly better comparison variant performance
* ❌ = significantly worse comparison variant performance
* ➖ = no significant change in performance

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that *if our statistical model is accurate*, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

3. Its configuration does not mark it "erratic".
</details>

## CI Pass/Fail Decision

✅ **Passed.** All Quality Gates passed.

- **quality_gate_logs**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **lost_bytes**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle_all_features**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle_all_features**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
author_association: NONE
user: login: AliDatadog
created_at: 2025-05-14T13:52:08Z
body: /remove
author_association: CONTRIBUTOR
user: login: dd-devflow[bot]
created_at: 2025-05-14T13:52:12Z
body: <!-- "FeedbackWorkflowId":"354bfe15-177f-4c6a-901a-2304c8ff01aa_21" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/354bfe15-177f-4c6a-901a-2304c8ff01aa_21)

`2025-05-14 13:52:11 UTC` :information_source: Start processing command `/remove`

---
`2025-05-14 13:52:16 UTC` :information_source: **Devflow:** *`/remove`*

author_association: NONE
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-14T15:34:17Z
body: ## Static quality checks

✅ Please find below the results from static quality gates


<details>
<summary>Successful checks</summary>

### Info

|Result|Quality gate|On disk size|On disk size limit|On wire size|On wire size limit|
|----|----|----|----|----|----|
|✅|static_quality_gate_agent_deb_amd64|747.18 MiB|778.06 MiB|185.49 MiB|191.06 MiB|
|✅|static_quality_gate_agent_deb_amd64_fips|745.02 MiB|776.09 MiB|184.7 MiB|190.72 MiB|
|✅|static_quality_gate_agent_heroku_amd64|366.43 MiB|434.99 MiB|98.05 MiB|114.34 MiB|
|✅|static_quality_gate_agent_msi|967.06 MiB|978.45 MiB|146.84 MiB|151.65 MiB|
|✅|static_quality_gate_agent_rpm_amd64|747.17 MiB|778.06 MiB|187.14 MiB|193.42 MiB|
|✅|static_quality_gate_agent_rpm_amd64_fips|745.01 MiB|776.06 MiB|186.68 MiB|192.61 MiB|
|✅|static_quality_gate_agent_rpm_arm64|737.05 MiB|768.33 MiB|169.74 MiB|174.71 MiB|
|✅|static_quality_gate_agent_rpm_arm64_fips|735.1 MiB|766.55 MiB|168.63 MiB|173.92 MiB|
|✅|static_quality_gate_agent_suse_amd64|747.17 MiB|778.08 MiB|187.14 MiB|193.42 MiB|
|✅|static_quality_gate_agent_suse_amd64_fips|745.01 MiB|776.11 MiB|186.68 MiB|192.78 MiB|
|✅|static_quality_gate_agent_suse_arm64|737.05 MiB|768.31 MiB|169.74 MiB|174.71 MiB|
|✅|static_quality_gate_agent_suse_arm64_fips|735.1 MiB|766.5 MiB|168.63 MiB|173.92 MiB|
|✅|static_quality_gate_docker_agent_amd64|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_arm64|856.61 MiB|876.0 MiB|272.45 MiB|278.3 MiB|
|✅|static_quality_gate_docker_agent_jmx_amd64|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_jmx_arm64|856.61 MiB|876.63 MiB|272.45 MiB|278.4 MiB|
|✅|static_quality_gate_docker_agent_windows1809|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core_jmx|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_jmx|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core_jmx|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_jmx|843.58 MiB|862.5 MiB|286.0 MiB|292.0 MiB|
|✅|static_quality_gate_docker_cluster_agent_amd64|256.75 MiB|263.4 MiB|101.88 MiB|104.07 MiB|
|✅|static_quality_gate_docker_cluster_agent_arm64|272.79 MiB|279.38 MiB|96.86 MiB|98.95 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_amd64|6.66 MiB|7.12 MiB|2.82 MiB|3.29 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_arm64|6.44 MiB|6.92 MiB|2.6 MiB|3.07 MiB|
|✅|static_quality_gate_docker_dogstatsd_amd64|37.89 MiB|46.39 MiB|14.61 MiB|17.78 MiB|
|✅|static_quality_gate_docker_dogstatsd_arm64|36.84 MiB|45.05 MiB|13.73 MiB|16.65 MiB|
|✅|static_quality_gate_dogstatsd_deb_amd64|29.85 MiB|38.4 MiB|7.9 MiB|10.26 MiB|
|✅|static_quality_gate_dogstatsd_deb_arm64|28.73 MiB|36.98 MiB|6.88 MiB|8.96 MiB|
|✅|static_quality_gate_dogstatsd_rpm_amd64|29.85 MiB|38.4 MiB|7.91 MiB|10.27 MiB|
|✅|static_quality_gate_dogstatsd_suse_amd64|29.85 MiB|38.4 MiB|7.91 MiB|10.27 MiB|
|✅|static_quality_gate_iot_agent_deb_amd64|57.89 MiB|58.51 MiB|14.58 MiB|15.02 MiB|
|✅|static_quality_gate_iot_agent_deb_arm64|55.31 MiB|55.94 MiB|12.59 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_deb_armhf|54.07 MiB|54.32 MiB|12.59 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_rpm_amd64|57.89 MiB|58.51 MiB|14.59 MiB|15.04 MiB|
|✅|static_quality_gate_iot_agent_rpm_arm64|55.31 MiB|55.94 MiB|12.61 MiB|13.07 MiB|
|✅|static_quality_gate_iot_agent_suse_amd64|57.89 MiB|58.51 MiB|14.59 MiB|15.04 MiB|

</details>

author_association: CONTRIBUTOR
user: login: AliDatadog
created_at: 2025-05-14T16:13:31Z
body: /merge
author_association: CONTRIBUTOR
user: login: dd-devflow[bot]
created_at: 2025-05-14T16:13:35Z
body: <!-- "FeedbackWorkflowId":"02124c8c-47f5-4201-94d2-436d2b0bbedc_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/02124c8c-47f5-4201-94d2-436d2b0bbedc_36)

`2025-05-14 16:13:35 UTC` :information_source: Start processing command `/merge`

---
`2025-05-14 16:13:42 UTC` :information_source: **MergeQueue:** pull request added to the queue

The expected merge time in `main` is approximately 1h (p90).

---
`2025-05-14 17:03:25 UTC` :information_source: **MergeQueue:** This merge request was merged

author_association: NONE