-
Notifications
You must be signed in to change notification settings - Fork 331
Expand file tree
/
Copy pathCircleCIInfo.java
More file actions
79 lines (67 loc) · 3.03 KB
/
CircleCIInfo.java
File metadata and controls
79 lines (67 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package datadog.trace.civisibility.ci;
import static datadog.trace.api.git.GitUtils.filterSensitiveInfo;
import static datadog.trace.api.git.GitUtils.normalizeBranch;
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.civisibility.ci.env.CiEnvironment;
import javax.annotation.Nonnull;
class CircleCIInfo implements CIProviderInfo {
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
public static final String CIRCLECI = "CIRCLECI";
public static final String CIRCLECI_PROVIDER_NAME = "circleci";
public static final String CIRCLECI_PIPELINE_ID = "CIRCLE_WORKFLOW_ID";
public static final String CIRCLECI_PIPELINE_NAME = "CIRCLE_PROJECT_REPONAME";
public static final String CIRCLECI_BUILD_URL = "CIRCLE_BUILD_URL";
public static final String CIRCLECI_BUILD_NUM = "CIRCLE_BUILD_NUM";
public static final String CIRCLECI_WORKSPACE_PATH = "CIRCLE_WORKING_DIRECTORY";
public static final String CIRCLECI_GIT_REPOSITORY_URL = "CIRCLE_REPOSITORY_URL";
public static final String CIRCLECI_GIT_COMMIT = "CIRCLE_SHA1";
public static final String CIRCLECI_GIT_BRANCH = "CIRCLE_BRANCH";
public static final String CIRCLECI_GIT_TAG = "CIRCLE_TAG";
public static final String CIRCLECI_JOB_NAME = "CIRCLE_JOB";
public static final String CIRCLECI_PR_NUMBER = "CIRCLE_PR_NUMBER";
private final CiEnvironment environment;
CircleCIInfo(CiEnvironment environment) {
this.environment = environment;
}
@Override
public GitInfo buildCIGitInfo() {
return new GitInfo(
filterSensitiveInfo(environment.get(CIRCLECI_GIT_REPOSITORY_URL)),
normalizeBranch(environment.get(CIRCLECI_GIT_BRANCH)),
normalizeTag(environment.get(CIRCLECI_GIT_TAG)),
new CommitInfo(environment.get(CIRCLECI_GIT_COMMIT)));
}
@Override
public CIInfo buildCIInfo() {
final String pipelineId = environment.get(CIRCLECI_PIPELINE_ID);
return CIInfo.builder(environment)
.ciProviderName(CIRCLECI_PROVIDER_NAME)
.ciPipelineId(pipelineId)
.ciPipelineName(environment.get(CIRCLECI_PIPELINE_NAME))
.ciPipelineUrl(buildPipelineUrl(pipelineId))
.ciJobName(environment.get(CIRCLECI_JOB_NAME))
.ciJobUrl(environment.get(CIRCLECI_BUILD_URL))
.ciWorkspace(expandTilde(environment.get(CIRCLECI_WORKSPACE_PATH)))
.ciEnvVars(CIRCLECI_PIPELINE_ID, CIRCLECI_BUILD_NUM)
.build();
}
@Nonnull
@Override
public PullRequestInfo buildPullRequestInfo() {
return new PullRequestInfo(null, null, null, environment.get(CIRCLECI_PR_NUMBER));
}
private String buildPipelineUrl(final String pipelineId) {
if (pipelineId == null) {
return null;
}
return String.format("https://app.circleci.com/pipelines/workflows/%s", pipelineId);
}
@Override
public Provider getProvider() {
return Provider.CIRCLECI;
}
}