Skip to content

Commit 6f7349f

Browse files
Update Attempt to Fix to v5 (#9145)
1 parent e327012 commit 6f7349f

File tree

62 files changed

+491
-159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+491
-159
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/CiVisibilityRepoServices.java

Lines changed: 55 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import datadog.trace.api.Config;
55
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
66
import datadog.trace.api.civisibility.telemetry.tag.Provider;
7+
import datadog.trace.api.git.CommitInfo;
78
import datadog.trace.api.git.GitInfoProvider;
9+
import datadog.trace.api.git.PersonInfo;
810
import datadog.trace.civisibility.ci.CIInfo;
911
import datadog.trace.civisibility.ci.CIProviderInfo;
1012
import datadog.trace.civisibility.ci.CITagsProvider;
@@ -63,21 +65,22 @@ public class CiVisibilityRepoServices {
6365
CiVisibilityRepoServices(CiVisibilityServices services, Path path) {
6466
CIProviderInfo ciProviderInfo = services.ciProviderInfoFactory.createCIProviderInfo(path);
6567
ciProvider = ciProviderInfo.getProvider();
66-
6768
CIInfo ciInfo = ciProviderInfo.buildCIInfo();
68-
PullRequestInfo pullRequestInfo =
69-
buildPullRequestInfo(services.config, services.environment, ciProviderInfo);
70-
71-
if (pullRequestInfo.isNotEmpty()) {
72-
LOGGER.info("PR detected: {}", pullRequestInfo);
73-
}
7469

7570
repoRoot = getRepoRoot(ciInfo, services.gitClientFactory);
7671
moduleName = getModuleName(services.config, repoRoot, path);
77-
ciTags = new CITagsProvider().getCiTags(ciInfo, pullRequestInfo);
7872

7973
GitClient gitClient = services.gitClientFactory.create(repoRoot);
8074
GitRepoUnshallow gitRepoUnshallow = new GitRepoUnshallow(services.config, gitClient);
75+
PullRequestInfo pullRequestInfo =
76+
buildPullRequestInfo(
77+
services.config, services.environment, ciProviderInfo, gitClient, gitRepoUnshallow);
78+
79+
if (!pullRequestInfo.isEmpty()) {
80+
LOGGER.info("PR detected: {}", pullRequestInfo);
81+
}
82+
83+
ciTags = new CITagsProvider().getCiTags(ciInfo, pullRequestInfo);
8184

8285
gitDataUploader =
8386
buildGitDataUploader(
@@ -110,38 +113,71 @@ public class CiVisibilityRepoServices {
110113
}
111114

112115
@Nonnull
113-
private static PullRequestInfo buildPullRequestInfo(
114-
Config config, CiEnvironment environment, CIProviderInfo ciProviderInfo) {
115-
PullRequestInfo info = buildUserPullRequestInfo(config, environment);
116+
static PullRequestInfo buildPullRequestInfo(
117+
Config config,
118+
CiEnvironment environment,
119+
CIProviderInfo ciProviderInfo,
120+
GitClient gitClient,
121+
GitRepoUnshallow gitRepoUnshallow) {
122+
PullRequestInfo userInfo = buildUserPullRequestInfo(config, environment, gitClient);
116123

117-
if (info.isComplete()) {
118-
return info;
124+
if (userInfo.isComplete()) {
125+
return userInfo;
119126
}
120127

121128
// complete with CI vars if user didn't provide all information
122-
return PullRequestInfo.merge(info, ciProviderInfo.buildPullRequestInfo());
129+
PullRequestInfo ciInfo = PullRequestInfo.merge(userInfo, ciProviderInfo.buildPullRequestInfo());
130+
if (Strings.isNotBlank(ciInfo.getGitCommitHead().getSha())) {
131+
// if head sha present try to populate author, committer and message info through git client
132+
try {
133+
gitRepoUnshallow.unshallow(true);
134+
String headSha = ciInfo.getGitCommitHead().getSha();
135+
PersonInfo authorInfo =
136+
new PersonInfo(
137+
gitClient.getAuthorName(headSha),
138+
gitClient.getAuthorEmail(headSha),
139+
gitClient.getAuthorDate(headSha));
140+
PersonInfo committerInfo =
141+
new PersonInfo(
142+
gitClient.getCommitterName(headSha),
143+
gitClient.getCommitterEmail(headSha),
144+
gitClient.getCommitterDate(headSha));
145+
CommitInfo commitInfo =
146+
new CommitInfo(headSha, authorInfo, committerInfo, gitClient.getFullMessage(headSha));
147+
return PullRequestInfo.merge(ciInfo, new PullRequestInfo(null, null, commitInfo, null));
148+
} catch (Exception ignored) {
149+
}
150+
}
151+
return ciInfo;
123152
}
124153

125154
@Nonnull
126155
private static PullRequestInfo buildUserPullRequestInfo(
127-
Config config, CiEnvironment environment) {
156+
Config config, CiEnvironment environment, GitClient gitClient) {
128157
PullRequestInfo userInfo =
129158
new PullRequestInfo(
130159
config.getGitPullRequestBaseBranch(),
131160
config.getGitPullRequestBaseBranchSha(),
132-
config.getGitCommitHeadSha(),
161+
new CommitInfo(config.getGitCommitHeadSha()),
133162
null);
134163

135164
if (userInfo.isComplete()) {
136165
return userInfo;
137166
}
138167

139-
// logs-backend specific vars
168+
// ddci specific vars
169+
String targetSha = environment.get(Constants.DDCI_PULL_REQUEST_TARGET_SHA);
170+
String sourceSha = environment.get(Constants.DDCI_PULL_REQUEST_SOURCE_SHA);
171+
String mergeBase = null;
172+
try {
173+
mergeBase = gitClient.getMergeBase(targetSha, sourceSha);
174+
} catch (Exception ignored) {
175+
}
140176
PullRequestInfo ddCiInfo =
141177
new PullRequestInfo(
142178
null,
143-
environment.get(Constants.DDCI_PULL_REQUEST_TARGET_SHA),
144-
environment.get(Constants.DDCI_PULL_REQUEST_SOURCE_SHA),
179+
mergeBase,
180+
new CommitInfo(environment.get(Constants.DDCI_PULL_REQUEST_SOURCE_SHA)),
145181
null);
146182

147183
return PullRequestInfo.merge(userInfo, ddCiInfo);

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/AppVeyorInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public PullRequestInfo buildPullRequestInfo() {
9191
return new PullRequestInfo(
9292
normalizeBranch(environment.get(APPVEYOR_REPO_BRANCH)),
9393
null,
94-
environment.get(APPVEYOR_PR_HEAD_COMMIT),
94+
new CommitInfo(environment.get(APPVEYOR_PR_HEAD_COMMIT)),
9595
environment.get(APPVEYOR_PR_NUMBER));
9696
} else {
9797
return PullRequestInfo.EMPTY;

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/AzurePipelinesInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public PullRequestInfo buildPullRequestInfo() {
9090
return new PullRequestInfo(
9191
normalizeBranch(environment.get(AZURE_PR_TARGET_BRANCH)),
9292
null,
93-
null,
93+
CommitInfo.NOOP,
9494
environment.get(AZURE_PR_NUMBER));
9595
}
9696

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BitBucketInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public PullRequestInfo buildPullRequestInfo() {
7979
return new PullRequestInfo(
8080
normalizeBranch(environment.get(BITBUCKET_PR_DESTINATION_BRANCH)),
8181
null,
82-
null,
82+
CommitInfo.NOOP,
8383
environment.get(BITBUCKET_PR_NUMBER));
8484
}
8585

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BitriseInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public PullRequestInfo buildPullRequestInfo() {
7676
return new PullRequestInfo(
7777
normalizeBranch(environment.get(BITRISE_GIT_BRANCH_DEST)),
7878
null,
79-
null,
79+
CommitInfo.NOOP,
8080
environment.get(BITRISE_PR_NUMBER));
8181
}
8282

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BuddyInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public PullRequestInfo buildPullRequestInfo() {
6767
return new PullRequestInfo(
6868
normalizeBranch(environment.get(BUDDY_RUN_PR_BASE_BRANCH)),
6969
null,
70-
null,
70+
CommitInfo.NOOP,
7171
environment.get(BUDDY_RUN_PR_NUMBER));
7272
}
7373

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BuildkiteInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public PullRequestInfo buildPullRequestInfo() {
8585
return new PullRequestInfo(
8686
normalizeBranch(environment.get(BUILDKITE_PULL_REQUEST_BASE_BRANCH)),
8787
null,
88-
null,
88+
CommitInfo.NOOP,
8989
environment.get(BUILDKITE_PULL_REQUEST_NUMBER));
9090
}
9191
return PullRequestInfo.EMPTY;

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CITagsProvider.java

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ public Map<String, String> getCiTags(CIInfo ciInfo, PullRequestInfo pullRequestI
4242
.withPullRequestBaseBranch(pullRequestInfo)
4343
.withPullRequestBaseBranchSha(pullRequestInfo)
4444
.withGitCommitHeadSha(pullRequestInfo)
45+
.withGitCommitHeadAuthorName(pullRequestInfo)
46+
.withGitCommitHeadAuthorEmail(pullRequestInfo)
47+
.withGitCommitHeadAuthorDate(pullRequestInfo)
48+
.withGitCommitHeadCommitterName(pullRequestInfo)
49+
.withGitCommitHeadCommitterEmail(pullRequestInfo)
50+
.withGitCommitHeadCommitterDate(pullRequestInfo)
51+
.withGitCommitHeadMessage(pullRequestInfo)
4552
.withPullRequestNumber(pullRequestInfo)
4653
.withGitRepositoryUrl(gitInfo)
4754
.withGitCommit(gitInfo)
@@ -133,7 +140,48 @@ public CITagsBuilder withPullRequestBaseBranchSha(final PullRequestInfo pullRequ
133140
}
134141

135142
public CITagsBuilder withGitCommitHeadSha(final PullRequestInfo pullRequestInfo) {
136-
return putTagValue(Tags.GIT_COMMIT_HEAD_SHA, pullRequestInfo.getGitCommitHeadSha());
143+
return putTagValue(Tags.GIT_COMMIT_HEAD_SHA, pullRequestInfo.getGitCommitHead().getSha());
144+
}
145+
146+
public CITagsBuilder withGitCommitHeadAuthorName(final PullRequestInfo pullRequestInfo) {
147+
return putTagValue(
148+
Tags.GIT_COMMIT_HEAD_AUTHOR_NAME,
149+
pullRequestInfo.getGitCommitHead().getAuthor().getName());
150+
}
151+
152+
public CITagsBuilder withGitCommitHeadAuthorEmail(final PullRequestInfo pullRequestInfo) {
153+
return putTagValue(
154+
Tags.GIT_COMMIT_HEAD_AUTHOR_EMAIL,
155+
pullRequestInfo.getGitCommitHead().getAuthor().getEmail());
156+
}
157+
158+
public CITagsBuilder withGitCommitHeadAuthorDate(final PullRequestInfo pullRequestInfo) {
159+
return putTagValue(
160+
Tags.GIT_COMMIT_HEAD_AUTHOR_DATE,
161+
pullRequestInfo.getGitCommitHead().getAuthor().getIso8601Date());
162+
}
163+
164+
public CITagsBuilder withGitCommitHeadCommitterName(final PullRequestInfo pullRequestInfo) {
165+
return putTagValue(
166+
Tags.GIT_COMMIT_HEAD_COMMITTER_NAME,
167+
pullRequestInfo.getGitCommitHead().getCommitter().getName());
168+
}
169+
170+
public CITagsBuilder withGitCommitHeadCommitterEmail(final PullRequestInfo pullRequestInfo) {
171+
return putTagValue(
172+
Tags.GIT_COMMIT_HEAD_COMMITTER_EMAIL,
173+
pullRequestInfo.getGitCommitHead().getCommitter().getEmail());
174+
}
175+
176+
public CITagsBuilder withGitCommitHeadCommitterDate(final PullRequestInfo pullRequestInfo) {
177+
return putTagValue(
178+
Tags.GIT_COMMIT_HEAD_COMMITTER_DATE,
179+
pullRequestInfo.getGitCommitHead().getCommitter().getIso8601Date());
180+
}
181+
182+
public CITagsBuilder withGitCommitHeadMessage(final PullRequestInfo pullRequestInfo) {
183+
return putTagValue(
184+
Tags.GIT_COMMIT_HEAD_MESSAGE, pullRequestInfo.getGitCommitHead().getFullMessage());
137185
}
138186

139187
public CITagsBuilder withPullRequestNumber(final PullRequestInfo pullRequestInfo) {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CircleCIInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public CIInfo buildCIInfo() {
6161
@Nonnull
6262
@Override
6363
public PullRequestInfo buildPullRequestInfo() {
64-
return new PullRequestInfo(null, null, null, environment.get(CIRCLECI_PR_NUMBER));
64+
return new PullRequestInfo(null, null, CommitInfo.NOOP, environment.get(CIRCLECI_PR_NUMBER));
6565
}
6666

6767
private String buildPipelineUrl(final String pipelineId) {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/CodefreshInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public PullRequestInfo buildPullRequestInfo() {
5151
return new PullRequestInfo(
5252
normalizeBranch(environment.get(CF_PULL_REQUEST_TARGET_BRANCH)),
5353
null,
54-
null,
54+
CommitInfo.NOOP,
5555
environment.get(CF_PULL_REQUEST_NUMBER));
5656
}
5757

0 commit comments

Comments
 (0)