Skip to content

chore(ci): manage hand-maintained Datadog Agent pins with renovate - #1906

Merged
tobz merged 2 commits into
mainfrom
jszwedko/renovate-agent-version-pins
Jun 23, 2026
Merged

chore(ci): manage hand-maintained Datadog Agent pins with renovate#1906
tobz merged 2 commits into
mainfrom
jszwedko/renovate-agent-version-pins

Conversation

@jszwedko

Copy link
Copy Markdown
Collaborator

Summary

When the Datadog Agent version is bumped, Renovate only updates docker/Dockerfile.datadog-agent — the one place its built-in dockerfile manager recognizes. Several other pins for the same Agent live in files no default manager parses (a Makefile variable, the OTLP-traces correctness baseline images, and the Windows LTSC base image), so they were silently left at the old version on both the 7.80.1 and 7.80.2 bumps and had to be caught and fixed by hand each time. This adds a regex custom manager so those pins are discovered and bumped automatically, in lockstep with — and in the same PR as — the main Agent image, eliminating the recurring manual cleanup and the risk of the repo running a mix of Agent versions.

The manager keys every pin off the same registry.datadoghq.com/agent dependency and captures only the numeric version, leaving each image-tag suffix (-full, -ltsc2022, -jmx) in place on rewrite. Because the suffixed tags publish together with the bare release, all pins track one Agent version rather than drifting onto independent per-suffix streams.

Note: the OTLP-traces baselines intentionally keep the upstream registry.datadoghq.com/agent:<v>-full image (not the converged testing-release), because their baseline runs DDOT/otel-agent, which ships only in the -full variant.

Test plan

  • renovate-config-validator passes on the updated renovate.json5.
  • Verified each matchString matches the real pin lines and that a simulated rewrite updates only the numeric version while preserving the suffix (7.80.2-full…-full, 7.78.0-ltsc2022…-ltsc2022).
  • (Optional) Confirm with a Renovate dry-run that the next Agent bump groups these pins into the Agent-version PR.

🤖 Generated with Claude Code

