chore(ci): manage hand-maintained Datadog Agent pins with renovate - #1906
Conversation
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>
There was a problem hiding this comment.
💡 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".
| "fileMatch": [ | ||
| "(^|/)Makefile$", | ||
| "^\\.gitlab/windows\\.yml$", | ||
| "^test/correctness/cases/.+/config\\.yaml$" |
There was a problem hiding this comment.
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 👍 / 👎.
Binary Size Analysis (Agent Data Plane)Baseline: 2a95db2 · Comparison: 32c00cb · diff ✅ Binary size difference within thresholdChanges by Module
Detailed Symbol Changes |
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>
This comment has been minimized.
This comment has been minimized.
Regression Detector (Agent Data Plane)Run ID: Optimization Goals: ✅ No significant changes detectedFine details of change detection per experiment (35)Experiments configured
Bounds Checks: ✅ Passed (5)
ExplanationA 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 ( |
> 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>
> 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
> 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>
Summary
When the Datadog Agent version is bumped, Renovate only updates
docker/Dockerfile.datadog-agent— the one place its built-indockerfilemanager 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/agentdependency 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>-fullimage (not the convergedtesting-release), because their baseline runs DDOT/otel-agent, which ships only in the-fullvariant.Test plan
renovate-config-validatorpasses on the updatedrenovate.json5.matchStringmatches 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).🤖 Generated with Claude Code