Skip to content

v1.3.0

Choose a tag to compare

@tonyredondo tonyredondo released this 21 Oct 12:02
v1.3.0
0c8b9ac

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 as python3 or python on PATH, set DD_TEST_OPTIMIZATION_PYTHON or PYTHON. For a temporary rollback to the former Bash/curl or PowerShell uploader, set use_python_uploader = False on your dd_payload_uploader target.
  • Go: Orchestrion v1.12.0 requires Go 1.25.0+. The maintained integration uses dd-trace-go/v2 v2.9.1. The supported rules_go profiles are v0.60.0, v0.61.1, v0.62.0, and v0.63.0.
  • Rerun dd_topt_go_bootstrap with --write-bazelrc when 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 set enabled_by_env = False must also keep the Orchestrion build setting enabled.

Changelog

Added

  • Manifest-driven onboarding for consumer-managed Go/Python target sets through test_optimization_manifest_sync and test_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_go v0.62.0 and v0.63.0.
  • DD_TEST_OPTIMIZATION_LOG_LEVEL for sync, doctor, and uploader diagnostics: ERROR, WARN, INFO, or DEBUG. The default is INFO; per-output cached-payload skip messages now appear only at DEBUG.

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 _test packages. 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/v2 v2.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_test wrapper. The former optimized wrapper name remains an alias to the same function.

Fixed

  • Static Go descriptors select payloads using each test package's effective importpath and 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, and cquery work with Test Optimization disabled; unconfigured query can 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, synthetic GoCompilePkg, and GoLink across all maintained rules_go versions. 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.

Full changelog · Repository changelog