Renovate's built-in managers only bump docker/Dockerfile.datadog-agent.
The macOS test Agent version (Makefile), the otlp-traces correctness
baseline images, and the Windows LTSC base image are pinned in files no
default manager parses, so they were silently left behind on the 7.80.1
and 7.80.2 bumps and had to be fixed up by hand. Add a regex custom
manager that tracks them off the same registry.datadoghq.com/agent dep,
capturing only the numeric version so each image-tag suffix is preserved
and every pin moves in lockstep with the main Agent image.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jszwedko
jszwedko requested a review from a team as a code owner June 23, 2026 02:06

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8925ab31eb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread renovate.json5
"fileMatch": [
"(^|/)Makefile$",
"^\\.gitlab/windows\\.yml$",
"^test/correctness/cases/.+/config\\.yaml$"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Unignore test configs before matching them

Because this repo extends config:recommended, Renovate's docs state that preset adds ignore patterns for test/tests directories, and ignored files are not extracted even if a custom manager pattern matches them. That means the test/correctness/cases/.../config.yaml Agent image pins this entry is intended to cover will still be skipped, so those OTLP baseline images can keep drifting and still require the manual cleanup this manager is meant to eliminate.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 32c00cb

@pr-commenter

pr-commenter Bot commented Jun 23, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 2a95db2 · Comparison: 32c00cb · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 40.28 MiB (baseline) vs 40.28 MiB (comparison)
Size Change: -8 B (-0.00%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
anon.c332a4a573d0a9a1bf7c71b0a1f57672.1.llvm.11552159992296369999 -130 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.1.llvm.3171138310348900589 +129 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.4.llvm.11552159992296369999 -115 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.4.llvm.3171138310348900589 +114 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.3.llvm.11552159992296369999 -109 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.3.llvm.3171138310348900589 +108 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.0.llvm.11552159992296369999 -97 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.0.llvm.3171138310348900589 +96 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.2.llvm.11552159992296369999 -95 B 1
anon.c332a4a573d0a9a1bf7c71b0a1f57672.2.llvm.3171138310348900589 +94 B 1
[Unmapped] -3 B 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW]    +129  [NEW]     +40    anon.c332a4a573d0a9a1bf7c71b0a1f57672.1.llvm.3171138310348900589
  [NEW]    +114  [NEW]     +25    anon.c332a4a573d0a9a1bf7c71b0a1f57672.4.llvm.3171138310348900589
  [NEW]    +108  [NEW]     +19    anon.c332a4a573d0a9a1bf7c71b0a1f57672.3.llvm.3171138310348900589
  [NEW]     +96  [NEW]      +7    anon.c332a4a573d0a9a1bf7c71b0a1f57672.0.llvm.3171138310348900589
  [NEW]     +94  [NEW]      +5    anon.c332a4a573d0a9a1bf7c71b0a1f57672.2.llvm.3171138310348900589
  -0.1%      -3  [ = ]       0    [Unmapped]
  [DEL]     -95  [DEL]      -5    anon.c332a4a573d0a9a1bf7c71b0a1f57672.2.llvm.11552159992296369999
  [DEL]     -97  [DEL]      -7    anon.c332a4a573d0a9a1bf7c71b0a1f57672.0.llvm.11552159992296369999
  [DEL]    -109  [DEL]     -19    anon.c332a4a573d0a9a1bf7c71b0a1f57672.3.llvm.11552159992296369999
  [DEL]    -115  [DEL]     -25    anon.c332a4a573d0a9a1bf7c71b0a1f57672.4.llvm.11552159992296369999
  [DEL]    -130  [DEL]     -40    anon.c332a4a573d0a9a1bf7c71b0a1f57672.1.llvm.11552159992296369999
  -0.0%      -8  [ = ]       0    TOTAL

config:recommended (via :ignoreModulesAndTests) ignores **/test/**, and
ignored paths are dropped before any manager extracts from them -- so the
custom Agent-pin manager never saw test/correctness/cases/*/config.yaml
and the OTLP baseline image pins would still drift (caught in review).

Override ignorePaths to reproduce the inherited defaults minus **/test/**,
and explicitly re-ignore test/antithesis/** (the only test/ files built-in
managers recognize: a Dockerfile and a docker-compose) so behavior there
is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@datadog-prod-us1-5

This comment has been minimized.

@pr-commenter

pr-commenter Bot commented Jun 23, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: 8b76e7a1-7f50-43ac-a55a-9179364a4cce
Baseline: 2a95db2e · Comparison: 32c00cb2 · diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment (35)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
otlp_ingest_logs_5mb_memory (ignored) memory ⚪ +2.96 metrics profiles logs
dsd_uds_100mb_3k_contexts_cpu (erratic) cpu ⚪ +1.90 metrics profiles logs
otlp_ingest_metrics_5mb_cpu (erratic) cpu ⚪ +1.84 metrics profiles logs
otlp_ingest_metrics_5mb_memory memory ⚪ +1.39 metrics profiles logs
otlp_ingest_logs_5mb_cpu (ignored) cpu ⚪ +1.29 metrics profiles logs
otlp_ingest_traces_5mb_cpu (erratic) cpu ⚪ +1.16 metrics profiles logs
otlp_ingest_traces_5mb_throughput throughput ⚪ -0.53 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ +0.28 metrics profiles logs
dsd_uds_500mb_3k_contexts_memory memory ⚪ +0.22 metrics profiles logs
dsd_uds_10mb_3k_contexts_memory memory ⚪ +0.15 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_memory memory ⚪ +0.13 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_throughput throughput ⚪ -0.07 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ +0.07 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_throughput throughput ⚪ -0.06 metrics profiles logs
otlp_ingest_traces_5mb_memory memory ⚪ +0.01 metrics profiles logs
dsd_uds_512kb_3k_contexts_throughput throughput ⚪ -0.01 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_memory memory ⚪ +0.00 metrics profiles logs
dsd_uds_1mb_3k_contexts_throughput throughput ⚪ +0.00 metrics profiles logs
dsd_uds_100mb_3k_contexts_throughput throughput ⚪ +0.00 metrics profiles logs
otlp_ingest_metrics_5mb_throughput throughput ⚪ +0.01 metrics profiles logs
dsd_uds_10mb_3k_contexts_throughput throughput ⚪ +0.01 metrics profiles logs
otlp_ingest_logs_5mb_throughput (ignored) throughput ⚪ +0.02 metrics profiles logs
dsd_uds_512kb_3k_contexts_memory memory ⚪ -0.09 metrics profiles logs
quality_gates_rss_idle memory ⚪ -0.10 metrics profiles logs
dsd_uds_500mb_3k_contexts_throughput throughput ⚪ +0.14 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ -0.19 metrics profiles logs
dsd_uds_500mb_3k_contexts_cpu (erratic) cpu ⚪ -0.23 metrics profiles logs
dsd_uds_100mb_3k_contexts_memory memory ⚪ -0.30 metrics profiles logs
dsd_uds_512kb_3k_contexts_cpu (erratic) cpu ⚪ -0.36 metrics profiles logs
dsd_uds_1mb_3k_contexts_memory memory ⚪ -0.47 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ -0.63 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_cpu (erratic) cpu ⚪ -2.97 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_cpu (erratic) cpu ⚪ -3.17 metrics profiles logs
dsd_uds_1mb_3k_contexts_cpu (erratic) cpu ⚪ -3.18 metrics profiles logs
dsd_uds_10mb_3k_contexts_cpu (erratic) cpu 🟢 -5.75 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 132 MiB ≤ 140 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 42.5 MiB ≤ 50 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 64.8 MiB ≤ 75 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 191 MiB ≤ 200 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 28.3 MiB ≤ 40 MiB metrics profiles logs
Explanation

A change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression.

@webern webern left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cool

@tobz
tobz merged commit 153a236 into main Jun 23, 2026
84 checks passed
@tobz
tobz deleted the jszwedko/renovate-agent-version-pins branch June 23, 2026 12:21
gh-worker-dd-mergequeue-cf854d Bot pushed a commit that referenced this pull request Jun 23, 2026
> Stacked on #1906 (`jszwedko/renovate-agent-version-pins`). Review/merge that first; this PR will retarget to `main` automatically once it lands.

## Summary

Switch to the `-full` image which contains both JMX and DDOT for correctness tests and the converged image we publish. This removes the need for the OTLP correctness tests to pin to published Agent `-full` images. It also enables deployment of the converged ADP image on internal clusters that also run DDOT.

## Test plan

- [x] Verified `-full` includes JMX: both `-jmx` and `-full` carry the same `jmxfetch.jar` + Java 11 JRE; `-full` additionally has `otel-agent`.
- [x] Rebuilt the converged `testing-release` image on `-full` and confirmed `otel-agent` (DDOT) is present.
- [x] Ran locally on the `-full` converged image — all pass: `otlp-traces-ottl-filtering`, `otlp-traces-ottl-transform` (baseline now runs DDOT from the converged image), plus `otlp-traces`, `otlp-metrics`, and `dsd-plain` to confirm no regression from the base-image change.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com>
dd-octo-sts Bot pushed a commit that referenced this pull request Jun 23, 2026
> Stacked on #1906 (`jszwedko/renovate-agent-version-pins`). Review/merge that first; this PR will retarget to `main` automatically once it lands.

## Summary

Switch to the `-full` image which contains both JMX and DDOT for correctness tests and the converged image we publish. This removes the need for the OTLP correctness tests to pin to published Agent `-full` images. It also enables deployment of the converged ADP image on internal clusters that also run DDOT.

## Test plan

- [x] Verified `-full` includes JMX: both `-jmx` and `-full` carry the same `jmxfetch.jar` + Java 11 JRE; `-full` additionally has `otel-agent`.
- [x] Rebuilt the converged `testing-release` image on `-full` and confirmed `otel-agent` (DDOT) is present.
- [x] Ran locally on the `-full` converged image — all pass: `otlp-traces-ottl-filtering`, `otlp-traces-ottl-transform` (baseline now runs DDOT from the converged image), plus `otlp-traces`, `otlp-metrics`, and `dsd-plain` to confirm no regression from the base-image change.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com> f77dc3f
tobz pushed a commit that referenced this pull request Jun 30, 2026
> Stacked on #1906 (`jszwedko/renovate-agent-version-pins`). Review/merge that first; this PR will retarget to `main` automatically once it lands.

Switch to the `-full` image which contains both JMX and DDOT for correctness tests and the converged image we publish. This removes the need for the OTLP correctness tests to pin to published Agent `-full` images. It also enables deployment of the converged ADP image on internal clusters that also run DDOT.

- [x] Verified `-full` includes JMX: both `-jmx` and `-full` carry the same `jmxfetch.jar` + Java 11 JRE; `-full` additionally has `otel-agent`.
- [x] Rebuilt the converged `testing-release` image on `-full` and confirmed `otel-agent` (DDOT) is present.
- [x] Ran locally on the `-full` converged image — all pass: `otlp-traces-ottl-filtering`, `otlp-traces-ottl-transform` (baseline now runs DDOT from the converged image), plus `otlp-traces`, `otlp-metrics`, and `dsd-plain` to confirm no regression from the base-image change.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants