@datadog/datadog-ci 0.17.12 → 0.17.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +6 -1
  2. package/dist/commands/junit/upload.js +1 -1
  3. package/dist/commands/lambda/__tests__/fixtures.d.ts +5 -1
  4. package/dist/commands/lambda/__tests__/fixtures.js +13 -2
  5. package/dist/commands/lambda/__tests__/functions/commons.test.js +221 -0
  6. package/dist/commands/lambda/__tests__/functions/instrument.test.js +64 -42
  7. package/dist/commands/lambda/__tests__/instrument.test.js +425 -4
  8. package/dist/commands/lambda/__tests__/prompt.test.d.ts +1 -0
  9. package/dist/commands/lambda/__tests__/prompt.test.js +216 -0
  10. package/dist/commands/lambda/__tests__/uninstrument.test.js +310 -4
  11. package/dist/commands/lambda/constants.d.ts +10 -0
  12. package/dist/commands/lambda/constants.js +36 -2
  13. package/dist/commands/lambda/functions/commons.d.ts +15 -0
  14. package/dist/commands/lambda/functions/commons.js +105 -2
  15. package/dist/commands/lambda/functions/instrument.d.ts +1 -1
  16. package/dist/commands/lambda/functions/instrument.js +17 -7
  17. package/dist/commands/lambda/functions/uninstrument.js +1 -0
  18. package/dist/commands/lambda/instrument.d.ts +2 -0
  19. package/dist/commands/lambda/instrument.js +100 -47
  20. package/dist/commands/lambda/interfaces.d.ts +4 -0
  21. package/dist/commands/lambda/prompt.d.ts +9 -0
  22. package/dist/commands/lambda/prompt.js +187 -0
  23. package/dist/commands/lambda/uninstrument.d.ts +1 -0
  24. package/dist/commands/lambda/uninstrument.js +68 -30
  25. package/dist/commands/synthetics/__tests__/cli.test.js +1 -0
  26. package/dist/commands/synthetics/__tests__/fixtures.js +1 -0
  27. package/dist/commands/synthetics/__tests__/run-test.test.js +48 -2
  28. package/dist/commands/synthetics/__tests__/utils.test.js +11 -0
  29. package/dist/commands/synthetics/command.d.ts +1 -0
  30. package/dist/commands/synthetics/command.js +11 -5
  31. package/dist/commands/synthetics/interfaces.d.ts +8 -3
  32. package/dist/commands/synthetics/interfaces.js +7 -3
  33. package/dist/commands/synthetics/reporters/default.js +5 -1
  34. package/dist/commands/synthetics/run-test.js +3 -1
  35. package/dist/commands/synthetics/utils.d.ts +3 -0
  36. package/dist/commands/synthetics/utils.js +20 -1
  37. package/dist/commands/trace/api.js +1 -1
  38. package/dist/helpers/__tests__/ci.test.js +71 -24
  39. package/dist/helpers/__tests__/user-provided-git.test.js +69 -27
  40. package/dist/helpers/ci.js +1 -1
  41. package/dist/helpers/user-provided-git.d.ts +2 -1
  42. package/dist/helpers/user-provided-git.js +18 -3
  43. package/package.json +1 -1
@@ -22,3 +22,6 @@ export declare const getTestsToTrigger: (api: APIHelper, triggerConfigs: Trigger
22
22
  }>;
23
23
  export declare const runTests: (api: APIHelper, testsToTrigger: TestPayload[]) => Promise<Trigger>;
24
24
  export declare const retry: <T, E extends Error>(func: () => Promise<T>, shouldRetryAfterWait: (retries: number, error: E) => number | undefined) => Promise<T>;
