Deduplicate GitLab test job templates - #12199
Conversation
|
🎯 Code Coverage (details) 🔗 Commit SHA: e243804 | Docs | Datadog PR Page | Give us feedback! |
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
There was a problem hiding this comment.
More details
Expanded job behavior preserves AMD64 and ARM64 architecture contracts, including test-agent checks, coverage composition, JVM exclusions, manual feature-branch rules, and the intended artifact-free ARM64 build gate.
📊 Validated against 6 scenarios · Open Bits AI session
🤖 Datadog Autotest · Commit e243804 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
bric3
left a comment
There was a problem hiding this comment.
LGTM, but I'd make the architecture explicit in amd64 jobs, so there's a consistent job naming.
My comments are not exhaustive, so there might be other places where this applies.
| - scheduler_failure | ||
| - data_integrity_failure | ||
|
|
||
| .test_job: |
There was a problem hiding this comment.
suggestion: I'd make the arcvhitecture explicit for amd64
| .test_job: | |
| .test_job_amd64: |
|
|
||
| .test_job_arm64_with_test_agent: | ||
| extends: .test_job_arm64 | ||
| .test_job_with_test_agent_common: |
There was a problem hiding this comment.
suggestion: I'd make architecture explicit
| - !reference [.test_job_common, script] | ||
| - .gitlab/check_test_agent_results.sh | ||
|
|
||
| .test_job_with_test_agent: |
There was a problem hiding this comment.
suggestion: I'd make architecture explicit
| JETTY_AVAILABLE_PROCESSORS: 4 | ||
| GIT_SUBMODULE_STRATEGY: normal | ||
| GIT_SUBMODULE_DEPTH: 1 | ||
| TEST_JVM_ARGS: "-Xshare:off" |
There was a problem hiding this comment.
suggestion: It might be a good thing to comment why this is needed.
Honestly I didn't dived into why this was needed, I know it disables class data dharing (CDS) which is used to speed up JVM botstrap, that said this mechanism evolved overt JVM releases so I'm not sure what's at play regarding ARM64 in more recent versions.
- I just know that
-Xshare:offwon;t use that CDS archive.
If issues arose, I wonder if Linux memory pages are at play when running on ARM64, unusually these systems may use 4 KiB, 16 KiB, or 64 KiB memory pages. And I wonder if the CDS archive has some issues with memory alignment on unusual page size, that said I can be completely off-track.
However about the "trade-off", I would mention slightly slower jvm bootstrap, and maybe a tad higher memory use.
There was a problem hiding this comment.
thought: It's just a thought, but interestingly, I wonder if the env var can be picked up, by programmatic launches that are using this all over the place, we might be able to drop the if branch on arm64 in the code and always pick the env var.
That said, maybe, this env var need to be more specific? E.g. PLATFORM_JVM_ARGS
What Does This Do
.test_job_commonfor AMD64 and ARM64 jobs.buildjob without downloading its platform-specific artifacts.Motivation
The ARM64 test templates duplicated most of the AMD64 Gradle setup, scripts, report collection, artifacts, retries, and test-agent configuration. That duplication made the architectures prone to drifting whenever shared CI setup changed and made rebases unnecessarily conflict-prone.
Sharing the common template keeps both architectures aligned. The AMD64 build gate also avoids spending ARM64 runner capacity on commits that do not compile.
Additional Notes
git diff --checkpassed; the repository commit hook completed its Gradle/Spotless checks successfully (6,534 tasks).Contributor Checklist
type:and (comp:orinst:) labels in addition to any other useful labelsclose,fix, or any linking keywords when referencing an issueUse
solvesinstead, and assign the PR milestone to the issueJira ticket: N/A