Repository navigation
v1.3.0
v1.3.0 adds manifest-driven onboarding for Go and Python monorepos, updates the Go instrumentation stack, and makes the Python uploader the default on all supported platforms. It also improves Bazel cache reuse and reduces routine CI log output.
Upgrade notes
- Uploader: Python 3.10+ is now required. Install it on the machine running
dd_upload_payloads. If it is not available aspython3orpythononPATH, setDD_TEST_OPTIMIZATION_PYTHONorPYTHON. For a temporary rollback to the former Bash/curl or PowerShell uploader, setuse_python_uploader = Falseon yourdd_payload_uploadertarget. - Go: Orchestrion v1.12.0 requires Go 1.25.0+. The maintained integration uses
dd-trace-go/v2v2.9.1. The supportedrules_goprofiles are v0.60.0, v0.61.1, v0.62.0, and v0.63.0. - Rerun
dd_topt_go_bootstrapwith--write-bazelrcwhen upgrading a Go consumer from v1.2.0. The idempotent update enables metadata sync and Orchestrion together through--config=test-optimization. Omitting the config disables both. Consumers that intentionally setenabled_by_env = Falsemust also keep the Orchestrion build setting enabled.
Changelog
Added
- Manifest-driven onboarding for consumer-managed Go/Python target sets through
test_optimization_manifest_syncandtest_optimization_manifest_sync_extension. The generated repository provides target/context mappings, narrow module payloads, bundled contexts, and an exact-target file without requiring a checked-in service registry. - Dynamic exact-target input support in the doctor and convenience target macro, with coverage for disabled execution, deterministic manifests, no-host-Go execution, multi-context enrichment, and metadata cache isolation.
- Reusable Go WORKSPACE helpers for config-gated metadata sync and fixed-name Orchestrion repository declarations, matching the public Bzlmod onboarding contract.
- Maintained Orchestrion forks and public consumer patch profiles for
rules_gov0.62.0 and v0.63.0. DD_TEST_OPTIMIZATION_LOG_LEVELfor sync, doctor, and uploader diagnostics:ERROR,WARN,INFO, orDEBUG. The default isINFO; per-output cached-payload skip messages now appear only atDEBUG.
Changed
- The shared Python uploader is now the default on Linux, macOS, and Windows. See the upgrade notes for interpreter selection and the explicit legacy rollback.
- Ordinary host-side Orchestrion bootstrap commands reuse Go's configured or default build and module caches when writable. Read-only environments and unsupported cache queries fall back to repository-local caches. The Datadog cache stores final patched bootstrap artifacts, and disabled configuration leaves it untouched.
- Go payload selection uses the module identifiers emitted by the runtime, including escaped fallback names and external
_testpackages. A package shard carries internal and external test metadata when they share a test binary. - The Go integration now uses Orchestrion v1.12.0 and
dd-trace-go/v2v2.9.1, preserving upstream test-variant resolution and the Bazel resolver compatibility layer. - The public Go Bzlmod extension defaults to
enabled_by_env = True. Disabled Go/Python macros preserve the consumer's ordinary public test target without Test Optimization runtime activity. - Python payload selection derives module identifiers from runtime and Bazel package metadata. Explicit identifiers and overrides must match available module groups; inferred misses and metadata without groups keep the full-bundle fallback.
- Go WORKSPACE bootstrap generates one central config-gated
dd_go_testwrapper. The former optimized wrapper name remains an alias to the same function.
Fixed
- Static Go descriptors select payloads using each test package's effective
importpathand the synchronized module catalog. This restores per-package cache invalidation without eagerly resolving unselected service repositories. - Generated Go payload/metadata helpers are manual and inherit target compatibility. Wildcard
build,test, andcquerywork with Test Optimization disabled; unconfiguredquerycan still list the targets. - Go analysis reports migration guidance if metadata is enabled while the global Orchestrion setting is disabled, instead of silently dropping instrumentation during a partial upgrade.
- Disabled Go analysis resolves empty Orchestrion repository targets before host-Go discovery or source fetching, so declaring the integration does not make ordinary targets require a host Go installation.
- Generated Bzlmod runtime patches retain the Orchestrion module-extension wiring, including the disabled repository interface.
- Determinism checks cover
GoStdlib,GoSyntheticTestmainHelpers, syntheticGoCompilePkg, andGoLinkacross all maintainedrules_goversions. The builder normalizes temporary paths, CGO seeds, source trim paths, and copied helper build IDs while preserving relative CGO inputs. Ordinary Go actions cannot consume the instrumented stdlib cache. - Release validation rejects a tag that does not match the core module version and checks version alignment across all companions.
Source modules
Core and all six companions declare version 1.3.0 in the same source archive.
| Module | Source directory |
|---|---|
datadog-rules-test-optimization |
Repository root |
datadog-rules-test-optimization-go |
modules/go |
datadog-rules-test-optimization-python |
modules/python |
datadog-rules-test-optimization-java |
modules/java |
datadog-rules-test-optimization-nodejs |
modules/nodejs |
datadog-rules-test-optimization-dotnet |
modules/dotnet |
datadog-rules-test-optimization-ruby |
modules/ruby |
This GitHub release provides source archives. Bazel Central Registry publication is a separate step.
Validation
The Release validation workflow passed all 20 jobs on commit 0c8b9ac9634a2a283230efda77d64e00f8586a16. Consumer E2E validation also passed on Linux, macOS, and Windows, including the Go WORKSPACE/Bzlmod fixture matrix.