25
+ export declare const parseVariablesFromCli: (variableArguments: string[] | undefined, logFunction: (log: string) => void) => {
26
+ [key: string]: string;
27
+ } | undefined;
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.retry = exports.runTests = exports.getTestsToTrigger = exports.getReporter = exports.getResultDuration = exports.createSummary = exports.createTriggerResultMap = exports.waitForResults = exports.wait = exports.getSuites = exports.hasTestSucceeded = exports.hasResultPassed = exports.isCriticalError = exports.getStrictestExecutionRule = exports.getExecutionRule = exports.handleConfig = void 0;
34
+ exports.parseVariablesFromCli = exports.retry = exports.runTests = exports.getTestsToTrigger = exports.getReporter = exports.getResultDuration = exports.createSummary = exports.createTriggerResultMap = exports.waitForResults = exports.wait = exports.getSuites = exports.hasTestSucceeded = exports.hasResultPassed = exports.isCriticalError = exports.getStrictestExecutionRule = exports.getExecutionRule = exports.handleConfig = void 0;
35
35
  const fs = __importStar(require("fs"));
36
36
  const path = __importStar(require("path"));
37
37
  const url_1 = require("url");
@@ -435,3 +435,22 @@ const retry = (func, shouldRetryAfterWait) => __awaiter(void 0, void 0, void 0,
435
435
  return trier();
436
436
  });
437
437
  exports.retry = retry;
438
+ const parseVariablesFromCli = (variableArguments = [], logFunction) => {
439
+ const variables = {};
440
+ for (const variableArgument of variableArguments) {
441
+ const separatorIndex = variableArgument.indexOf('=');
442
+ if (separatorIndex === -1) {
443
+ logFunction(`Ignoring variable "${variableArgument}" as separator "=" was not found`);
444
+ continue;
445
+ }
446
+ if (separatorIndex === 0) {
447
+ logFunction(`Ignoring variable "${variableArgument}" as variable name is empty`);
448
+ continue;
449
+ }
450
+ const key = variableArgument.substring(0, separatorIndex);
451
+ const value = variableArgument.substring(separatorIndex + 1);
452
+ variables[key] = value;
453
+ }
454
+ return Object.keys(variables).length > 0 ? variables : undefined;
455
+ };
456
+ exports.parseVariablesFromCli = parseVariablesFromCli;
@@ -18,7 +18,7 @@ const utils_1 = require("../../helpers/utils");
18
18
  const maxBodyLength = Infinity;
