diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BazelInfo.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BazelInfo.java new file mode 100644 index 00000000000..2a470c2df41 --- /dev/null +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BazelInfo.java @@ -0,0 +1,36 @@ +package datadog.trace.civisibility.ci; + +import datadog.trace.api.civisibility.telemetry.tag.Provider; +import datadog.trace.api.git.GitInfo; +import javax.annotation.Nonnull; + +/** + * Provider strategy used when Bazel payload-in-files mode is active. The orchestrating Bazel rule + * is responsible for collecting CI/git information and enriching the test spans downstream (e.g. + * combining with the underlying CI provider to produce {@code bazel/github}). This strategy only + * surfaces {@link Provider#BAZEL} for telemetry so the rule can confirm that the agent detected the + * mode; no environment or git data is read here. + */ +class BazelInfo implements CIProviderInfo { + + @Override + public GitInfo buildCIGitInfo() { + return GitInfo.NOOP; + } + + @Override + public CIInfo buildCIInfo() { + return CIInfo.NOOP; + } + + @Nonnull + @Override + public PullRequestInfo buildPullRequestInfo() { + return PullRequestInfo.EMPTY; + } + + @Override + public Provider getProvider() { + return Provider.BAZEL; + } +} diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CIProviderInfoFactory.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CIProviderInfoFactory.java index 3037e92d8e5..43ad6882e89 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CIProviderInfoFactory.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CIProviderInfoFactory.java @@ -1,6 +1,7 @@ package datadog.trace.civisibility.ci; import datadog.trace.api.Config; +import datadog.trace.api.civisibility.config.BazelMode; import datadog.trace.civisibility.ci.env.CiEnvironment; import java.nio.file.Path; @@ -21,6 +22,12 @@ public CIProviderInfoFactory(Config config, CiEnvironment environment) { } public CIProviderInfo createCIProviderInfo(Path currentPath) { + // bazel rule supplies CI/git data downstream + BazelMode bazelMode = BazelMode.get(); + if (bazelMode.isPayloadFilesEnabled() && bazelMode.getPayloadsDir() != null) { + return new BazelInfo(); + } + if (!config.isCiVisibilityCiProviderIntegrationEnabled()) { return new UnknownCIInfo(environment, targetFolder, currentPath); } diff --git a/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/tag/Provider.java b/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/tag/Provider.java index 4c6f24607a5..ae71b1c2bd2 100644 --- a/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/tag/Provider.java +++ b/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/tag/Provider.java @@ -7,6 +7,7 @@ public enum Provider implements TagValue { APPVEYOR, AWS, AZP, + BAZEL, BITBUCKET, BITRISE, BUILDKITE,