@datadog/datadog-ci 0.17.9 → 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.
- package/LICENSE-3rdparty.csv +2 -0
- package/README.md +9 -2
- package/dist/{commands/dependencies/index.d.ts → cli.d.ts} +0 -0
- package/dist/cli.js +34 -0
- package/dist/commands/{dsyms/index.d.ts → dependencies/cli.d.ts} +0 -0
- package/dist/commands/dependencies/{index.js → cli.js} +0 -0
- package/dist/commands/dependencies/upload.d.ts +1 -1
- package/dist/commands/{git-metadata/index.d.ts → dsyms/cli.d.ts} +0 -0
- package/dist/commands/dsyms/{index.js → cli.js} +0 -0
- package/dist/commands/dsyms/upload.d.ts +1 -1
- package/dist/commands/{junit/index.d.ts → git-metadata/cli.d.ts} +0 -0
- package/dist/commands/git-metadata/{index.js → cli.js} +0 -0
- package/dist/commands/git-metadata/upload.d.ts +1 -1
- package/dist/commands/git-metadata/upload.js +6 -1
- package/dist/commands/{lambda/index.d.ts → junit/cli.d.ts} +0 -0
- package/dist/commands/junit/{index.js → cli.js} +0 -0
- package/dist/commands/junit/upload.d.ts +1 -1
- package/dist/commands/junit/upload.js +1 -1
- package/dist/commands/lambda/__tests__/fixtures.d.ts +5 -1
- package/dist/commands/lambda/__tests__/fixtures.js +13 -2
- package/dist/commands/lambda/__tests__/functions/commons.test.js +400 -0
- package/dist/commands/lambda/__tests__/functions/instrument.test.js +229 -117
- package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +80 -7
- package/dist/commands/lambda/__tests__/instrument.test.js +542 -111
- package/dist/commands/{sourcemaps/index.d.ts → lambda/__tests__/prompt.test.d.ts} +0 -0
- package/dist/commands/lambda/__tests__/prompt.test.js +216 -0
- package/dist/commands/lambda/__tests__/uninstrument.test.js +381 -17
- package/dist/commands/{trace/index.d.ts → lambda/cli.d.ts} +0 -0
- package/dist/commands/lambda/{index.js → cli.js} +0 -0
- package/dist/commands/lambda/constants.d.ts +27 -6
- package/dist/commands/lambda/constants.js +63 -6
- package/dist/commands/lambda/functions/commons.d.ts +49 -4
- package/dist/commands/lambda/functions/commons.js +198 -7
- package/dist/commands/lambda/functions/instrument.d.ts +5 -14
- package/dist/commands/lambda/functions/instrument.js +63 -80
- package/dist/commands/lambda/functions/uninstrument.d.ts +3 -2
- package/dist/commands/lambda/functions/uninstrument.js +23 -11
- package/dist/commands/lambda/instrument.d.ts +2 -1
- package/dist/commands/lambda/instrument.js +112 -58
- package/dist/commands/lambda/interfaces.d.ts +4 -1
- package/dist/commands/lambda/loggroup.js +3 -1
- package/dist/commands/lambda/prompt.d.ts +9 -0
- package/dist/commands/lambda/prompt.js +187 -0
- package/dist/commands/lambda/uninstrument.d.ts +2 -0
- package/dist/commands/lambda/uninstrument.js +107 -30
- package/dist/commands/sourcemaps/cli.d.ts +1 -0
- package/dist/commands/sourcemaps/{index.js → cli.js} +0 -0
- package/dist/commands/sourcemaps/upload.d.ts +1 -1
- package/dist/commands/synthetics/__tests__/cli.test.js +36 -13
- package/dist/commands/synthetics/__tests__/fixtures.js +1 -0
- package/dist/commands/synthetics/__tests__/run-test.test.js +48 -2
- package/dist/commands/synthetics/__tests__/utils.test.js +11 -4
- package/dist/commands/synthetics/__tests__/websocket.test.js +3 -3
- package/dist/commands/synthetics/cli.d.ts +1 -26
- package/dist/commands/synthetics/cli.js +2 -227
- package/dist/commands/synthetics/command.d.ts +27 -0
- package/dist/commands/synthetics/command.js +236 -0
- package/dist/commands/synthetics/index.d.ts +5 -1
- package/dist/commands/synthetics/index.js +31 -2
- package/dist/commands/synthetics/interfaces.d.ts +8 -3
- package/dist/commands/synthetics/interfaces.js +7 -3
- package/dist/commands/synthetics/reporters/default.js +5 -1
- package/dist/commands/synthetics/run-test.js +3 -1
- package/dist/commands/synthetics/utils.d.ts +3 -3
- package/dist/commands/synthetics/utils.js +17 -8
- package/dist/commands/trace/api.js +1 -1
- package/dist/commands/trace/cli.d.ts +1 -0
- package/dist/commands/trace/{index.js → cli.js} +0 -0
- package/dist/commands/trace/trace.d.ts +1 -1
- package/dist/helpers/__tests__/ci.test.js +97 -136
- package/dist/helpers/__tests__/user-provided-git.test.js +81 -27
- package/dist/helpers/__tests__/utils.test.js +4 -0
- package/dist/helpers/ci.js +54 -95
- package/dist/helpers/interfaces.d.ts +28 -2
- package/dist/helpers/user-provided-git.d.ts +2 -1
- package/dist/helpers/user-provided-git.js +29 -5
- package/dist/helpers/utils.d.ts +4 -0
- package/dist/helpers/utils.js +18 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +23 -31
- package/package.json +10 -8
|
@@ -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.
|
|
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,13 +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
|
|
439
|
-
const
|
|
440
|
-
for (const
|
|
441
|
-
|
|
442
|
-
|
|
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;
|
|
443
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;
|
|
444
453
|
}
|
|
445
|
-
return
|
|
454
|
+
return Object.keys(variables).length > 0 ? variables : undefined;
|
|
446
455
|
};
|
|
447
|
-
exports.
|
|
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.
|
|
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: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from 'clipanion';
|
|
2
2
|
import { Provider } from './interfaces';
|
|
3
3
|
export declare class TraceCommand extends Command {
|
|
4
|
-
static usage: import("clipanion
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
5
|
private command?;
|
|
6
6
|
private config;
|
|
7
7
|
private name?;
|
|
@@ -3,165 +3,126 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const ci_1 = require("../ci");
|
|
7
|
-
const user_provided_git_1 = require("../user-provided-git");
|
|
8
6
|
const fs_1 = __importDefault(require("fs"));
|
|
9
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const ci_1 = require("../ci");
|
|
9
|
+
const user_provided_git_1 = require("../user-provided-git");
|
|
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
|
+
};
|
|
10
47
|
describe('getCIMetadata', () => {
|
|
11
|
-
const branch = 'fakeBranch';
|
|
12
|
-
const commit = 'fakeCommitSha';
|
|
13
|
-
const pipelineURL = 'fakePipelineUrl';
|
|
14
48
|
test('non-recognized CI returns undefined', () => {
|
|
15
49
|
process.env = {};
|
|
16
50
|
expect(ci_1.getCIMetadata()).toBeUndefined();
|
|
17
51
|
});
|
|
18
|
-
test('
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
process.env = {
|
|
38
|
-
TRAVIS: 'true',
|
|
39
|
-
TRAVIS_BRANCH: branch,
|
|
40
|
-
TRAVIS_COMMIT: commit,
|
|
41
|
-
TRAVIS_JOB_WEB_URL: pipelineURL,
|
|
42
|
-
};
|
|
43
|
-
expect(ci_1.getCIMetadata()).toEqual({
|
|
44
|
-
ci: {
|
|
45
|
-
pipeline: { url: pipelineURL },
|
|
46
|
-
provider: { name: ci_1.CI_ENGINES.TRAVIS },
|
|
47
|
-
},
|
|
48
|
-
git: {
|
|
49
|
-
branch,
|
|
50
|
-
commitSha: commit,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
52
|
+
test('pipeline number is parsed to int or ignored', () => {
|
|
53
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
54
|
+
process.env = { GITLAB_CI: 'gitlab' };
|
|
55
|
+
process.env.CI_PIPELINE_IID = '0';
|
|
56
|
+
expect((_a = ci_1.getCIMetadata()) === null || _a === void 0 ? void 0 : _a.ci.pipeline.number).toBe(0);
|
|
57
|
+
process.env.CI_PIPELINE_IID = ' \n\r 12345 \n\n ';
|
|
58
|
+
expect((_b = ci_1.getCIMetadata()) === null || _b === void 0 ? void 0 : _b.ci.pipeline.number).toBe(12345);
|
|
59
|
+
process.env.CI_PIPELINE_IID = '123.45';
|
|
60
|
+
expect((_c = ci_1.getCIMetadata()) === null || _c === void 0 ? void 0 : _c.ci.pipeline.number).toBe(123);
|
|
61
|
+
process.env.CI_PIPELINE_IID = '999b';
|
|
62
|
+
expect((_d = ci_1.getCIMetadata()) === null || _d === void 0 ? void 0 : _d.ci.pipeline.number).toBe(999);
|
|
63
|
+
process.env.CI_PIPELINE_IID = '-1';
|
|
64
|
+
expect((_e = ci_1.getCIMetadata()) === null || _e === void 0 ? void 0 : _e.ci.pipeline.number).toBe(-1);
|
|
65
|
+
process.env.CI_PIPELINE_IID = '';
|
|
66
|
+
expect((_f = ci_1.getCIMetadata()) === null || _f === void 0 ? void 0 : _f.ci.pipeline.number).toBeUndefined();
|
|
67
|
+
process.env.CI_PIPELINE_IID = 'not a number';
|
|
68
|
+
expect((_g = ci_1.getCIMetadata()) === null || _g === void 0 ? void 0 : _g.ci.pipeline.number).toBeUndefined();
|
|
69
|
+
process.env.CI_PIPELINE_IID = '$1';
|
|
70
|
+
expect((_h = ci_1.getCIMetadata()) === null || _h === void 0 ? void 0 : _h.ci.pipeline.number).toBeUndefined();
|
|
53
71
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
expect(ci_1.getCIMetadata()).toEqual({
|
|
62
|
-
ci: {
|
|
63
|
-
pipeline: { url: pipelineURL },
|
|
64
|
-
provider: { name: ci_1.CI_ENGINES.GITLAB },
|
|
65
|
-
},
|
|
66
|
-
git: {
|
|
67
|
-
branch,
|
|
68
|
-
commitSha: commit,
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
test('github actions is recognized', () => {
|
|
73
|
-
process.env = {
|
|
74
|
-
GITHUB_ACTIONS: 'true',
|
|
75
|
-
GITHUB_REF: branch,
|
|
76
|
-
GITHUB_REPOSITORY: 'DataDog/datadog-ci',
|
|
77
|
-
GITHUB_RUN_ID: '42',
|
|
78
|
-
GITHUB_SERVER_URL: 'https://github.com',
|
|
79
|
-
GITHUB_SHA: commit,
|
|
80
|
-
};
|
|
81
|
-
const expectedPipelineURL = 'https://github.com/DataDog/datadog-ci/actions/runs/42';
|
|
82
|
-
expect(ci_1.getCIMetadata()).toEqual({
|
|
83
|
-
ci: {
|
|
84
|
-
pipeline: { url: expectedPipelineURL },
|
|
85
|
-
provider: { name: ci_1.CI_ENGINES.GITHUB },
|
|
86
|
-
},
|
|
87
|
-
git: {
|
|
88
|
-
branch,
|
|
89
|
-
commitSha: commit,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
test('github actions with run attempt is recognized', () => {
|
|
94
|
-
process.env = {
|
|
95
|
-
GITHUB_ACTIONS: 'true',
|
|
96
|
-
GITHUB_REF: branch,
|
|
97
|
-
GITHUB_REPOSITORY: 'DataDog/datadog-ci',
|
|
98
|
-
GITHUB_RUN_ATTEMPT: '2',
|
|
99
|
-
GITHUB_RUN_ID: '42',
|
|
100
|
-
GITHUB_SERVER_URL: 'https://github.com',
|
|
101
|
-
GITHUB_SHA: commit,
|
|
102
|
-
};
|
|
103
|
-
const expectedPipelineURL = 'https://github.com/DataDog/datadog-ci/actions/runs/42/attempts/2';
|
|
104
|
-
expect(ci_1.getCIMetadata()).toEqual({
|
|
105
|
-
ci: {
|
|
106
|
-
pipeline: { url: expectedPipelineURL },
|
|
107
|
-
provider: { name: ci_1.CI_ENGINES.GITHUB },
|
|
108
|
-
},
|
|
109
|
-
git: {
|
|
110
|
-
branch,
|
|
111
|
-
commitSha: commit,
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
test('jenkins is recognized', () => {
|
|
116
|
-
process.env = {
|
|
117
|
-
BUILD_URL: pipelineURL,
|
|
118
|
-
GIT_BRANCH: branch,
|
|
119
|
-
GIT_COMMIT: commit,
|
|
120
|
-
JENKINS_URL: 'https://fakebuildserver.url/',
|
|
121
|
-
};
|
|
122
|
-
expect(ci_1.getCIMetadata()).toEqual({
|
|
123
|
-
ci: {
|
|
124
|
-
pipeline: { url: pipelineURL },
|
|
125
|
-
provider: { name: ci_1.CI_ENGINES.JENKINS },
|
|
126
|
-
},
|
|
127
|
-
git: {
|
|
128
|
-
branch,
|
|
129
|
-
commitSha: commit,
|
|
130
|
-
},
|
|
72
|
+
describe.each(CI_PROVIDERS)('%s', (ciProvider) => {
|
|
73
|
+
const assertions = require(path_1.default.join(__dirname, 'ci-env', ciProvider));
|
|
74
|
+
test.each(assertions)('spec %#', (env, tags) => {
|
|
75
|
+
process.env = env;
|
|
76
|
+
const expectedMetadata = ciAppTagsToMetadata(tags);
|
|
77
|
+
expect(ci_1.getCIMetadata()).toEqual(expectedMetadata);
|
|
131
78
|
});
|
|
132
79
|
});
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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',
|
|
139
102
|
};
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
},
|
|
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);
|
|
149
111
|
});
|
|
150
112
|
});
|
|
151
113
|
});
|
|
152
114
|
describe('ci spec', () => {
|
|
153
115
|
test('returns an empty object if the CI is not supported', () => {
|
|
154
116
|
process.env = {};
|
|
155
|
-
const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.
|
|
117
|
+
const tags = Object.assign(Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserCISpanTags()), user_provided_git_1.getUserGitSpanTags());
|
|
156
118
|
expect(tags).toEqual({});
|
|
157
119
|
});
|
|
158
|
-
|
|
159
|
-
ciProviders.forEach((ciProvider) => {
|
|
120
|
+
CI_PROVIDERS.forEach((ciProvider) => {
|
|
160
121
|
const assertions = require(path_1.default.join(__dirname, 'ci-env', ciProvider));
|
|
161
122
|
assertions.forEach(([env, expectedSpanTags], index) => {
|
|
162
123
|
test(`reads env info for spec ${index} from ${ciProvider}`, () => {
|
|
163
124
|
process.env = env;
|
|
164
|
-
const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.
|
|
125
|
+
const tags = Object.assign(Object.assign({}, ci_1.getCISpanTags()), user_provided_git_1.getUserGitSpanTags());
|
|
165
126
|
expect(tags).toEqual(expectedSpanTags);
|
|
166
127
|
});
|
|
167
128
|
});
|
|
@@ -2,25 +2,26 @@
|
|
|
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('
|
|
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
|
|
8
|
-
|
|
9
|
-
process.env.DD_GIT_BRANCH = 'DD_GIT_BRANCH';
|
|
10
|
-
process.env.DD_GIT_TAG = 'DD_GIT_TAG';
|
|
11
|
-
process.env.DD_GIT_COMMIT_MESSAGE = 'DD_GIT_COMMIT_MESSAGE';
|
|
12
|
-
process.env.DD_GIT_COMMIT_AUTHOR_NAME = 'DD_GIT_COMMIT_AUTHOR_NAME';
|
|
13
|
-
process.env.DD_GIT_COMMIT_AUTHOR_EMAIL = 'DD_GIT_COMMIT_AUTHOR_EMAIL';
|
|
14
|
-
process.env.DD_GIT_COMMIT_AUTHOR_DATE = 'DD_GIT_COMMIT_AUTHOR_DATE';
|
|
15
|
-
process.env.DD_GIT_COMMIT_COMMITTER_NAME = 'DD_GIT_COMMIT_COMMITTER_NAME';
|
|
16
|
-
process.env.DD_GIT_COMMIT_COMMITTER_EMAIL = 'DD_GIT_COMMIT_COMMITTER_EMAIL';
|
|
17
|
-
process.env.DD_GIT_COMMIT_COMMITTER_DATE = 'DD_GIT_COMMIT_COMMITTER_DATE';
|
|
18
|
-
const result = user_provided_git_1.getUserGitMetadata();
|
|
19
|
+
process.env = Object.assign({}, DD_GIT_METADATA);
|
|
20
|
+
const result = user_provided_git_1.getUserGitSpanTags();
|
|
19
21
|
expect(result).toEqual({
|
|
20
22
|
[tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
|
|
21
23
|
[tags_1.GIT_BRANCH]: 'DD_GIT_BRANCH',
|
|
22
24
|
[tags_1.GIT_SHA]: 'DD_GIT_COMMIT_SHA',
|
|
23
|
-
[tags_1.GIT_TAG]: 'DD_GIT_TAG',
|
|
24
25
|
[tags_1.GIT_COMMIT_MESSAGE]: 'DD_GIT_COMMIT_MESSAGE',
|
|
25
26
|
[tags_1.GIT_COMMIT_COMMITTER_DATE]: 'DD_GIT_COMMIT_COMMITTER_DATE',
|
|
26
27
|
[tags_1.GIT_COMMIT_COMMITTER_EMAIL]: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
|
|
@@ -31,12 +32,27 @@ describe('getUserGitMetadata', () => {
|
|
|
31
32
|
});
|
|
32
33
|
});
|
|
33
34
|
it('does not include empty values', () => {
|
|
34
|
-
|
|
35
|
-
const result = user_provided_git_1.
|
|
35
|
+
process.env = Object.assign(Object.assign({}, DD_GIT_METADATA), { DD_GIT_COMMIT_SHA: undefined });
|
|
36
|
+
const result = user_provided_git_1.getUserGitSpanTags();
|
|
36
37
|
expect(result).toEqual({
|
|
37
38
|
[tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
|
|
38
39
|
[tags_1.GIT_BRANCH]: 'DD_GIT_BRANCH',
|
|
40
|
+
[tags_1.GIT_COMMIT_MESSAGE]: 'DD_GIT_COMMIT_MESSAGE',
|
|
41
|
+
[tags_1.GIT_COMMIT_COMMITTER_DATE]: 'DD_GIT_COMMIT_COMMITTER_DATE',
|
|
42
|
+
[tags_1.GIT_COMMIT_COMMITTER_EMAIL]: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
|
|
43
|
+
[tags_1.GIT_COMMIT_COMMITTER_NAME]: 'DD_GIT_COMMIT_COMMITTER_NAME',
|
|
44
|
+
[tags_1.GIT_COMMIT_AUTHOR_DATE]: 'DD_GIT_COMMIT_AUTHOR_DATE',
|
|
45
|
+
[tags_1.GIT_COMMIT_AUTHOR_EMAIL]: 'DD_GIT_COMMIT_AUTHOR_EMAIL',
|
|
46
|
+
[tags_1.GIT_COMMIT_AUTHOR_NAME]: 'DD_GIT_COMMIT_AUTHOR_NAME',
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it('overwrites branch when tag is available', () => {
|
|
50
|
+
process.env = Object.assign(Object.assign({}, DD_GIT_METADATA), { DD_GIT_TAG: 'DD_GIT_TAG' });
|
|
51
|
+
const result = user_provided_git_1.getUserGitSpanTags();
|
|
52
|
+
expect(result).toEqual({
|
|
39
53
|
[tags_1.GIT_TAG]: 'DD_GIT_TAG',
|
|
54
|
+
[tags_1.GIT_REPOSITORY_URL]: 'DD_GIT_REPOSITORY_URL',
|
|
55
|
+
[tags_1.GIT_SHA]: 'DD_GIT_COMMIT_SHA',
|
|
40
56
|
[tags_1.GIT_COMMIT_MESSAGE]: 'DD_GIT_COMMIT_MESSAGE',
|
|
41
57
|
[tags_1.GIT_COMMIT_COMMITTER_DATE]: 'DD_GIT_COMMIT_COMMITTER_DATE',
|
|
42
58
|
[tags_1.GIT_COMMIT_COMMITTER_EMAIL]: 'DD_GIT_COMMIT_COMMITTER_EMAIL',
|
|
@@ -47,17 +63,55 @@ describe('getUserGitMetadata', () => {
|
|
|
47
63
|
});
|
|
48
64
|
});
|
|
49
65
|
it('returns an empty object if no user git is defined', () => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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();
|
|
61
115
|
expect(result).toEqual({});
|
|
62
116
|
});
|
|
63
117
|
});
|
|
@@ -363,3 +363,7 @@ describe('utils', () => {
|
|
|
363
363
|
}));
|
|
364
364
|
});
|
|
365
365
|
});
|
|
366
|
+
test('removeUndefinedValues', () => {
|
|
367
|
+
// tslint:disable-next-line: no-null-keyword
|
|
368
|
+
expect(ciUtils.removeUndefinedValues({ a: 'b', c: 'd', e: undefined, g: null })).toEqual({ a: 'b', c: 'd', g: null });
|
|
369
|
+
});
|
package/dist/helpers/ci.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getCIMetadata = exports.getCISpanTags = exports.CI_ENGINES = void 0;
|
|
4
4
|
const url_1 = require("url");
|
|
5
5
|
const tags_1 = require("./tags");
|
|
6
|
+
const user_provided_git_1 = require("./user-provided-git");
|
|
6
7
|
const utils_1 = require("./utils");
|
|
7
8
|
exports.CI_ENGINES = {
|
|
8
9
|
APPVEYOR: 'appveyor',
|
|
@@ -57,12 +58,6 @@ const filterSensitiveInfoFromRepository = (repositoryUrl) => {
|
|
|
57
58
|
return repositoryUrl;
|
|
58
59
|
}
|
|
59
60
|
};
|
|
60
|
-
const normalizeRef = (ref) => {
|
|
61
|
-
if (!ref) {
|
|
62
|
-
return ref;
|
|
63
|
-
}
|
|
64
|
-
return ref.replace(/origin\/|refs\/heads\/|tags\//gm, '');
|
|
65
|
-
};
|
|
66
61
|
const getCISpanTags = () => {
|
|
67
62
|
const env = process.env;
|
|
68
63
|
let tags = {};
|
|
@@ -160,7 +155,7 @@ const getCISpanTags = () => {
|
|
|
160
155
|
};
|
|
161
156
|
const isTag = JENKINS_GIT_BRANCH && JENKINS_GIT_BRANCH.includes('tags');
|
|
162
157
|
const refKey = isTag ? tags_1.GIT_TAG : tags_1.GIT_BRANCH;
|
|
163
|
-
const ref = normalizeRef(JENKINS_GIT_BRANCH);
|
|
158
|
+
const ref = utils_1.normalizeRef(JENKINS_GIT_BRANCH);
|
|
164
159
|
tags[refKey] = ref;
|
|
165
160
|
let finalPipelineName = '';
|
|
166
161
|
if (JOB_NAME) {
|
|
@@ -284,101 +279,65 @@ const getCISpanTags = () => {
|
|
|
284
279
|
tags[tags_1.GIT_REPOSITORY_URL] = filterSensitiveInfoFromRepository(tags[tags_1.GIT_REPOSITORY_URL]);
|
|
285
280
|
}
|
|
286
281
|
if (tags[tags_1.GIT_BRANCH]) {
|
|
287
|
-
tags[tags_1.GIT_BRANCH] = normalizeRef(tags[tags_1.GIT_BRANCH]);
|
|
282
|
+
tags[tags_1.GIT_BRANCH] = utils_1.normalizeRef(tags[tags_1.GIT_BRANCH]);
|
|
288
283
|
}
|
|
289
284
|
if (tags[tags_1.GIT_TAG]) {
|
|
290
|
-
tags[tags_1.GIT_TAG] = normalizeRef(tags[tags_1.GIT_TAG]);
|
|
285
|
+
tags[tags_1.GIT_TAG] = utils_1.normalizeRef(tags[tags_1.GIT_TAG]);
|
|
291
286
|
}
|
|
292
287
|
return utils_1.removeEmptyValues(tags);
|
|
293
288
|
};
|
|
294
289
|
exports.getCISpanTags = getCISpanTags;
|
|
295
290
|
const getCIMetadata = () => {
|
|
296
|
-
const
|
|
297
|
-
if (
|
|
298
|
-
return
|
|
299
|
-
ci: {
|
|
300
|
-
pipeline: {
|
|
301
|
-
url: env.CIRCLE_BUILD_URL,
|
|
302
|
-
},
|
|
303
|
-
provider: {
|
|
304
|
-
name: exports.CI_ENGINES.CIRCLECI,
|
|
305
|
-
},
|
|
306
|
-
},
|
|
307
|
-
git: {
|
|
308
|
-
branch: env.CIRCLE_BRANCH,
|
|
309
|
-
commitSha: env.CIRCLE_SHA1,
|
|
310
|
-
},
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
if (env.TRAVIS) {
|
|
314
|
-
return {
|
|
315
|
-
ci: {
|
|
316
|
-
pipeline: {
|
|
317
|
-
url: env.TRAVIS_JOB_WEB_URL,
|
|
318
|
-
},
|
|
319
|
-
provider: {
|
|
320
|
-
name: exports.CI_ENGINES.TRAVIS,
|
|
321
|
-
},
|
|
322
|
-
},
|
|
323
|
-
git: {
|
|
324
|
-
branch: env.TRAVIS_BRANCH,
|
|
325
|
-
commitSha: env.TRAVIS_COMMIT,
|
|
326
|
-
},
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
if (env.GITLAB_CI) {
|
|
330
|
-
return {
|
|
331
|
-
ci: {
|
|
332
|
-
pipeline: {
|
|
333
|
-
url: env.CI_JOB_URL,
|
|
334
|
-
},
|
|
335
|
-
provider: {
|
|
336
|
-
name: exports.CI_ENGINES.GITLAB,
|
|
337
|
-
},
|
|
338
|
-
},
|
|
339
|
-
git: {
|
|
340
|
-
branch: env.CI_COMMIT_REF_NAME,
|
|
341
|
-
commitSha: env.CI_COMMIT_SHA,
|
|
342
|
-
},
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
if (env.GITHUB_ACTIONS) {
|
|
346
|
-
const { GITHUB_REF, GITHUB_SHA, GITHUB_REPOSITORY, GITHUB_RUN_ID, GITHUB_SERVER_URL } = env;
|
|
347
|
-
let pipelineURL = `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}`;
|
|
348
|
-
if (env.GITHUB_RUN_ATTEMPT) {
|
|
349
|
-
pipelineURL += `/attempts/${env.GITHUB_RUN_ATTEMPT}`;
|
|
350
|
-
}
|
|
351
|
-
return {
|
|
352
|
-
ci: {
|
|
353
|
-
pipeline: {
|
|
354
|
-
url: pipelineURL,
|
|
355
|
-
},
|
|
356
|
-
provider: {
|
|
357
|
-
name: exports.CI_ENGINES.GITHUB,
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
git: {
|
|
361
|
-
branch: GITHUB_REF,
|
|
362
|
-
commitSha: GITHUB_SHA,
|
|
363
|
-
},
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
if (env.JENKINS_URL) {
|
|
367
|
-
const { BUILD_URL, GIT_COMMIT, GIT_BRANCH: JENKINS_GIT_BRANCH } = env;
|
|
368
|
-
return {
|
|
369
|
-
ci: {
|
|
370
|
-
pipeline: {
|
|
371
|
-
url: BUILD_URL,
|
|
372
|
-
},
|
|
373
|
-
provider: {
|
|
374
|
-
name: exports.CI_ENGINES.JENKINS,
|
|
375
|
-
},
|
|
376
|
-
},
|
|
377
|
-
git: {
|
|
378
|
-
branch: JENKINS_GIT_BRANCH,
|
|
379
|
-
commitSha: GIT_COMMIT,
|
|
380
|
-
},
|
|
381
|
-
};
|
|
291
|
+
const tags = Object.assign(Object.assign(Object.assign({}, exports.getCISpanTags()), user_provided_git_1.getUserCISpanTags()), user_provided_git_1.getUserGitSpanTags());
|
|
292
|
+
if (!tags || !Object.keys(tags).length) {
|
|
293
|
+
return;
|
|
382
294
|
}
|
|
295
|
+
const metadata = {
|
|
296
|
+
ci: utils_1.removeUndefinedValues({
|
|
297
|
+
job: utils_1.removeUndefinedValues({
|
|
298
|
+
name: tags[tags_1.CI_JOB_NAME],
|
|
299
|
+
url: tags[tags_1.CI_JOB_URL],
|
|
300
|
+
}),
|
|
301
|
+
pipeline: utils_1.removeUndefinedValues({
|
|
302
|
+
id: tags[tags_1.CI_PIPELINE_ID],
|
|
303
|
+
name: tags[tags_1.CI_PIPELINE_NAME],
|
|
304
|
+
number: parsePipelineNumber(tags[tags_1.CI_PIPELINE_NUMBER]),
|
|
305
|
+
url: tags[tags_1.CI_PIPELINE_URL],
|
|
306
|
+
}),
|
|
307
|
+
provider: utils_1.removeUndefinedValues({
|
|
308
|
+
name: tags[tags_1.CI_PROVIDER_NAME],
|
|
309
|
+
}),
|
|
310
|
+
stage: utils_1.removeUndefinedValues({
|
|
311
|
+
name: tags[tags_1.CI_STAGE_NAME],
|
|
312
|
+
}),
|
|
313
|
+
workspace_path: tags[tags_1.CI_WORKSPACE_PATH],
|
|
314
|
+
}),
|
|
315
|
+
git: utils_1.removeUndefinedValues({
|
|
316
|
+
branch: tags[tags_1.GIT_BRANCH],
|
|
317
|
+
commit: utils_1.removeUndefinedValues({
|
|
318
|
+
author: utils_1.removeUndefinedValues({
|
|
319
|
+
date: tags[tags_1.GIT_COMMIT_AUTHOR_DATE],
|
|
320
|
+
email: tags[tags_1.GIT_COMMIT_AUTHOR_EMAIL],
|
|
321
|
+
name: tags[tags_1.GIT_COMMIT_AUTHOR_NAME],
|
|
322
|
+
}),
|
|
323
|
+
committer: utils_1.removeUndefinedValues({
|
|
324
|
+
date: tags[tags_1.GIT_COMMIT_COMMITTER_DATE],
|
|
325
|
+
email: tags[tags_1.GIT_COMMIT_COMMITTER_EMAIL],
|
|
326
|
+
name: tags[tags_1.GIT_COMMIT_COMMITTER_NAME],
|
|
327
|
+
}),
|
|
328
|
+
message: tags[tags_1.GIT_COMMIT_MESSAGE],
|
|
329
|
+
sha: tags[tags_1.GIT_SHA],
|
|
330
|
+
}),
|
|
331
|
+
repository_url: tags[tags_1.GIT_REPOSITORY_URL],
|
|
332
|
+
tag: tags[tags_1.GIT_TAG],
|
|
333
|
+
}),
|
|
334
|
+
};
|
|
335
|
+
return metadata;
|
|
383
336
|
};
|
|
384
337
|
exports.getCIMetadata = getCIMetadata;
|
|
338
|
+
const parsePipelineNumber = (pipelineNumberStr) => {
|
|
339
|
+
if (pipelineNumberStr) {
|
|
340
|
+
const pipelineNumber = parseInt(pipelineNumberStr, 10);
|
|
341
|
+
return isFinite(pipelineNumber) ? pipelineNumber : undefined;
|
|
342
|
+
}
|
|
343
|
+
};
|