19
19
  const reportCustomSpan = (request) => (customSpan, provider) => __awaiter(void 0, void 0, void 0, function* () {
20
20
  const gitSpanTags = yield git_1.getGitMetadata();
21
- const userGitSpanTags = user_provided_git_1.getUserGitMetadata();
21
+ const userGitSpanTags = user_provided_git_1.getUserGitSpanTags();
22
22
  return request({
23
23
  data: Object.assign(Object.assign({}, customSpan), { tags: Object.assign(Object.assign(Object.assign({}, gitSpanTags), userGitSpanTags), customSpan.tags) }),
24
24
  headers: {
@@ -8,6 +8,42 @@ const path_1 = __importDefault(require("path"));
8
8
  const ci_1 = require("../ci");
9
9
  const user_provided_git_1 = require("../user-provided-git");
10
10
  const CI_PROVIDERS = fs_1.default.readdirSync(path_1.default.join(__dirname, 'ci-env'));
11
+ const ciAppTagsToMetadata = (tags) => {
12
+ const metadata = {
13
+ ci: { job: {}, pipeline: {}, provider: {}, stage: {} },
14
+ git: { commit: { author: {}, committer: {} } },
15
+ };
16
+ Object.entries(tags).forEach(([tag, value]) => {
17
+ // Ignore JSON fixtures pipeline number that can't be parsed to numbers
18
+ if (!value || tag === 'ci.pipeline.number') {
19
+ return;
20
+ }
21
+ // Get Metadata nested property from tag name ('git.commit.author.name')
22
+ let currentAttr = metadata;
23
+ // Current attribute up to second to last
24
+ const properties = tag.split('.');
25
+ for (let i = 0; i < properties.length - 1; i++) {
26
+ currentAttr = currentAttr[properties[i]];
27
+ }
28
+ const attributeName = properties[properties.length - 1];
29
+ currentAttr[attributeName] = value;
30
+ });
31
+ return metadata;
32
+ };
33
+ const ddMetadataToSpanTags = (ddMetadata) => {
34
+ const spanTags = {};
35
+ Object.entries(ddMetadata).map(([key, value]) => {
36
+ let tagKey = key.split('_').slice(1).join('.').toLocaleLowerCase(); // Split and remove DD prefix
37
+ if (tagKey === 'git.repository.url') {
38
+ tagKey = 'git.repository_url';
39
+ }
40
+ else if (tagKey === 'ci.workspace.path') {
41
+ tagKey = 'ci.workspace_path';
42
+ }
43
+ spanTags[tagKey] = value;
44
+ });
45
+ return spanTags;
46
+ };
11
47
  describe('getCIMetadata', () => {
12
48
  test('non-recognized CI returns undefined', () => {
13
49
  process.env = {};
@@ -41,11 +77,44 @@ describe('getCIMetadata', () => {
41
77
  expect(ci_1.getCIMetadata()).toEqual(expectedMetadata);
42
78
  });
43
79
  });
80
+ describe.each(CI_PROVIDERS)('Ensure DD env variables override %s env variables', (ciProvider) => {
81
+ const DD_METADATA = {
82
+ DD_CI_JOB_NAME: 'DD_CI_JOB_NAME',
83
+ DD_CI_JOB_URL: 'DD_CI_JOB_URL',
84
+ DD_CI_PIPELINE_ID: 'DD_CI_PIPELINE_ID',
85
+ DD_CI_PIPELINE_NAME: 'DD_CI_PIPELINE_NAME',
86
+ DD_CI_PIPELINE_NUMBER: 'DD_CI_PIPELINE_NUMBER',
87
+ DD_CI_PIPELINE_URL: 'DD_CI_PIPELINE_URL',
88
+ DD_CI_PROVIDER_NAME: 'DD_CI_PROVIDER_NAME',
89
+ DD_CI_STAGE_NAME: 'DD_CI_STAGE_NAME',
90
+ DD_CI_WORKSPACE_PATH: 'DD_CI_WORKSPACE_PATH',
91
+ DD_GIT_BRANCH: 'DD_GIT_BRANCH',
92
+ DD_GIT_COMMIT_AUTHOR_DATE: 'DD_GIT_COMMIT_AUTHOR_DATE',
93
+ DD_GIT_COMMIT_AUTHOR_EMAIL: 'DD_GIT_COMMIT_AUTHOR_EMAIL',
94
+ DD_GIT_COMMIT_AUTHOR_NAME: 'DD_GIT_COMMIT_AUTHOR_NAME',
95
+ DD_GIT_COMMIT_COMMITTER_DATE: 'DD_GIT_COMMIT_COMMITTER_DATE',
96
+ DD_GIT_COMMIT_COMMITTER_EMAIL: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
97
+ DD_GIT_COMMIT_COMMITTER_NAME: 'DD_GIT_COMMIT_COMMITTER_NAME',
98
+ DD_GIT_COMMIT_MESSAGE: 'DD_GIT_COMMIT_MESSAGE',
99
+ DD_GIT_COMMIT_SHA: 'DD_GIT_COMMIT_SHA',
100
+ DD_GIT_REPOSITORY_URL: 'DD_GIT_REPOSITORY_URL',
101
+ DD_GIT_TAG: 'DD_GIT_TAG',
102
+ };
103
+ const expectedMetadata = ciAppTagsToMetadata(ddMetadataToSpanTags(DD_METADATA));
104
+ delete expectedMetadata.git.branch;
105
+ const assertions = require(path_1.default.join(__dirname, 'ci-env', ciProvider));
106
+ it.each(assertions)('spec %#', (env, tags) => {
107
+ process.env = Object.assign(Object.assign({}, env), DD_METADATA);
108
+ const ciMetadata = ci_1.getCIMetadata();
109
+ ciMetadata === null || ciMetadata === void 0 ? true : delete ciMetadata.git.branch;
110
+ expect(ciMetadata).toEqual(expectedMetadata);
111
+ });
112
+ });
44
113
  });
45
114
  describe('ci spec', () => {
46
115
  test('returns an empty object if the CI is not supported', () => {
47
116
  process.env = {};
48
- const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserGitMetadata());
117
+ const tags = Object.assign(Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserCISpanTags()), user_provided_git_1.getUserGitSpanTags());
49
118
  expect(tags).toEqual({});
50
119
  });
51
120
  CI_PROVIDERS.forEach((ciProvider) => {
@@ -53,31 +122,9 @@ describe('ci spec', () => {
53
122
  assertions.forEach(([env, expectedSpanTags], index) => {
54
123
  test(`reads env info for spec ${index} from ${ciProvider}`, () => {
55
124
  process.env = env;
56
- const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserGitMetadata());
125
+ const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserGitSpanTags());
57
126
  expect(tags).toEqual(expectedSpanTags);
58
127
  });
59
128
  });
60
129
  });
61
130
  });
62
- const ciAppTagsToMetadata = (tags) => {
63
- const metadata = {
64
- ci: { job: {}, pipeline: {}, provider: {}, stage: {} },
65
- git: { commit: { author: {}, committer: {} } },
66
- };
67
- Object.entries(tags).forEach(([tag, value]) => {
68
- // Ignore JSON fixtures pipeline number that can't be parsed to numbers
69
- if (!value || tag === 'ci.pipeline.number') {
70
- return;
71
- }
72
- // Get Metadata nested property from tag name ('git.commit.author.name')
73
- let currentAttr = metadata;
74
- // Current attribute up to second to last
75
- const properties = tag.split('.');
76
- for (let i = 0; i < properties.length - 1; i++) {
77
- currentAttr = currentAttr[properties[i]];
78
- }
79
- const attributeName = properties[properties.length - 1];
80
- currentAttr[attributeName] = value;
81
- });
82
- return metadata;
83
- };
@@ -2,19 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tags_1 = require("../tags");
4
4
  const user_provided_git_1 = require("../user-provided-git");
5
- describe('getUserGitMetadata', () => {
5
+ describe('getUserGitSpanTags', () => {
6
+ const DD_GIT_METADATA = {
7
+ DD_GIT_BRANCH: 'DD_GIT_BRANCH',
8
+ DD_GIT_COMMIT_AUTHOR_DATE: 'DD_GIT_COMMIT_AUTHOR_DATE',
9
+ DD_GIT_COMMIT_AUTHOR_EMAIL: 'DD_GIT_COMMIT_AUTHOR_EMAIL',
10
+ DD_GIT_COMMIT_AUTHOR_NAME: 'DD_GIT_COMMIT_AUTHOR_NAME',
11
+ DD_GIT_COMMIT_COMMITTER_DATE: 'DD_GIT_COMMIT_COMMITTER_DATE',
12
+ DD_GIT_COMMIT_COMMITTER_EMAIL: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
13
+ DD_GIT_COMMIT_COMMITTER_NAME: 'DD_GIT_COMMIT_COMMITTER_NAME',
14
+ DD_GIT_COMMIT_MESSAGE: 'DD_GIT_COMMIT_MESSAGE',
15
+ DD_GIT_COMMIT_SHA: 'DD_GIT_COMMIT_SHA',
16
+ DD_GIT_REPOSITORY_URL: 'DD_GIT_REPOSITORY_URL',
17
+ };
6
18
  it('reads user defined git metadata successfully', () => {
7
- process.env.DD_GIT_COMMIT_SHA = 'DD_GIT_COMMIT_SHA';
8
- process.env.DD_GIT_REPOSITORY_URL = 'DD_GIT_REPOSITORY_URL';
9
- process.env.DD_GIT_BRANCH = 'DD_GIT_BRANCH';
10
- process.env.DD_GIT_COMMIT_MESSAGE = 'DD_GIT_COMMIT_MESSAGE';
11
- process.env.DD_GIT_COMMIT_AUTHOR_NAME = 'DD_GIT_COMMIT_AUTHOR_NAME';
12
- process.env.DD_GIT_COMMIT_AUTHOR_EMAIL = 'DD_GIT_COMMIT_AUTHOR_EMAIL';
13
- process.env.DD_GIT_COMMIT_AUTHOR_DATE = 'DD_GIT_COMMIT_AUTHOR_DATE';
14
- process.env.DD_GIT_COMMIT_COMMITTER_NAME = 'DD_GIT_COMMIT_COMMITTER_NAME';
15
- process.env.DD_GIT_COMMIT_COMMITTER_EMAIL = 'DD_GIT_COMMIT_COMMITTER_EMAIL';
16
- process.env.DD_GIT_COMMIT_COMMITTER_DATE = 'DD_GIT_COMMIT_COMMITTER_DATE';
17
- const result = user_provided_git_1.getUserGitMetadata();
19
+ process.env = Object.assign({}, DD_GIT_METADATA);
20
+ const result = user_provided_git_1.getUserGitSpanTags();
18
21
  expect(result).toEqual({
19
22
  [tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
20
23
  [tags_1.GIT_BRANCH]: 'DD_GIT_BRANCH',
@@ -29,8 +32,8 @@ describe('getUserGitMetadata', () => {
29
32
  });
30
33
  });
31
34
  it('does not include empty values', () => {
32
- delete process.env.DD_GIT_COMMIT_SHA;
33
- const result = user_provided_git_1.getUserGitMetadata();
35
+ process.env = Object.assign(Object.assign({}, DD_GIT_METADATA), { DD_GIT_COMMIT_SHA: undefined });
36
+ const result = user_provided_git_1.getUserGitSpanTags();
34
37
  expect(result).toEqual({
35
38
  [tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
36
39
  [tags_1.GIT_BRANCH]: 'DD_GIT_BRANCH',
@@ -44,11 +47,12 @@ describe('getUserGitMetadata', () => {
44
47
  });
45
48
  });
46
49
  it('overwrites branch when tag is available', () => {
47
- process.env.DD_GIT_TAG = 'DD_GIT_TAG';
48
- const result = user_provided_git_1.getUserGitMetadata();
50
+ process.env = Object.assign(Object.assign({}, DD_GIT_METADATA), { DD_GIT_TAG: 'DD_GIT_TAG' });
51
+ const result = user_provided_git_1.getUserGitSpanTags();
49
52
  expect(result).toEqual({
50
53
  [tags_1.GIT_TAG]: 'DD_GIT_TAG',
51
54
  [tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
55
+ [tags_1.GIT_SHA]: 'DD_GIT_COMMIT_SHA',
52
56
  [tags_1.GIT_COMMIT_MESSAGE]: 'DD_GIT_COMMIT_MESSAGE',
53
57
  [tags_1.GIT_COMMIT_COMMITTER_DATE]: 'DD_GIT_COMMIT_COMMITTER_DATE',
54
58
  [tags_1.GIT_COMMIT_COMMITTER_EMAIL]: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
@@ -59,17 +63,55 @@ describe('getUserGitMetadata', () => {
59
63
  });
60
64
  });
61
65
  it('returns an empty object if no user git is defined', () => {
62
- delete process.env.DD_GIT_REPOSITORY_URL;
63
- delete process.env.DD_GIT_BRANCH;
64
- delete process.env.DD_GIT_TAG;
65
- delete process.env.DD_GIT_COMMIT_MESSAGE;
66
- delete process.env.DD_GIT_COMMIT_AUTHOR_NAME;
67
- delete process.env.DD_GIT_COMMIT_AUTHOR_EMAIL;
68
- delete process.env.DD_GIT_COMMIT_AUTHOR_DATE;
69
- delete process.env.DD_GIT_COMMIT_COMMITTER_NAME;
70
- delete process.env.DD_GIT_COMMIT_COMMITTER_EMAIL;
71
- delete process.env.DD_GIT_COMMIT_COMMITTER_DATE;
72
- const result = user_provided_git_1.getUserGitMetadata();
66
+ process.env = {};
67
+ const result = user_provided_git_1.getUserGitSpanTags();
68
+ expect(result).toEqual({});
69
+ });
70
+ });
71
+ describe('getUserCISpanTags', () => {
72
+ const DD_CI_METADATA = {
73
+ DD_CI_JOB_NAME: 'DD_CI_JOB_NAME',
74
+ DD_CI_JOB_URL: 'DD_CI_JOB_URL',
75
+ DD_CI_PIPELINE_ID: 'DD_CI_PIPELINE_ID',
76
+ DD_CI_PIPELINE_NAME: 'DD_CI_PIPELINE_NAME',
77
+ DD_CI_PIPELINE_NUMBER: 'DD_CI_PIPELINE_NUMBER',
78
+ DD_CI_PIPELINE_URL: 'DD_CI_PIPELINE_URL',
79
+ DD_CI_PROVIDER_NAME: 'DD_CI_PROVIDER_NAME',
80
+ DD_CI_STAGE_NAME: 'DD_CI_STAGE_NAME',
81
+ DD_CI_WORKSPACE_PATH: 'DD_CI_WORKSPACE_PATH',
82
+ };
83
+ it('reads user defined CI metadata successfully', () => {
84
+ process.env = Object.assign({}, DD_CI_METADATA);
85
+ const result = user_provided_git_1.getUserCISpanTags();
86
+ expect(result).toEqual({
87
+ [tags_1.CI_JOB_NAME]: 'DD_CI_JOB_NAME',
88
+ [tags_1.CI_JOB_URL]: 'DD_CI_JOB_URL',
89
+ [tags_1.CI_PIPELINE_ID]: 'DD_CI_PIPELINE_ID',
90
+ [tags_1.CI_PIPELINE_NAME]: 'DD_CI_PIPELINE_NAME',
91
+ [tags_1.CI_PIPELINE_NUMBER]: 'DD_CI_PIPELINE_NUMBER',
92
+ [tags_1.CI_PIPELINE_URL]: 'DD_CI_PIPELINE_URL',
93
+ [tags_1.CI_PROVIDER_NAME]: 'DD_CI_PROVIDER_NAME',
94
+ [tags_1.CI_STAGE_NAME]: 'DD_CI_STAGE_NAME',
95
+ [tags_1.CI_WORKSPACE_PATH]: 'DD_CI_WORKSPACE_PATH',
96
+ });
97
+ });
98
+ it('does not include empty values', () => {
99
+ process.env = Object.assign(Object.assign({}, DD_CI_METADATA), { DD_CI_PIPELINE_ID: undefined });
100
+ const result = user_provided_git_1.getUserCISpanTags();
101
+ expect(result).toEqual({
102
+ [tags_1.CI_JOB_NAME]: 'DD_CI_JOB_NAME',
103
+ [tags_1.CI_JOB_URL]: 'DD_CI_JOB_URL',
104
+ [tags_1.CI_PIPELINE_NAME]: 'DD_CI_PIPELINE_NAME',
105
+ [tags_1.CI_PIPELINE_NUMBER]: 'DD_CI_PIPELINE_NUMBER',
106
+ [tags_1.CI_PIPELINE_URL]: 'DD_CI_PIPELINE_URL',
107
+ [tags_1.CI_PROVIDER_NAME]: 'DD_CI_PROVIDER_NAME',
108
+ [tags_1.CI_STAGE_NAME]: 'DD_CI_STAGE_NAME',
109
+ [tags_1.CI_WORKSPACE_PATH]: 'DD_CI_WORKSPACE_PATH',
110
+ });
111
+ });
112
+ it('returns an empty object if no user CI is defined', () => {
113
+ process.env = {};
114
+ const result = user_provided_git_1.getUserCISpanTags();
73
115
  expect(result).toEqual({});
74
116
  });
75
117
  });
@@ -288,7 +288,7 @@ const getCISpanTags = () => {
288
288
  };
289
289
  exports.getCISpanTags = getCISpanTags;
290
290
  const getCIMetadata = () => {
291
- const tags = Object.assign(Object.assign({}, exports.getCISpanTags()), user_provided_git_1.getUserGitMetadata());
291
+ const tags = Object.assign(Object.assign(Object.assign({}, exports.getCISpanTags()), user_provided_git_1.getUserCISpanTags()), user_provided_git_1.getUserGitSpanTags());
292
292
  if (!tags || !Object.keys(tags).length) {
293
293
  return;
294
294
  }
@@ -1 +1,2 @@
1
- export declare const getUserGitMetadata: () => {};
1
+ export declare const getUserGitSpanTags: () => {};
2
+ export declare const getUserCISpanTags: () => {};
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserGitMetadata = void 0;
3
+ exports.getUserCISpanTags = exports.getUserGitSpanTags = void 0;
4
4
  const tags_1 = require("./tags");
5
5
  const utils_1 = require("./utils");
6
- const getUserGitMetadata = () => {
6
+ const getUserGitSpanTags = () => {
7
7
  const { DD_GIT_REPOSITORY_URL, DD_GIT_COMMIT_SHA, DD_GIT_BRANCH, DD_GIT_TAG, DD_GIT_COMMIT_MESSAGE, DD_GIT_COMMIT_AUTHOR_NAME, DD_GIT_COMMIT_AUTHOR_EMAIL, DD_GIT_COMMIT_AUTHOR_DATE, DD_GIT_COMMIT_COMMITTER_NAME, DD_GIT_COMMIT_COMMITTER_EMAIL, DD_GIT_COMMIT_COMMITTER_DATE, } = process.env;
8
8
  let branch = utils_1.normalizeRef(DD_GIT_BRANCH);
9
9
  let tag = utils_1.normalizeRef(DD_GIT_TAG);
@@ -28,4 +28,19 @@ const getUserGitMetadata = () => {
28
28
  [tags_1.GIT_COMMIT_AUTHOR_NAME]: DD_GIT_COMMIT_AUTHOR_NAME,
29
29
  });
30
30
  };
31
- exports.getUserGitMetadata = getUserGitMetadata;
31
+ exports.getUserGitSpanTags = getUserGitSpanTags;
32
+ const getUserCISpanTags = () => {
33
+ const { DD_CI_JOB_NAME, DD_CI_JOB_URL, DD_CI_PIPELINE_ID, DD_CI_PIPELINE_NAME, DD_CI_PIPELINE_NUMBER, DD_CI_PIPELINE_URL, DD_CI_PROVIDER_NAME, DD_CI_STAGE_NAME, DD_CI_WORKSPACE_PATH, } = process.env;
34
+ return utils_1.removeEmptyValues({
35
+ [tags_1.CI_JOB_NAME]: DD_CI_JOB_NAME,
36
+ [tags_1.CI_JOB_URL]: DD_CI_JOB_URL,
37
+ [tags_1.CI_PIPELINE_ID]: DD_CI_PIPELINE_ID,
38
+ [tags_1.CI_PIPELINE_NAME]: DD_CI_PIPELINE_NAME,
39
+ [tags_1.CI_PIPELINE_NUMBER]: DD_CI_PIPELINE_NUMBER,
40
+ [tags_1.CI_PIPELINE_URL]: DD_CI_PIPELINE_URL,
41
+ [tags_1.CI_PROVIDER_NAME]: DD_CI_PROVIDER_NAME,
42
+ [tags_1.CI_STAGE_NAME]: DD_CI_STAGE_NAME,
43
+ [tags_1.CI_WORKSPACE_PATH]: DD_CI_WORKSPACE_PATH,
44
+ });
45
+ };
46
+ exports.getUserCISpanTags = getUserCISpanTags;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datadog/datadog-ci",
3
- "version": "0.17.12",
3
+ "version": "0.17.13",
4
4
  "description": "Run datadog actions from the CI.",
5
5
  "repository": "https://github.com/DataDog/datadog-ci",
6
6
  "license": "Apache-2.0",