Skip to content

Commit 409bc13

Browse files
authored
feat(ci-cd) Add ci.pipeline.display_name tag for Buildkite (#12079)
Add ci.pipeline.display_name tag for Buildkite ci.pipeline.name currently carries the Buildkite pipeline slug, not the real pipeline name, but it can't be changed without breaking backend fingerprinting that keys off its current value. This adds a new, additive tag sourced from BUILDKITE_PIPELINE_NAME so the real pipeline name is available without touching existing behavior. Also renames BuildkiteInfo.BUILDKITE_PIPELINE_NAME to BUILDKITE_PIPELINE_SLUG_ENV_VAR since it actually holds the BUILDKITE_PIPELINE_SLUG env var name, which was misleading now that a real pipeline-name-backed constant exists alongside it. Update dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BuildkiteInfo.java Co-authored-by: Daniel Mohedano <daniel.mohedano@datadoghq.com> Update dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/BuildkiteInfo.java Co-authored-by: Daniel Mohedano <daniel.mohedano@datadoghq.com> Co-authored-by: andrea.prieguerodriguez <andrea.prieguerodriguez@datadoghq.com>
1 parent 4e1a3cc commit 409bc13

5 files changed

Lines changed: 70 additions & 3 deletions

File tree

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class BuildkiteInfo implements CIProviderInfo {
2323
public static final String BUILDKITE = "BUILDKITE";
2424
public static final String BUILDKITE_PROVIDER_NAME = "buildkite";
2525
public static final String BUILDKITE_PIPELINE_ID = "BUILDKITE_BUILD_ID";
26-
public static final String BUILDKITE_PIPELINE_NAME = "BUILDKITE_PIPELINE_SLUG";
26+
public static final String BUILDKITE_PIPELINE_SLUG = "BUILDKITE_PIPELINE_SLUG";
27+
public static final String BUILDKITE_PIPELINE_DISPLAY_NAME = "BUILDKITE_PIPELINE_NAME";
2728
public static final String BUILDKITE_PIPELINE_NUMBER = "BUILDKITE_BUILD_NUMBER";
2829
public static final String BUILDKITE_BUILD_URL = "BUILDKITE_BUILD_URL";
2930
public static final String BUILDKITE_JOB_ID = "BUILDKITE_JOB_ID";
@@ -67,7 +68,8 @@ public CIInfo buildCIInfo() {
6768
return CIInfo.builder(environment)
6869
.ciProviderName(BUILDKITE_PROVIDER_NAME)
6970
.ciPipelineId(environment.get(BUILDKITE_PIPELINE_ID))
70-
.ciPipelineName(environment.get(BUILDKITE_PIPELINE_NAME))
71+
.ciPipelineName(environment.get(BUILDKITE_PIPELINE_SLUG))
72+
.ciPipelineDisplayName(environment.get(BUILDKITE_PIPELINE_DISPLAY_NAME))
7173
.ciPipelineNumber(environment.get(BUILDKITE_PIPELINE_NUMBER))
7274
.ciPipelineUrl(ciPipelineUrl)
7375
.ciJobId(environment.get(BUILDKITE_JOB_ID))

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public static final class Builder {
2222
private String ciProviderName;
2323
private String ciPipelineId;
2424
private String ciPipelineName;
25+
private String ciPipelineDisplayName;
2526
private String ciStageName;
2627
private String ciJobId;
2728
private String ciJobName;
@@ -53,6 +54,11 @@ public Builder ciPipelineName(String ciPipelineName) {
5354
return this;
5455
}
5556

57+
public Builder ciPipelineDisplayName(String ciPipelineDisplayName) {
58+
this.ciPipelineDisplayName = ciPipelineDisplayName;
59+
return this;
60+
}
61+
5662
public Builder ciStageName(String ciStageName) {
5763
this.ciStageName = ciStageName;
5864
return this;
@@ -123,6 +129,7 @@ public CIInfo build() {
123129
ciProviderName,
124130
ciPipelineId,
125131
ciPipelineName,
132+
ciPipelineDisplayName,
126133
ciStageName,
127134
ciJobId,
128135
ciJobName,
@@ -140,6 +147,7 @@ public CIInfo build() {
140147
private final String ciProviderName;
141148
private final String ciPipelineId;
142149
private final String ciPipelineName;
150+
private final String ciPipelineDisplayName;
143151
private final String ciStageName;
144152
private final String ciJobId;
145153
private final String ciJobName;
@@ -153,13 +161,14 @@ public CIInfo build() {
153161
private final Map<String, String> additionalTags;
154162

155163
public CIInfo() {
156-
this(null, null, null, null, null, null, null, null, null, null, null, null, null, null);
164+
this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
157165
}
158166

159167
public CIInfo(
160168
String ciProviderName,
161169
String ciPipelineId,
162170
String ciPipelineName,
171+
String ciPipelineDisplayName,
163172
String ciStageName,
164173
String ciJobId,
165174
String ciJobName,
@@ -174,6 +183,7 @@ public CIInfo(
174183
this.ciProviderName = ciProviderName;
175184
this.ciPipelineId = ciPipelineId;
176185
this.ciPipelineName = ciPipelineName;
186+
this.ciPipelineDisplayName = ciPipelineDisplayName;
177187
this.ciStageName = ciStageName;
178188
this.ciJobId = ciJobId;
179189
this.ciJobName = ciJobName;
@@ -199,6 +209,10 @@ public String getCiPipelineName() {
199209
return ciPipelineName;
200210
}
201211

212+
public String getCiPipelineDisplayName() {
213+
return ciPipelineDisplayName;
214+
}
215+
202216
public String getCiStageName() {
203217
return ciStageName;
204218
}
@@ -267,6 +281,7 @@ public boolean equals(Object o) {
267281
return Objects.equals(ciProviderName, ciInfo.ciProviderName)
268282
&& Objects.equals(ciPipelineId, ciInfo.ciPipelineId)
269283
&& Objects.equals(ciPipelineName, ciInfo.ciPipelineName)
284+
&& Objects.equals(ciPipelineDisplayName, ciInfo.ciPipelineDisplayName)
270285
&& Objects.equals(ciStageName, ciInfo.ciStageName)
271286
&& Objects.equals(ciJobId, ciInfo.ciJobId)
272287
&& Objects.equals(ciJobName, ciInfo.ciJobName)
@@ -286,6 +301,7 @@ public int hashCode() {
286301
hash = 31 * hash + (ciProviderName == null ? 0 : ciProviderName.hashCode());
287302
hash = 31 * hash + (ciPipelineId == null ? 0 : ciPipelineId.hashCode());
288303
hash = 31 * hash + (ciPipelineName == null ? 0 : ciPipelineName.hashCode());
304+
hash = 31 * hash + (ciPipelineDisplayName == null ? 0 : ciPipelineDisplayName.hashCode());
289305
hash = 31 * hash + (ciStageName == null ? 0 : ciStageName.hashCode());
290306
hash = 31 * hash + (ciJobId == null ? 0 : ciJobId.hashCode());
291307
hash = 31 * hash + (ciJobName == null ? 0 : ciJobName.hashCode());
@@ -312,6 +328,9 @@ public String toString() {
312328
+ ", ciPipelineName='"
313329
+ ciPipelineName
314330
+ '\''
331+
+ ", ciPipelineDisplayName='"
332+
+ ciPipelineDisplayName
333+
+ '\''
315334
+ ", ciStageName='"
316335
+ ciStageName
317336
+ '\''

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public Map<String, String> getCiTags(CIInfo ciInfo, PullRequestInfo pullRequestI
2929
.withCiProviderName(ciInfo.getCiProviderName())
3030
.withCiPipelineId(ciInfo.getCiPipelineId())
3131
.withCiPipelineName(ciInfo.getCiPipelineName())
32+
.withCiPipelineDisplayName(ciInfo.getCiPipelineDisplayName())
3233
.withCiStageName(ciInfo.getCiStageName())
3334
.withCiJobName(ciInfo.getCiJobName())
3435
.withCiJobId(ciInfo.getCiJobId())
@@ -82,6 +83,10 @@ public CITagsBuilder withCiPipelineName(final String ciPipelineName) {
8283
return putTagValue(Tags.CI_PIPELINE_NAME, ciPipelineName);
8384
}
8485

86+
public CITagsBuilder withCiPipelineDisplayName(final String ciPipelineDisplayName) {
87+
return putTagValue(Tags.CI_PIPELINE_DISPLAY_NAME, ciPipelineDisplayName);
88+
}
89+
8590
public CITagsBuilder withCiPipelineNumber(final String ciPipelineNumber) {
8691
return putTagValue(Tags.CI_PIPELINE_NUMBER, ciPipelineNumber);
8792
}

dd-java-agent/agent-ci-visibility/src/test/resources/ci/buildkite.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,46 @@
730730
"git.tag": "0.0.2"
731731
}
732732
],
733+
[
734+
{
735+
"BUILDKITE": "true",
736+
"BUILDKITE_BRANCH": "master",
737+
"BUILDKITE_BUILD_AUTHOR": "buildkite-git-commit-author-name",
738+
"BUILDKITE_BUILD_AUTHOR_EMAIL": "buildkite-git-commit-author-email@datadoghq.com",
739+
"BUILDKITE_BUILD_CHECKOUT_PATH": "/foo/bar",
740+
"BUILDKITE_BUILD_ID": "buildkite-pipeline-id",
741+
"BUILDKITE_BUILD_NUMBER": "buildkite-pipeline-number",
742+
"BUILDKITE_BUILD_URL": "https://buildkite-build-url.com",
743+
"BUILDKITE_COMMIT": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
744+
"BUILDKITE_JOB_ID": "buildkite-job-id",
745+
"BUILDKITE_MESSAGE": "buildkite-git-commit-message",
746+
"BUILDKITE_PIPELINE_NAME": "Buildkite Pipeline Display Name",
747+
"BUILDKITE_PIPELINE_SLUG": "buildkite-pipeline-name",
748+
"BUILDKITE_PULL_REQUEST": "false",
749+
"BUILDKITE_PULL_REQUEST_BASE_BRANCH": "",
750+
"BUILDKITE_REPO": "http://hostname.com/repo.git",
751+
"BUILDKITE_TAG": "",
752+
"DD_TEST_CASE_NAME": "pipeline-display-name-from-buildkite-pipeline-name"
753+
},
754+
{
755+
"_dd.ci.env_vars": "{\"BUILDKITE_BUILD_ID\":\"buildkite-pipeline-id\",\"BUILDKITE_JOB_ID\":\"buildkite-job-id\"}",
756+
"ci.job.id": "buildkite-job-id",
757+
"ci.job.url": "https://buildkite-build-url.com#buildkite-job-id",
758+
"ci.pipeline.display_name": "Buildkite Pipeline Display Name",
759+
"ci.pipeline.id": "buildkite-pipeline-id",
760+
"ci.pipeline.name": "buildkite-pipeline-name",
761+
"ci.pipeline.number": "buildkite-pipeline-number",
762+
"ci.pipeline.url": "https://buildkite-build-url.com",
763+
"ci.provider.name": "buildkite",
764+
"ci.workspace_path": "/foo/bar",
765+
"git.branch": "master",
766+
"git.commit.author.email": "buildkite-git-commit-author-email@datadoghq.com",
767+
"git.commit.author.name": "buildkite-git-commit-author-name",
768+
"git.commit.message": "buildkite-git-commit-message",
769+
"git.commit.sha": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
770+
"git.repository_url": "http://hostname.com/repo.git"
771+
}
772+
],
733773
[
734774
{
735775
"BUILDKITE": "true",

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Tags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ public class Tags {
128128
public static final String CI_PROVIDER_NAME = "ci.provider.name";
129129
public static final String CI_PIPELINE_ID = "ci.pipeline.id";
130130
public static final String CI_PIPELINE_NAME = "ci.pipeline.name";
131+
public static final String CI_PIPELINE_DISPLAY_NAME = "ci.pipeline.display_name";
131132
public static final String CI_PIPELINE_NUMBER = "ci.pipeline.number";
132133
public static final String CI_PIPELINE_URL = "ci.pipeline.url";
133134
public static final String CI_STAGE_NAME = "ci.stage.name";

0 commit comments

Comments
 (0)