Skip to content

Commit

Permalink
Add more metrics and tags to CI Visibility telemetry (#7223)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikita-tkachenko-datadog committed Jun 20, 2024
1 parent 1ceb7d1 commit 01fd984
Show file tree
Hide file tree
Showing 37 changed files with 320 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import datadog.trace.api.Config;
import datadog.trace.api.civisibility.config.ModuleExecutionSettings;
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.GitInfoProvider;
import datadog.trace.civisibility.ci.CIInfo;
import datadog.trace.civisibility.ci.CIProviderInfo;
Expand Down Expand Up @@ -45,8 +46,8 @@ public class CiVisibilityRepoServices {

final String repoRoot;
final String moduleName;
final Provider ciProvider;
final Map<String, String> ciTags;
final boolean supportedCiProvider;

final GitDataUploader gitDataUploader;
final RepoIndexProvider repoIndexProvider;
Expand All @@ -56,11 +57,12 @@ public class CiVisibilityRepoServices {

CiVisibilityRepoServices(CiVisibilityServices services, Path path) {
CIProviderInfo ciProviderInfo = services.ciProviderInfoFactory.createCIProviderInfo(path);
ciProvider = ciProviderInfo.getProvider();

CIInfo ciInfo = ciProviderInfo.buildCIInfo();
repoRoot = ciInfo.getCiWorkspace();
moduleName = getModuleName(services.config, path, ciInfo);
ciTags = new CITagsProvider().getCiTags(ciInfo);
supportedCiProvider = ciProviderInfo.isSupportedCiProvider();

gitDataUploader =
buildGitDataUploader(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ private static BuildSystemSession.Factory buildSystemSessionFactory(
repoServices.repoRoot,
startCommand,
startTime,
repoServices.supportedCiProvider,
repoServices.ciProvider,
services.config,
services.metricCollector,
testModuleRegistry,
Expand Down Expand Up @@ -262,7 +262,7 @@ private static TestFrameworkSession.Factory headlessTestFrameworkEssionFactory(
return new HeadlessTestSession(
projectName,
startTime,
repoServices.supportedCiProvider,
repoServices.ciProvider,
services.config,
services.metricCollector,
testDecorator,
Expand All @@ -282,7 +282,7 @@ private static CIVisibility.SessionFactory manualApiSessionFactory(
return new ManualApiTestSession(
projectName,
startTime,
repoServices.supportedCiProvider,
repoServices.ciProvider,
services.config,
services.metricCollector,
testDecorator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -112,4 +113,9 @@ private PersonInfo buildGitCommitAuthor() {
System.getenv(APPVEYOR_REPO_COMMIT_AUTHOR_NAME),
System.getenv(APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL));
}

@Override
public Provider getProvider() {
return Provider.APPVEYOR;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package datadog.trace.civisibility.ci;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.GitInfo;

class AwsCodePipelineInfo implements CIProviderInfo {
Expand All @@ -26,4 +27,9 @@ public CIInfo buildCIInfo() {
AWS_CODEPIPELINE_ARN)
.build();
}

@Override
public Provider getProvider() {
return Provider.AWS;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -134,4 +135,9 @@ private PersonInfo buildGitCommitAuthor() {
System.getenv(AZURE_BUILD_REQUESTED_FOR_ID),
System.getenv(AZURE_BUILD_REQUESTED_FOR_EMAIL));
}

@Override
public Provider getProvider() {
return Provider.AZP;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.util.Strings;
Expand Down Expand Up @@ -75,4 +76,9 @@ private String buildPipelineId() {
}
return id;
}

@Override
public Provider getProvider() {
return Provider.BITBUCKET;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -65,4 +66,9 @@ private String buildGitCommit() {
return System.getenv(BITRISE_GIT_COMMIT);
}
}

@Override
public Provider getProvider() {
return Provider.BITRISE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static datadog.trace.api.git.GitUtils.normalizeBranch;
import static datadog.trace.api.git.GitUtils.normalizeTag;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -65,4 +66,9 @@ private PersonInfo buildGitCommiter() {
return new PersonInfo(
System.getenv(BUDDY_GIT_COMMIT_AUTHOR), System.getenv(BUDDY_GIT_COMMIT_EMAIL));
}

@Override
public Provider getProvider() {
return Provider.BUDDYCI;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;
import static datadog.trace.util.Strings.toJson;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -84,4 +85,9 @@ private PersonInfo buildGitCommitAuthor() {
return new PersonInfo(
System.getenv(BUILDKITE_GIT_AUTHOR_NAME), System.getenv(BUILDKITE_GIT_AUTHOR_EMAIL));
}

@Override
public Provider getProvider() {
return Provider.BUILDKITE;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package datadog.trace.civisibility.ci;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.GitInfo;

public interface CIProviderInfo {
Expand All @@ -8,7 +9,5 @@ public interface CIProviderInfo {

CIInfo buildCIInfo();

default boolean isSupportedCiProvider() {
return true;
}
Provider getProvider();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;

Expand Down Expand Up @@ -55,4 +56,9 @@ private String buildPipelineUrl(final String pipelineId) {

return String.format("https://app.circleci.com/pipelines/workflows/%s", pipelineId);
}

@Override
public Provider getProvider() {
return Provider.CIRCLECI;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static datadog.trace.api.git.GitUtils.normalizeBranch;
import static datadog.trace.api.git.GitUtils.normalizeTag;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -65,4 +66,9 @@ public CIInfo buildCIInfo() {
.ciEnvVars(CODEFRESH)
.build();
}

@Override
public Provider getProvider() {
return Provider.CODEFRESH;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.GitUtils;
Expand Down Expand Up @@ -78,4 +79,9 @@ private PersonInfo buildGitCommitAuthor() {
return new PersonInfo(
personInfo.getName(), personInfo.getEmail(), System.getenv(GITLAB_GIT_COMMIT_TIMESTAMP));
}

@Override
public Provider getProvider() {
return Provider.GITLAB;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;

Expand Down Expand Up @@ -110,4 +111,9 @@ private String buildPipelineUrl(
private String buildJobUrl(final String host, final String repo, final String commit) {
return String.format("%s/%s/commit/%s/checks", host, repo, commit);
}

@Override
public Provider getProvider() {
return Provider.GITHUBACTIONS;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.util.Strings;
Expand Down Expand Up @@ -137,4 +138,9 @@ private String filterJenkinsJobName(final String jobName, final String gitBranch
return jobNameParts[0];
}
}

@Override
public Provider getProvider() {
return Provider.JENKINS;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package datadog.trace.civisibility.ci;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;

Expand All @@ -22,4 +23,9 @@ public CIInfo buildCIInfo() {
.ciJobUrl(System.getenv(BUILD_URL))
.build();
}

@Override
public Provider getProvider() {
return Provider.TEAMCITY;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static datadog.trace.api.git.GitUtils.normalizeTag;
import static datadog.trace.civisibility.utils.FileUtils.expandTilde;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.CommitInfo;
import datadog.trace.api.git.GitInfo;
import datadog.trace.api.git.PersonInfo;
Expand Down Expand Up @@ -81,4 +82,9 @@ private String buildCiPipelineName() {
}
return repoSlug;
}

@Override
public Provider getProvider() {
return Provider.TRAVISCI;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static datadog.trace.civisibility.utils.FileUtils.findParentPathBackwards;

import datadog.trace.api.civisibility.telemetry.tag.Provider;
import datadog.trace.api.git.GitInfo;
import java.nio.file.Path;
import org.slf4j.Logger;
Expand Down Expand Up @@ -69,7 +70,7 @@ protected Path getCurrentPath() {
}

@Override
public boolean isSupportedCiProvider() {
return false;
public Provider getProvider() {
return Provider.UNSUPPORTED;
}
}
Loading

0 comments on commit 01fd984

Please sign in to comment.