Skip to content

Releases: DataDog/rules_test_optimization

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 17:12
v1.4.0
87b52ec

v1.4.0

Added

  • Release bundles with SHA256 checksums, archive-based installation snippets
    for core/companions/Go forks, and notes generated from this changelog. Tag
    workflows prepare a draft only after all release validations pass; manual
    branch runs produce a downloadable preview without publishing.

Changed

  • Recommend release archives for installation. Go Bzlmod bootstrap now infers
    and preserves checksum-pinned archive overrides and mirrors without requiring
    a Git override for the Orchestrion-enabled fork.
  • Use Bazel 8.8.2 for repository and example validation.

Fixed

  • Exclude development-only Bazel configuration from the generated
    workspace_runtime and bzlmod_runtime Go patch profiles.

Install v1.4.0

Source commit: 87b52ec1dd0e0577a8d210bbfca5422e48864b6e.

Use the same archive and checksum for core, companions, and the Go fork.
These snippets install dependencies; follow the README for runtime/toolchain setup.
For Bzlmod, add the core block and only the companions you use.
For Go, also add one of the rules_go blocks below before running the bootstrap.
WORKSPACE users should use the public language repository helpers after installing core.

Bzlmod

datadog-rules-test-optimization

bazel_dep(name = "datadog-rules-test-optimization", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0",
)

datadog-rules-test-optimization-go

bazel_dep(name = "datadog-rules-test-optimization-go", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/go",
)

datadog-rules-test-optimization-python

bazel_dep(name = "datadog-rules-test-optimization-python", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-python",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/python",
)

datadog-rules-test-optimization-java

bazel_dep(name = "datadog-rules-test-optimization-java", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-java",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/java",
)

datadog-rules-test-optimization-nodejs

bazel_dep(name = "datadog-rules-test-optimization-nodejs", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-nodejs",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/nodejs",
)

datadog-rules-test-optimization-dotnet

bazel_dep(name = "datadog-rules-test-optimization-dotnet", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-dotnet",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/dotnet",
)

datadog-rules-test-optimization-ruby

bazel_dep(name = "datadog-rules-test-optimization-ruby", version = "1.4.0")
archive_override(
    module_name = "datadog-rules-test-optimization-ruby",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/ruby",
)

Go fork (choose one supported upstream)

v0_60_0

bazel_dep(name = "rules_go", version = "0.60.0")
archive_override(
    module_name = "rules_go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/third_party/rgo/v0_60_0/base",
)

v0_61_1

bazel_dep(name = "rules_go", version = "0.61.1")
archive_override(
    module_name = "rules_go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/third_party/rgo/v0_61_1/base",
)

v0_62_0

bazel_dep(name = "rules_go", version = "0.62.0")
archive_override(
    module_name = "rules_go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/third_party/rgo/v0_62_0/base",
)

v0_63_0

bazel_dep(name = "rules_go", version = "0.63.0")
archive_override(
    module_name = "rules_go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/third_party/rgo/v0_63_0/base",
)

WORKSPACE

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

datadog-rules-test-optimization

http_archive(
    name = "datadog-rules-test-optimization",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0",
)

datadog-rules-test-optimization-go

http_archive(
    name = "datadog-rules-test-optimization-go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/go",
    repo_mapping = {"@rules_go": "@io_bazel_rules_go"},
)

datadog-rules-test-optimization-python

http_archive(
    name = "datadog-rules-test-optimization-python",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/python",
)

datadog-rules-test-optimization-java

http_archive(
    name = "datadog-rules-test-optimization-java",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/java",
)

datadog-rules-test-optimization-nodejs

http_archive(
    name = "datadog-rules-test-optimization-nodejs",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/nodejs",
)

datadog-rules-test-optimization-dotnet

http_archive(
    name = "datadog-rules-test-optimization-dotnet",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/dotnet",
)

datadog-rules-test-optimization-ruby

http_archive(
    name = "datadog-rules-test-optimization-ruby",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/modules/ruby",
)

Go fork (choose one supported upstream)

v0_60_0

http_archive(
    name = "io_bazel_rules_go",
    urls = ["https://github.com/DataDog/rules_test_optimization/releases/download/v1.4.0/rules_test_optimization-1.4.0.tar.gz"],
    sha256 = "68d4a30731a5b04ca1bece9bc69d149f2f4205d71b980965736088b36e36705a",
    strip_prefix = "rules_test_optimization-1.4.0/third_party/rgo/v0_60_0/base",
)

v0_61_1

http_archive(
    name = "io_bazel_rules_go",
    urls = ["https://github.com/DataDog/...
Read more

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

v1.2.0

Choose a tag to compare

@tonyredondo tonyredondo released this 03 Jun 18:34
6995353

What's Changed

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@tonyredondo tonyredondo released this 29 May 15:48
3031390

What's Changed

Full Changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@tonyredondo tonyredondo released this 18 May 18:31
v1.0.0
920f37a

What's Changed

Read more