Repository navigation
Conversation
A manual memory-gate job triggers speedlab's memory gate with this branch's published snapshot against main's. memory-gate:resolve pins the candidate to the timestamped build deploy-artifact published, so a later push cannot change what is measured, and passes it on as a dotenv variable. The trigger job inherits no global variables, so only its own reach speedlab. Speedlab posts the warn-only verdict on the PR. Neither job runs on main, tags or release branches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deploy-artifact already finds and verifies the snapshot build it publishes, so deploy.sh now records it as MEMORY_GATE_CANDIDATE in a dotenv report (write_memory_gate_candidate in includes.sh), and the memory-gate trigger job reads it from there. This replaces memory-gate:resolve, which re-read the snapshot metadata in every PR pipeline: it could pin another push's build from stale metadata, rejected branch names with regex characters, and could turn the pipeline red although the gate is manual. The trigger job now also skips merge-queue branches, scheduled and merge-request pipelines and jdk-integration triggers, like the benchmarks jobs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…k skip rules The publish has already succeeded when deploy.sh records the candidate, so a failed write now only warns instead of failing deploy-artifact. The trigger job reuses .benchmarks-skip-rules (including its CANCELLED and merge-queue rules) and checks main by CI_COMMIT_REF_NAME, which is set for triggered pipelines too. The docs state that two near-simultaneous pushes to one branch can record the other push's build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Contributor
Scan-Build Report
Bug Summary
Filter Results by FileReports
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Contributor
CI Test ResultsRun: #42694637627 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Summary: Total: 32 | Passed: 32 | Failed: 0 Updated: 2026-11-09 21:02:19 UTC |
Contributor
Speedlab memory gateNo significant change (pipeline): spring-petclinic's anonymous memory changed by +0.3 MiB (95% CI [-1.6, +2.1], 6 pairs).
Warn-only. A regression is a 95% interval above zero with a mean of at least 3 MiB. Changes in retained free memory show only in part; see speedlab's docs/memory-gate.md. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?:
It adds a manual
memory-gatejob to the GitLab branch pipelines. The job triggers speedlab's memory gate (DataDog/speedlab#105, merged) to compare this branch's java-profiler build withmain's on spring-petclinic's memory. Speedlab posts a warn-only verdict on the PR (DataDog/speedlab#109).deploy.shMEMORY_GATE_CANDIDATE=snapshot:<that build>(write_memory_gate_candidateinincludes.sh). The write cannot fail the job.deploy-artifact.gitlab/memory-gate/.gitlab-ci.yml-
SPEEDLAB_TRIGGER=java-profiler-memory-gate-
PROFILER_CANDIDATE= the recorded build-
PROFILER_BASELINE=branch:main-
UPSTREAM_*for the commentIt sets
inherit: variables: false, so no global variable leaks into speedlab. It reuses.benchmarks-skip-rules, plusmainand tags.TestingGuide.mdMotivation:
This makes the low-noise memory measurement from the variance investigation available on PRs, so a profiler change's memory overhead is visible before merge.
Additional Notes:
rkennke/memory-gate-triggerbranch. It switches tomainonce Clean up the sanitizer runs #109 merges.deploy-artifactverified. Two pushes to one branch that publish at nearly the same time can make it record the other push's build; this is documented.deploy-artifactpublishes nothing (prepare.sh'sCANCELLED). Rules cannot see that dotenv variable, so the job is still offered, but it has no candidate and speedlab rejects the run.deploy-artifact's upload logs a "no matching files" warning formemory-gate.env./code-review, three rounds) led to the current design..gitlab/**is exempt per AGENTS.md), and an integration test of thedeploy.shcall, which cannot run outside CI.How to test the change?:
bash .gitlab/scripts/tests/includes_test.shcovers the helper: it writes the build's selector, and rejects an empty build without writing.memory-gate, then check that speedlab runs only the gate jobs and posts the verdict here.For Datadog employees:
credentials of any kind, I've requested a security review (run the
dd:platform-security-reviewskill, or file a request via the PSEC review form).
bewairealso runs automatically on every PR.🤖 Generated with Claude Code