@datadog/datadog-ci-base 3.21.0 → 3.21.1
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/README.md +2 -2
- package/dist/cli.d.ts +41 -0
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/aas/common.d.ts +51 -0
- package/dist/commands/aas/common.js +129 -0
- package/dist/commands/aas/common.js.map +1 -0
- package/dist/commands/aas/instrument.d.ts +18 -0
- package/dist/commands/aas/instrument.js +80 -0
- package/dist/commands/aas/instrument.js.map +1 -0
- package/dist/commands/aas/uninstrument.d.ts +6 -0
- package/dist/commands/aas/uninstrument.js +29 -0
- package/dist/commands/aas/uninstrument.js.map +1 -0
- package/dist/commands/cloud-run/constants.d.ts +3 -0
- package/dist/commands/cloud-run/constants.js +24 -0
- package/dist/commands/cloud-run/constants.js.map +1 -0
- package/dist/commands/cloud-run/flare.d.ts +18 -0
- package/dist/commands/cloud-run/flare.js +42 -0
- package/dist/commands/cloud-run/flare.js.map +1 -0
- package/dist/commands/cloud-run/instrument.d.ts +30 -0
- package/dist/commands/cloud-run/instrument.js +88 -0
- package/dist/commands/cloud-run/instrument.js.map +1 -0
- package/dist/commands/cloud-run/uninstrument.d.ts +15 -0
- package/dist/commands/cloud-run/uninstrument.js +53 -0
- package/dist/commands/cloud-run/uninstrument.js.map +1 -0
- package/dist/commands/deployment/correlate-command.d.ts +17 -0
- package/dist/commands/deployment/correlate-command.js +57 -0
- package/dist/commands/deployment/correlate-command.js.map +1 -0
- package/dist/commands/deployment/correlate-image-command.d.ts +12 -0
- package/dist/commands/deployment/correlate-image-command.js +38 -0
- package/dist/commands/deployment/correlate-image-command.js.map +1 -0
- package/dist/commands/deployment/gate-command.d.ts +21 -0
- package/dist/commands/deployment/gate-command.js +119 -0
- package/dist/commands/deployment/gate-command.js.map +1 -0
- package/dist/commands/deployment/mark-command.d.ts +18 -0
- package/dist/commands/deployment/mark-command.js +63 -0
- package/dist/commands/deployment/mark-command.js.map +1 -0
- package/dist/commands/dora/deployment-command.d.ts +20 -0
- package/dist/commands/dora/deployment-command.js +118 -0
- package/dist/commands/dora/deployment-command.js.map +1 -0
- package/dist/commands/gate/evaluate-command.d.ts +15 -0
- package/dist/commands/gate/evaluate-command.js +98 -0
- package/dist/commands/gate/evaluate-command.js.map +1 -0
- package/dist/commands/git-metadata/api.d.ts +3 -0
- package/dist/commands/git-metadata/api.js +13 -0
- package/dist/commands/git-metadata/api.js.map +1 -0
- package/dist/commands/git-metadata/git.d.ts +18 -0
- package/dist/commands/git-metadata/git.js +188 -0
- package/dist/commands/git-metadata/git.js.map +1 -0
- package/dist/commands/git-metadata/gitdb.d.ts +7 -0
- package/dist/commands/git-metadata/gitdb.js +334 -0
- package/dist/commands/git-metadata/gitdb.js.map +1 -0
- package/dist/commands/git-metadata/index.d.ts +1 -0
- package/dist/commands/git-metadata/index.js +18 -0
- package/dist/commands/git-metadata/index.js.map +1 -0
- package/dist/commands/git-metadata/interfaces.d.ts +10 -0
- package/dist/commands/git-metadata/interfaces.js +56 -0
- package/dist/commands/git-metadata/interfaces.js.map +1 -0
- package/dist/commands/git-metadata/library.d.ts +7 -0
- package/dist/commands/git-metadata/library.js +102 -0
- package/dist/commands/git-metadata/library.js.map +1 -0
- package/dist/commands/git-metadata/renderer.d.ts +7 -0
- package/dist/commands/git-metadata/renderer.js +29 -0
- package/dist/commands/git-metadata/renderer.js.map +1 -0
- package/dist/commands/git-metadata/upload.d.ts +20 -0
- package/dist/commands/git-metadata/upload.js +209 -0
- package/dist/commands/git-metadata/upload.js.map +1 -0
- package/dist/commands/lambda/flare.d.ts +16 -0
- package/dist/commands/lambda/flare.js +41 -0
- package/dist/commands/lambda/flare.js.map +1 -0
- package/dist/commands/lambda/instrument.d.ts +35 -0
- package/dist/commands/lambda/instrument.js +60 -0
- package/dist/commands/lambda/instrument.js.map +1 -0
- package/dist/commands/lambda/uninstrument.d.ts +33 -0
- package/dist/commands/lambda/uninstrument.js +58 -0
- package/dist/commands/lambda/uninstrument.js.map +1 -0
- package/dist/commands/plugin/check-command.d.ts +7 -0
- package/dist/commands/plugin/check-command.js +48 -0
- package/dist/commands/plugin/check-command.js.map +1 -0
- package/dist/commands/sarif/upload-command.d.ts +17 -0
- package/dist/commands/sarif/upload-command.js +62 -0
- package/dist/commands/sarif/upload-command.js.map +1 -0
- package/dist/commands/sbom/upload-command.d.ts +15 -0
- package/dist/commands/sbom/upload-command.js +46 -0
- package/dist/commands/sbom/upload-command.js.map +1 -0
- package/dist/commands/stepfunctions/instrument.d.ts +15 -0
- package/dist/commands/stepfunctions/instrument.js +55 -0
- package/dist/commands/stepfunctions/instrument.js.map +1 -0
- package/dist/commands/stepfunctions/uninstrument.d.ts +14 -0
- package/dist/commands/stepfunctions/uninstrument.js +56 -0
- package/dist/commands/stepfunctions/uninstrument.js.map +1 -0
- package/dist/commands/synthetics/deploy-tests-command.d.ts +16 -0
- package/dist/commands/synthetics/deploy-tests-command.js +79 -0
- package/dist/commands/synthetics/deploy-tests-command.js.map +1 -0
- package/dist/commands/synthetics/import-tests-command.d.ts +15 -0
- package/dist/commands/synthetics/import-tests-command.js +77 -0
- package/dist/commands/synthetics/import-tests-command.js.map +1 -0
- package/dist/commands/synthetics/run-tests-command.d.ts +28 -0
- package/dist/commands/synthetics/run-tests-command.js +158 -0
- package/dist/commands/synthetics/run-tests-command.js.map +1 -0
- package/dist/commands/synthetics/upload-application-command.d.ts +16 -0
- package/dist/commands/synthetics/upload-application-command.js +77 -0
- package/dist/commands/synthetics/upload-application-command.js.map +1 -0
- package/dist/commands/tag/cli.d.ts +1 -0
- package/dist/commands/tag/cli.js +5 -0
- package/dist/commands/tag/cli.js.map +1 -0
- package/dist/commands/tag/tag-command.d.ts +20 -0
- package/dist/commands/tag/tag-command.js +162 -0
- package/dist/commands/tag/tag-command.js.map +1 -0
- package/dist/constants.d.ts +39 -0
- package/dist/constants.js +105 -0
- package/dist/constants.js.map +1 -0
- package/dist/helpers/api.d.ts +5 -0
- package/dist/helpers/api.js +16 -0
- package/dist/helpers/api.js.map +1 -0
- package/dist/helpers/apikey.d.ts +15 -0
- package/dist/helpers/apikey.js +85 -0
- package/dist/helpers/apikey.js.map +1 -0
- package/dist/helpers/app.d.ts +5 -0
- package/dist/helpers/app.js +38 -0
- package/dist/helpers/app.js.map +1 -0
- package/dist/helpers/base-intake-url.d.ts +1 -0
- package/dist/helpers/base-intake-url.js +14 -0
- package/dist/helpers/base-intake-url.js.map +1 -0
- package/dist/helpers/ci.d.ts +71 -0
- package/dist/helpers/ci.js +671 -0
- package/dist/helpers/ci.js.map +1 -0
- package/dist/helpers/concurrency.d.ts +1 -0
- package/dist/helpers/concurrency.js +45 -0
- package/dist/helpers/concurrency.js.map +1 -0
- package/dist/helpers/config.d.ts +5 -0
- package/dist/helpers/config.js +3 -0
- package/dist/helpers/config.js.map +1 -0
- package/dist/helpers/env.d.ts +6 -0
- package/dist/helpers/env.js +50 -0
- package/dist/helpers/env.js.map +1 -0
- package/dist/helpers/errors.d.ts +2 -0
- package/dist/helpers/errors.js +7 -0
- package/dist/helpers/errors.js.map +1 -0
- package/dist/helpers/file-finder.d.ts +20 -0
- package/dist/helpers/file-finder.js +203 -0
- package/dist/helpers/file-finder.js.map +1 -0
- package/dist/helpers/filereader.d.ts +21 -0
- package/dist/helpers/filereader.js +59 -0
- package/dist/helpers/filereader.js.map +1 -0
- package/dist/helpers/fips.d.ts +1 -0
- package/dist/helpers/fips.js +24 -0
- package/dist/helpers/fips.js.map +1 -0
- package/dist/helpers/flare.d.ts +51 -0
- package/dist/helpers/flare.js +238 -0
- package/dist/helpers/flare.js.map +1 -0
- package/dist/helpers/formatting.d.ts +5 -0
- package/dist/helpers/formatting.js +13 -0
- package/dist/helpers/formatting.js.map +1 -0
- package/dist/helpers/fs.d.ts +31 -0
- package/dist/helpers/fs.js +117 -0
- package/dist/helpers/fs.js.map +1 -0
- package/dist/helpers/get-latest-version.d.ts +1 -0
- package/dist/helpers/get-latest-version.js +20 -0
- package/dist/helpers/get-latest-version.js.map +1 -0
- package/dist/helpers/git/format-git-sourcemaps-data.d.ts +16 -0
- package/dist/helpers/git/format-git-sourcemaps-data.js +178 -0
- package/dist/helpers/git/format-git-sourcemaps-data.js.map +1 -0
- package/dist/helpers/git/format-git-span-data.d.ts +2 -0
- package/dist/helpers/git/format-git-span-data.js +54 -0
- package/dist/helpers/git/format-git-span-data.js.map +1 -0
- package/dist/helpers/git/get-git-data.d.ts +13 -0
- package/dist/helpers/git/get-git-data.js +86 -0
- package/dist/helpers/git/get-git-data.js.map +1 -0
- package/dist/helpers/git/source-code-integration.d.ts +10 -0
- package/dist/helpers/git/source-code-integration.js +81 -0
- package/dist/helpers/git/source-code-integration.js.map +1 -0
- package/dist/helpers/glob.d.ts +12 -0
- package/dist/helpers/glob.js +70 -0
- package/dist/helpers/glob.js.map +1 -0
- package/dist/helpers/id.d.ts +2 -0
- package/dist/helpers/id.js +50 -0
- package/dist/helpers/id.js.map +1 -0
- package/dist/helpers/interfaces.d.ts +59 -0
- package/dist/helpers/interfaces.js +3 -0
- package/dist/helpers/interfaces.js.map +1 -0
- package/dist/helpers/is-standalone-binary.d.ts +1 -0
- package/dist/helpers/is-standalone-binary.js +25 -0
- package/dist/helpers/is-standalone-binary.js.map +1 -0
- package/dist/helpers/logger.d.ts +18 -0
- package/dist/helpers/logger.js +52 -0
- package/dist/helpers/logger.js.map +1 -0
- package/dist/helpers/message-box.d.ts +2 -0
- package/dist/helpers/message-box.js +28 -0
- package/dist/helpers/message-box.js.map +1 -0
- package/dist/helpers/metrics.d.ts +12 -0
- package/dist/helpers/metrics.js +36 -0
- package/dist/helpers/metrics.js.map +1 -0
- package/dist/helpers/plist.d.ts +44 -0
- package/dist/helpers/plist.js +93 -0
- package/dist/helpers/plist.js.map +1 -0
- package/dist/helpers/plugin.d.ts +10 -0
- package/dist/helpers/plugin.js +149 -0
- package/dist/helpers/plugin.js.map +1 -0
- package/dist/helpers/prompt.d.ts +9 -0
- package/dist/helpers/prompt.js +58 -0
- package/dist/helpers/prompt.js.map +1 -0
- package/dist/helpers/renderer.d.ts +60 -0
- package/dist/helpers/renderer.js +98 -0
- package/dist/helpers/renderer.js.map +1 -0
- package/dist/helpers/retry.d.ts +2 -0
- package/dist/helpers/retry.js +40 -0
- package/dist/helpers/retry.js.map +1 -0
- package/dist/helpers/tags.d.ts +82 -0
- package/dist/helpers/tags.js +244 -0
- package/dist/helpers/tags.js.map +1 -0
- package/dist/helpers/types.d.ts +3 -0
- package/dist/helpers/types.js +3 -0
- package/dist/helpers/types.js.map +1 -0
- package/dist/helpers/upload.d.ts +51 -0
- package/dist/helpers/upload.js +86 -0
- package/dist/helpers/upload.js.map +1 -0
- package/dist/helpers/user-provided-git.d.ts +2 -0
- package/dist/helpers/user-provided-git.js +49 -0
- package/dist/helpers/user-provided-git.js.map +1 -0
- package/dist/helpers/utils.d.ts +84 -0
- package/dist/helpers/utils.js +340 -0
- package/dist/helpers/utils.js.map +1 -0
- package/dist/helpers/validation.d.ts +19 -0
- package/dist/helpers/validation.js +77 -0
- package/dist/helpers/validation.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -10
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.uploadPackfile = exports.uploadPackfiles = exports.uploadToGitDB = void 0;
|
|
16
|
+
const child_process_1 = __importDefault(require("child_process"));
|
|
17
|
+
const fs_1 = __importDefault(require("fs"));
|
|
18
|
+
const promises_1 = require("fs/promises");
|
|
19
|
+
const os_1 = __importDefault(require("os"));
|
|
20
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
21
|
+
const semver_1 = require("semver");
|
|
22
|
+
const upath_1 = __importDefault(require("upath"));
|
|
23
|
+
const get_git_data_1 = require("../../helpers/git/get-git-data");
|
|
24
|
+
const retry_1 = require("../../helpers/retry");
|
|
25
|
+
const API_TIMEOUT = 15000;
|
|
26
|
+
// we only consider recent commits to avoid uploading the whole repository
|
|
27
|
+
// at most 1000 commits or > 1 month of data is considered.
|
|
28
|
+
const MAX_HISTORY = {
|
|
29
|
+
maxCommits: 1000,
|
|
30
|
+
oldestCommits: '1 month ago',
|
|
31
|
+
};
|
|
32
|
+
const getCommitsToInclude = (log, request, git, repositoryURL) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
let latestCommits;
|
|
34
|
+
try {
|
|
35
|
+
latestCommits = yield getLatestLocalCommits(git);
|
|
36
|
+
if (latestCommits.length === 0) {
|
|
37
|
+
log.debug('No local commits found.');
|
|
38
|
+
return {
|
|
39
|
+
commitsToInclude: [],
|
|
40
|
+
commitsToExclude: [],
|
|
41
|
+
headCommit: '',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
log.debug(`${latestCommits.length} commits found, asking GitDB which ones are missing.`);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
log.warn(`Failed getting local commits: ${err}`);
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
let commitsToExclude;
|
|
51
|
+
try {
|
|
52
|
+
commitsToExclude = yield getKnownCommits(log, request, repositoryURL, latestCommits);
|
|
53
|
+
log.debug(`${commitsToExclude.length} commits already in GitDB.`);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
log.warn(`Failed getting commits to exclude: ${err}`);
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
commitsToInclude: latestCommits.filter((x) => !commitsToExclude.includes(x)),
|
|
61
|
+
commitsToExclude,
|
|
62
|
+
headCommit: latestCommits[0],
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
const uploadToGitDB = (log, request, git, dryRun, repositoryURL) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
let repoURL;
|
|
67
|
+
if (repositoryURL) {
|
|
68
|
+
repoURL = repositoryURL;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
try {
|
|
72
|
+
repoURL = yield (0, get_git_data_1.gitRemote)(git);
|
|
73
|
+
log.debug(`Syncing repository ${repoURL}`);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
log.warn(`Failed getting repository URL: ${err}`);
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let commitsToInclude;
|
|
81
|
+
let commitsToExclude;
|
|
82
|
+
let headCommit;
|
|
83
|
+
const getCommitsBeforeUnshallowing = yield getCommitsToInclude(log, request, git, repoURL);
|
|
84
|
+
commitsToInclude = getCommitsBeforeUnshallowing.commitsToInclude;
|
|
85
|
+
commitsToExclude = getCommitsBeforeUnshallowing.commitsToExclude;
|
|
86
|
+
headCommit = getCommitsBeforeUnshallowing.headCommit;
|
|
87
|
+
// If there are no commits to include, it means the backend already has all the commits.
|
|
88
|
+
if (commitsToInclude.length === 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// If there are commits to include and the repository is shallow, we need to repeat the process after unshallowing
|
|
92
|
+
const isShallow = yield isShallowRepository(git);
|
|
93
|
+
if (isShallow) {
|
|
94
|
+
yield unshallowRepository(log, git);
|
|
95
|
+
const getCommitsAfterUnshallowing = yield getCommitsToInclude(log, request, git, repoURL);
|
|
96
|
+
commitsToInclude = getCommitsAfterUnshallowing.commitsToInclude;
|
|
97
|
+
commitsToExclude = getCommitsAfterUnshallowing.commitsToExclude;
|
|
98
|
+
headCommit = getCommitsBeforeUnshallowing.headCommit;
|
|
99
|
+
}
|
|
100
|
+
// Get the list of all objects (commits, trees) to upload. This list can be quite long
|
|
101
|
+
// so quite memory intensive (multiple MBs).
|
|
102
|
+
let objectsToUpload;
|
|
103
|
+
try {
|
|
104
|
+
objectsToUpload = yield getObjectsToUpload(git, commitsToInclude, commitsToExclude);
|
|
105
|
+
log.debug(`${objectsToUpload.length} objects to upload.`);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
log.warn(`Failed getting objects to upload: ${err}`);
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
let packfiles;
|
|
112
|
+
let tmpDir;
|
|
113
|
+
try {
|
|
114
|
+
;
|
|
115
|
+
[packfiles, tmpDir] = yield generatePackFilesForCommits(log, objectsToUpload);
|
|
116
|
+
log.debug(`${packfiles.length} packfiles generated.`);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
log.warn(`Failed generating packfiles: ${err}`);
|
|
120
|
+
throw err;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
if (dryRun) {
|
|
124
|
+
log.debug(`Dry-run enabled, not uploading anything.`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
log.debug(`Uploading packfiles...`);
|
|
128
|
+
yield (0, exports.uploadPackfiles)(log, request, repoURL, headCommit, packfiles);
|
|
129
|
+
log.debug('Successfully uploaded packfiles.');
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
log.warn(`Failed to upload packfiles: ${err}`);
|
|
133
|
+
throw err;
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
if (tmpDir !== undefined) {
|
|
137
|
+
fs_1.default.rmSync(tmpDir, { recursive: true });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
exports.uploadToGitDB = uploadToGitDB;
|
|
142
|
+
const getLatestLocalCommits = (git) => __awaiter(void 0, void 0, void 0, function* () {
|
|
143
|
+
// we add some boundaries to avoid retrieving ALL commits here.
|
|
144
|
+
const logResult = yield git.log([`-n ${MAX_HISTORY.maxCommits}`, `--since="${MAX_HISTORY.oldestCommits}"`]);
|
|
145
|
+
return logResult.all.map((c) => c.hash);
|
|
146
|
+
});
|
|
147
|
+
const isShallowRepository = (git) => __awaiter(void 0, void 0, void 0, function* () {
|
|
148
|
+
const gitversion = String(yield git.version());
|
|
149
|
+
if ((0, semver_1.lte)(gitversion, '2.27.0')) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return (yield git.revparse('--is-shallow-repository')) === 'true';
|
|
153
|
+
});
|
|
154
|
+
const unshallowRepository = (log, git) => __awaiter(void 0, void 0, void 0, function* () {
|
|
155
|
+
log.info('[unshallow] Git repository is a shallow clone, unshallowing it...');
|
|
156
|
+
const [headCommit, remoteName] = yield Promise.all([git.revparse('HEAD'), (0, get_git_data_1.getDefaultRemoteName)(git)]);
|
|
157
|
+
const baseCommandLogLine = `[unshallow] Running git fetch --shallow-since="${MAX_HISTORY.oldestCommits}" --update-shallow --filter=blob:none --recurse-submodules=no`;
|
|
158
|
+
log.info(`${baseCommandLogLine} $(git config --default origin --get clone.defaultRemoteName) $(git rev-parse HEAD)`);
|
|
159
|
+
try {
|
|
160
|
+
yield git.fetch([
|
|
161
|
+
`--shallow-since="${MAX_HISTORY.oldestCommits}"`,
|
|
162
|
+
'--update-shallow',
|
|
163
|
+
'--filter=blob:none',
|
|
164
|
+
'--recurse-submodules=no',
|
|
165
|
+
remoteName,
|
|
166
|
+
headCommit,
|
|
167
|
+
]);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
// If the local HEAD is a commit that has not been pushed to the remote, the above command will fail.
|
|
171
|
+
log.warn(`[unshallow] Failed to unshallow: ${err}`);
|
|
172
|
+
try {
|
|
173
|
+
log.info(`${baseCommandLogLine} $(git config --default origin --get clone.defaultRemoteName) $(git rev-parse --abbrev-ref --symbolic-full-name @{upstream})`);
|
|
174
|
+
const upstreamRemote = yield git.revparse('--abbrev-ref --symbolic-full-name @{upstream}');
|
|
175
|
+
yield git.fetch([
|
|
176
|
+
`--shallow-since="${MAX_HISTORY.oldestCommits}"`,
|
|
177
|
+
'--update-shallow',
|
|
178
|
+
'--filter=blob:none',
|
|
179
|
+
'--recurse-submodules=no',
|
|
180
|
+
remoteName,
|
|
181
|
+
upstreamRemote,
|
|
182
|
+
]);
|
|
183
|
+
}
|
|
184
|
+
catch (secondError) {
|
|
185
|
+
// If the CI is working on a detached HEAD or branch tracking hasn’t been set up, the above command will fail.
|
|
186
|
+
log.warn(`[unshallow] Failed to unshallow again: ${secondError}`);
|
|
187
|
+
log.info(`${baseCommandLogLine} $(git config --default origin --get clone.defaultRemoteName)`);
|
|
188
|
+
yield git.fetch([
|
|
189
|
+
`--shallow-since="${MAX_HISTORY.oldestCommits}"`,
|
|
190
|
+
'--update-shallow',
|
|
191
|
+
'--filter=blob:none',
|
|
192
|
+
'--recurse-submodules=no',
|
|
193
|
+
remoteName,
|
|
194
|
+
]);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
log.info('[unshallow] Fetch completed.');
|
|
198
|
+
});
|
|
199
|
+
// getKnownCommits asks the backend which of the given commits are already known
|
|
200
|
+
const getKnownCommits = (log, request, repoURL, latestCommits) => __awaiter(void 0, void 0, void 0, function* () {
|
|
201
|
+
const localCommitData = JSON.stringify({
|
|
202
|
+
meta: {
|
|
203
|
+
repository_url: repoURL,
|
|
204
|
+
},
|
|
205
|
+
data: latestCommits.map((commit) => ({
|
|
206
|
+
id: commit,
|
|
207
|
+
type: 'commit',
|
|
208
|
+
})),
|
|
209
|
+
});
|
|
210
|
+
const response = yield runRequest(log, 'search_commits', () => request({
|
|
211
|
+
url: '/api/v2/git/repository/search_commits',
|
|
212
|
+
headers: {
|
|
213
|
+
'Content-Type': 'application/json',
|
|
214
|
+
},
|
|
215
|
+
data: localCommitData,
|
|
216
|
+
method: 'POST',
|
|
217
|
+
timeout: API_TIMEOUT,
|
|
218
|
+
}));
|
|
219
|
+
const commits = response.data;
|
|
220
|
+
if (!commits || commits.data === undefined) {
|
|
221
|
+
throw new Error(`Invalid API response: ${response}`);
|
|
222
|
+
}
|
|
223
|
+
return commits.data.map((c) => {
|
|
224
|
+
if (c.type !== 'commit' || c.id === undefined) {
|
|
225
|
+
throw new Error('Invalid commit type response');
|
|
226
|
+
}
|
|
227
|
+
return validateCommit(c.id);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
const validateCommit = (sha) => {
|
|
231
|
+
const isValidSha1 = (s) => /^[0-9a-f]{40}$/.test(s);
|
|
232
|
+
const isValidSha256 = (s) => /^[0-9a-f]{64}$/.test(s);
|
|
233
|
+
if (!isValidSha1(sha) && !isValidSha256(sha)) {
|
|
234
|
+
throw new Error(`Invalid commit format: ${sha}`);
|
|
235
|
+
}
|
|
236
|
+
return sha;
|
|
237
|
+
};
|
|
238
|
+
const getObjectsToUpload = (git, commitsToInclude, commitsToExclude) => __awaiter(void 0, void 0, void 0, function* () {
|
|
239
|
+
const rawResponse = yield git.raw(['rev-list', '--objects', '--no-object-names', '--filter=blob:none', `--since="${MAX_HISTORY.oldestCommits}"`]
|
|
240
|
+
.concat(commitsToExclude.map((sha) => '^' + sha))
|
|
241
|
+
.concat(commitsToInclude));
|
|
242
|
+
const objectsToInclude = rawResponse.split('\n').filter((c) => c !== '');
|
|
243
|
+
return objectsToInclude;
|
|
244
|
+
});
|
|
245
|
+
const generatePackFilesForCommits = (log, commits) => __awaiter(void 0, void 0, void 0, function* () {
|
|
246
|
+
if (commits.length === 0) {
|
|
247
|
+
return [[], undefined];
|
|
248
|
+
}
|
|
249
|
+
const generatePackfiles = (baseTmpPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
250
|
+
const randomPrefix = String(Math.floor(Math.random() * 10000));
|
|
251
|
+
const tmpPath = yield (0, promises_1.mkdtemp)(upath_1.default.join(baseTmpPath, 'dd-packfiles-'));
|
|
252
|
+
const packfilePath = upath_1.default.join(tmpPath, randomPrefix);
|
|
253
|
+
const packObjectResults = child_process_1.default
|
|
254
|
+
.execSync(`git pack-objects --compression=9 --max-pack-size=3m ${packfilePath}`, {
|
|
255
|
+
input: commits.join('\n'),
|
|
256
|
+
})
|
|
257
|
+
.toString()
|
|
258
|
+
.split('\n')
|
|
259
|
+
.filter((sha) => sha.length > 0)
|
|
260
|
+
.map((sha) => `${packfilePath}-${sha}.pack`);
|
|
261
|
+
return [packObjectResults, tmpPath];
|
|
262
|
+
});
|
|
263
|
+
// Try using tmp folder first:
|
|
264
|
+
try {
|
|
265
|
+
return yield generatePackfiles(os_1.default.tmpdir());
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
/**
|
|
269
|
+
* The generation of pack files in the temporary folder (from `os.tmpdir()`)
|
|
270
|
+
* sometimes fails in certain CI setups with the error message
|
|
271
|
+
* `unable to rename temporary pack file: Invalid cross-device link`.
|
|
272
|
+
* The reason why is unclear.
|
|
273
|
+
*
|
|
274
|
+
* A workaround is to attempt to generate the pack files in `process.cwd()`.
|
|
275
|
+
* While this works most of the times, it's not ideal since it affects the git status.
|
|
276
|
+
* This workaround is intended to be temporary.
|
|
277
|
+
*
|
|
278
|
+
* TODO: fix issue and remove workaround.
|
|
279
|
+
*/
|
|
280
|
+
log.warn(`Failed generation of packfiles in tmpdir: ${err}`);
|
|
281
|
+
log.warn(`Generating them in ${process.cwd()} instead`);
|
|
282
|
+
return generatePackfiles(process.cwd());
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
const uploadPackfiles = (log, request, repoURL, headCommit, packfilePaths) => __awaiter(void 0, void 0, void 0, function* () {
|
|
286
|
+
// this loop makes sure requests are performed sequentially
|
|
287
|
+
for (const pack of packfilePaths) {
|
|
288
|
+
yield (0, exports.uploadPackfile)(log, request, repoURL, headCommit, pack);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
exports.uploadPackfiles = uploadPackfiles;
|
|
292
|
+
const uploadPackfile = (log, request, repoURL, headCommit, packfilePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
293
|
+
const pushedSha = JSON.stringify({
|
|
294
|
+
data: {
|
|
295
|
+
id: headCommit,
|
|
296
|
+
type: 'commit',
|
|
297
|
+
},
|
|
298
|
+
meta: {
|
|
299
|
+
repository_url: repoURL,
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
const form = new form_data_1.default();
|
|
303
|
+
form.append('pushedSha', pushedSha, { contentType: 'application/json' });
|
|
304
|
+
const packFileContent = fs_1.default.readFileSync(packfilePath);
|
|
305
|
+
// The original filename includes a random prefix, so we remove it here
|
|
306
|
+
const [, filename] = upath_1.default.basename(packfilePath).split('-');
|
|
307
|
+
form.append('packfile', packFileContent, {
|
|
308
|
+
filename,
|
|
309
|
+
contentType: 'application/octet-stream',
|
|
310
|
+
});
|
|
311
|
+
return runRequest(log, 'packfile', () => request({
|
|
312
|
+
url: '/api/v2/git/repository/packfile',
|
|
313
|
+
headers: Object.assign({}, form.getHeaders()),
|
|
314
|
+
timeout: API_TIMEOUT,
|
|
315
|
+
data: form,
|
|
316
|
+
method: 'POST',
|
|
317
|
+
}));
|
|
318
|
+
});
|
|
319
|
+
exports.uploadPackfile = uploadPackfile;
|
|
320
|
+
// runRequest will run the passed request, with retries of retriable errors + logging of any retry attempt.
|
|
321
|
+
const runRequest = (log, reqName, request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
322
|
+
return (0, retry_1.retryRequest)(request, {
|
|
323
|
+
retries: 2,
|
|
324
|
+
onRetry: (e, attempt) => {
|
|
325
|
+
let errorMessage = `${e}`;
|
|
326
|
+
const maybeHttpError = e;
|
|
327
|
+
if (maybeHttpError.response && maybeHttpError.response.statusText) {
|
|
328
|
+
errorMessage = `${maybeHttpError.message} (${maybeHttpError.response.statusText})`;
|
|
329
|
+
}
|
|
330
|
+
log.warn(`[attempt ${attempt}] Retrying ${reqName} request: ${errorMessage}`);
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
//# sourceMappingURL=gitdb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitdb.js","sourceRoot":"","sources":["../../../src/commands/git-metadata/gitdb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './library';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./library"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/git-metadata/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MultipartPayload } from '../../helpers/upload';
|
|
2
|
+
export declare class CommitInfo {
|
|
3
|
+
hash: string;
|
|
4
|
+
remote: string;
|
|
5
|
+
trackedFiles: string[];
|
|
6
|
+
constructor(hash: string, remote: string, trackedFiles: string[]);
|
|
7
|
+
asMultipartPayload(cliVersion: string): MultipartPayload;
|
|
8
|
+
private getMetadataPayload;
|
|
9
|
+
private repositoryPayload;
|
|
10
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommitInfo = void 0;
|
|
4
|
+
class CommitInfo {
|
|
5
|
+
constructor(hash, remote, trackedFiles) {
|
|
6
|
+
this.repositoryPayload = () => JSON.stringify({
|
|
7
|
+
data: [
|
|
8
|
+
{
|
|
9
|
+
files: this.trackedFiles,
|
|
10
|
+
hash: this.hash,
|
|
11
|
+
repository_url: this.remote,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
// Make sure to update the version if the format of the JSON payloads changes in any way.
|
|
15
|
+
version: 1,
|
|
16
|
+
});
|
|
17
|
+
this.hash = hash;
|
|
18
|
+
this.remote = remote;
|
|
19
|
+
this.trackedFiles = trackedFiles;
|
|
20
|
+
}
|
|
21
|
+
asMultipartPayload(cliVersion) {
|
|
22
|
+
return {
|
|
23
|
+
content: new Map([
|
|
24
|
+
['event', this.getMetadataPayload(cliVersion)],
|
|
25
|
+
[
|
|
26
|
+
'repository',
|
|
27
|
+
{
|
|
28
|
+
type: 'string',
|
|
29
|
+
options: {
|
|
30
|
+
contentType: 'application/json',
|
|
31
|
+
filename: 'repository',
|
|
32
|
+
},
|
|
33
|
+
value: this.repositoryPayload(),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
]),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
getMetadataPayload(cliVersion) {
|
|
40
|
+
return {
|
|
41
|
+
type: 'string',
|
|
42
|
+
options: {
|
|
43
|
+
contentType: 'application/json',
|
|
44
|
+
filename: 'event',
|
|
45
|
+
},
|
|
46
|
+
value: JSON.stringify({
|
|
47
|
+
cli_version: cliVersion,
|
|
48
|
+
git_commit_sha: this.hash,
|
|
49
|
+
git_repository_url: this.remote,
|
|
50
|
+
type: 'repository',
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.CommitInfo = CommitInfo;
|
|
56
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/commands/git-metadata/interfaces.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAKrB,YAAY,IAAY,EAAE,MAAc,EAAE,YAAsB;QAyCxD,sBAAiB,GAAG,GAAW,EAAE,CACvC,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,cAAc,EAAE,IAAI,CAAC,MAAM;iBAC5B;aACF;YACD,yFAAyF;YACzF,OAAO,EAAE,CAAC;SACX,CAAC,CAAA;QAnDF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAEM,kBAAkB,CAAC,UAAkB;QAC1C,OAAO;YACL,OAAO,EAAE,IAAI,GAAG,CAAC;gBACf,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC9C;oBACE,YAAY;oBACZ;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE;4BACP,WAAW,EAAE,kBAAkB;4BAC/B,QAAQ,EAAE,YAAY;yBACvB;wBACD,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;qBAChC;iBACF;aACF,CAAC;SACH,CAAA;IACH,CAAC;IAEO,kBAAkB,CAAC,UAAkB;QAC3C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE,OAAO;aAClB;YACD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,IAAI,CAAC,IAAI;gBACzB,kBAAkB,EAAE,IAAI,CAAC,MAAM;gBAC/B,IAAI,EAAE,YAAY;aACnB,CAAC;SACH,CAAA;IACH,CAAC;CAcF;AA1DD,gCA0DC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RequestBuilder } from '../../helpers/interfaces';
|
|
2
|
+
import { UploadOptions, UploadStatus } from '../../helpers/upload';
|
|
3
|
+
import { CommitInfo } from './interfaces';
|
|
4
|
+
export declare const isGitRepo: () => Promise<boolean>;
|
|
5
|
+
export declare const getGitCommitInfo: (filterAndFormatGitRepoUrl?: boolean) => Promise<[string, string]>;
|
|
6
|
+
export declare const uploadGitCommitHash: (apiKey: string, datadogSite: string, repositoryURL?: string) => Promise<[string, string]>;
|
|
7
|
+
export declare const uploadRepository: (requestBuilder: RequestBuilder, libraryVersion: string) => (commitInfo: CommitInfo, opts: UploadOptions) => Promise<UploadStatus>;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.uploadRepository = exports.uploadGitCommitHash = exports.getGitCommitInfo = exports.isGitRepo = void 0;
|
|
13
|
+
const apikey_1 = require("../../helpers/apikey");
|
|
14
|
+
const logger_1 = require("../../helpers/logger");
|
|
15
|
+
const upload_1 = require("../../helpers/upload");
|
|
16
|
+
const utils_1 = require("../../helpers/utils");
|
|
17
|
+
const version_1 = require("../../version");
|
|
18
|
+
const git_1 = require("./git");
|
|
19
|
+
const gitdb_1 = require("./gitdb");
|
|
20
|
+
const isGitRepo = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
try {
|
|
22
|
+
const simpleGit = yield (0, git_1.newSimpleGit)();
|
|
23
|
+
const isRepo = simpleGit.checkIsRepo();
|
|
24
|
+
return isRepo;
|
|
25
|
+
}
|
|
26
|
+
catch (_a) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
exports.isGitRepo = isGitRepo;
|
|
31
|
+
// getGitCommitInfo returns the current [repositoryURL, commitHash]. If parameter
|
|
32
|
+
// filterAndFormatGitRepoUrl == true, the repositoryURL will have sensitive information filtered and
|
|
33
|
+
// git prefix normalized.
|
|
34
|
+
// ("git@github.com:" and "https://github.com/" prefixes will be normalized into "github.com/")
|
|
35
|
+
const getGitCommitInfo = (filterAndFormatGitRepoUrl = true) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const simpleGit = yield (0, git_1.newSimpleGit)();
|
|
37
|
+
const payload = yield (0, git_1.getCommitInfo)(simpleGit);
|
|
38
|
+
const gitRemote = filterAndFormatGitRepoUrl ? (0, utils_1.filterAndFormatGithubRemote)(payload.remote) : payload.remote;
|
|
39
|
+
// gitRemote will never be undefined, as filterAndFormatGithubRemote will ONLY return undefined if it's
|
|
40
|
+
// parameter value is also undefined. Added the " gitRemote ?? '' " to make the typechecker happy.
|
|
41
|
+
return [gitRemote !== null && gitRemote !== void 0 ? gitRemote : '', payload.hash];
|
|
42
|
+
});
|
|
43
|
+
exports.getGitCommitInfo = getGitCommitInfo;
|
|
44
|
+
// uploadGitCommitHash uploads local git metadata and returns the current [repositoryURL, commitHash].
|
|
45
|
+
// The current repositoryURL can be overridden by specifying the 'repositoryURL' arg.
|
|
46
|
+
const uploadGitCommitHash = (apiKey, datadogSite, repositoryURL) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
const simpleGit = yield (0, git_1.newSimpleGit)();
|
|
48
|
+
const payload = yield (0, git_1.getCommitInfo)(simpleGit, repositoryURL);
|
|
49
|
+
return Promise.all([
|
|
50
|
+
syncGitDB(simpleGit, apiKey, datadogSite, payload.remote),
|
|
51
|
+
uploadToSrcmapTrack(apiKey, datadogSite, payload),
|
|
52
|
+
]).then(() => [payload.remote, payload.hash]);
|
|
53
|
+
});
|
|
54
|
+
exports.uploadGitCommitHash = uploadGitCommitHash;
|
|
55
|
+
const syncGitDB = (simpleGit, apiKey, datadogSite, repositoryURL) => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
// no-op logger
|
|
57
|
+
const log = new logger_1.Logger((s) => { }, logger_1.LogLevel.INFO);
|
|
58
|
+
const requestBuilder = (0, utils_1.getRequestBuilder)({
|
|
59
|
+
apiKey,
|
|
60
|
+
baseUrl: 'https://api.' + datadogSite,
|
|
61
|
+
});
|
|
62
|
+
yield (0, gitdb_1.uploadToGitDB)(log, requestBuilder, simpleGit, false, repositoryURL);
|
|
63
|
+
});
|
|
64
|
+
// uploadToSrcmapTrack uploads the payload with tracked files to the sourcemap intake
|
|
65
|
+
// this will be deprecated in the future, as we're transitioning to GitDB
|
|
66
|
+
const uploadToSrcmapTrack = (apiKey, datadogSite, payload) => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
+
const apiKeyValidator = (0, apikey_1.newApiKeyValidator)({
|
|
68
|
+
apiKey,
|
|
69
|
+
datadogSite,
|
|
70
|
+
});
|
|
71
|
+
const requestBuilder = (0, utils_1.getRequestBuilder)({
|
|
72
|
+
apiKey,
|
|
73
|
+
baseUrl: 'https://sourcemap-intake.' + datadogSite,
|
|
74
|
+
headers: new Map([
|
|
75
|
+
['DD-EVP-ORIGIN', 'datadog-ci_sci'],
|
|
76
|
+
['DD-EVP-ORIGIN-VERSION', version_1.cliVersion],
|
|
77
|
+
]),
|
|
78
|
+
overrideUrl: 'api/v2/srcmap',
|
|
79
|
+
});
|
|
80
|
+
const status = yield (0, exports.uploadRepository)(requestBuilder, version_1.cliVersion)(payload, {
|
|
81
|
+
apiKeyValidator,
|
|
82
|
+
onError: (e) => {
|
|
83
|
+
throw e;
|
|
84
|
+
},
|
|
85
|
+
onRetry: () => {
|
|
86
|
+
// Do nothing
|
|
87
|
+
},
|
|
88
|
+
onUpload: () => {
|
|
89
|
+
return;
|
|
90
|
+
},
|
|
91
|
+
retries: 5,
|
|
92
|
+
});
|
|
93
|
+
if (status !== upload_1.UploadStatus.Success) {
|
|
94
|
+
throw new Error('Error uploading commit information.');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
const uploadRepository = (requestBuilder, libraryVersion) => (commitInfo, opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
const payload = commitInfo.asMultipartPayload(libraryVersion);
|
|
99
|
+
return (0, upload_1.upload)(requestBuilder)(payload, opts);
|
|
100
|
+
});
|
|
101
|
+
exports.uploadRepository = uploadRepository;
|
|
102
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/commands/git-metadata/library.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,iDAAuD;AAEvD,iDAAqD;AACrD,iDAAwE;AACxE,+CAAkF;AAClF,2CAAwC;AAExC,+BAAiD;AACjD,mCAAqC;AAG9B,MAAM,SAAS,GAAG,GAA2B,EAAE;IACpD,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAY,GAAE,CAAA;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;QAEtC,OAAO,MAAM,CAAA;KACd;IAAC,WAAM;QACN,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA,CAAA;AATY,QAAA,SAAS,aASrB;AAED,iFAAiF;AACjF,oGAAoG;AACpG,yBAAyB;AACzB,+FAA+F;AACxF,MAAM,gBAAgB,GAAG,CAAO,yBAAyB,GAAG,IAAI,EAA6B,EAAE;IACpG,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAY,GAAE,CAAA;IACtC,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAa,EAAC,SAAS,CAAC,CAAA;IAE9C,MAAM,SAAS,GAAG,yBAAyB,CAAC,CAAC,CAAC,IAAA,mCAA2B,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IAE1G,uGAAuG;IACvG,kGAAkG;IAClG,OAAO,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC,CAAA,CAAA;AATY,QAAA,gBAAgB,oBAS5B;AAED,sGAAsG;AACtG,qFAAqF;AAC9E,MAAM,mBAAmB,GAAG,CACjC,MAAc,EACd,WAAmB,EACnB,aAAsB,EACK,EAAE;IAC7B,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAY,GAAE,CAAA;IACtC,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAa,EAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7D,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;QACzD,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;KAClD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA,CAAA;AAZY,QAAA,mBAAmB,uBAY/B;AAED,MAAM,SAAS,GAAG,CAAO,SAAoB,EAAE,MAAc,EAAE,WAAmB,EAAE,aAAqB,EAAE,EAAE;IAC3G,eAAe;IACf,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,CAAC,CAAS,EAAE,EAAE,GAAE,CAAC,EAAE,iBAAQ,CAAC,IAAI,CAAC,CAAA;IAExD,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC;QACvC,MAAM;QACN,OAAO,EAAE,cAAc,GAAG,WAAW;KACtC,CAAC,CAAA;IAEF,MAAM,IAAA,qBAAa,EAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;AAC3E,CAAC,CAAA,CAAA;AAED,qFAAqF;AACrF,yEAAyE;AACzE,MAAM,mBAAmB,GAAG,CAAO,MAAc,EAAE,WAAmB,EAAE,OAAmB,EAAE,EAAE;IAC7F,MAAM,eAAe,GAAG,IAAA,2BAAkB,EAAC;QACzC,MAAM;QACN,WAAW;KACZ,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC;QACvC,MAAM;QACN,OAAO,EAAE,2BAA2B,GAAG,WAAW;QAClD,OAAO,EAAE,IAAI,GAAG,CAAC;YACf,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,uBAAuB,EAAE,oBAAU,CAAC;SACtC,CAAC;QACF,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAgB,EAAC,cAAc,EAAE,oBAAU,CAAC,CAAC,OAAO,EAAE;QACzE,eAAe;QACf,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,MAAM,CAAC,CAAA;QACT,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,aAAa;QACf,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAM;QACR,CAAC;QACD,OAAO,EAAE,CAAC;KACX,CAAC,CAAA;IAEF,IAAI,MAAM,KAAK,qBAAY,CAAC,OAAO,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACvD;AACH,CAAC,CAAA,CAAA;AAEM,MAAM,gBAAgB,GAC3B,CACE,cAA8B,EAC9B,cAAsB,EACoD,EAAE,CAC9E,CAAO,UAAsB,EAAE,IAAmB,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAE7D,OAAO,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC,CAAA,CAAA;AATU,QAAA,gBAAgB,oBAS1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CommitInfo } from './interfaces';
|
|
2
|
+
export declare const renderConfigurationError: (error: Error) => string;
|
|
3
|
+
export declare const renderFailedUpload: (errorMessage: string) => string;
|
|
4
|
+
export declare const renderRetriedUpload: (errorMessage: string, attempt: number) => string;
|
|
5
|
+
export declare const renderSuccessfulCommand: (duration: number, dryRun: boolean) => string;
|
|
6
|
+
export declare const renderDryRunWarning: () => string;
|
|
7
|
+
export declare const renderCommandInfo: (commit: CommitInfo) => string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderCommandInfo = exports.renderDryRunWarning = exports.renderSuccessfulCommand = exports.renderRetriedUpload = exports.renderFailedUpload = exports.renderConfigurationError = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const formatting_1 = require("../../helpers/formatting");
|
|
9
|
+
const renderConfigurationError = (error) => `${formatting_1.ICONS.FAILED} Configuration error: ${error}.`;
|
|
10
|
+
exports.renderConfigurationError = renderConfigurationError;
|
|
11
|
+
const renderFailedUpload = (errorMessage) => `${formatting_1.ICONS.FAILED} Failed upload: ${errorMessage}`;
|
|
12
|
+
exports.renderFailedUpload = renderFailedUpload;
|
|
13
|
+
const renderRetriedUpload = (errorMessage, attempt) => `[attempt ${attempt}] Retrying upload: ${errorMessage}`;
|
|
14
|
+
exports.renderRetriedUpload = renderRetriedUpload;
|
|
15
|
+
const renderSuccessfulCommand = (duration, dryRun) => {
|
|
16
|
+
if (dryRun) {
|
|
17
|
+
return chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} [DRYRUN] Handled in ${duration} seconds.`);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} Uploaded in ${duration} seconds.`);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.renderSuccessfulCommand = renderSuccessfulCommand;
|
|
24
|
+
const renderDryRunWarning = () => `${formatting_1.ICONS.WARNING} DRY-RUN MODE ENABLED. WILL NOT UPLOAD`;
|
|
25
|
+
exports.renderDryRunWarning = renderDryRunWarning;
|
|
26
|
+
const renderCommandInfo = (commit) => `Reporting commit ${commit.hash} from repository ${commit.remote}.
|
|
27
|
+
${commit.trackedFiles.length} tracked file paths will be reported.`;
|
|
28
|
+
exports.renderCommandInfo = renderCommandInfo;
|
|
29
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/git-metadata/renderer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAEzB,yDAA8C;AAIvC,MAAM,wBAAwB,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,kBAAK,CAAC,MAAM,yBAAyB,KAAK,GAAG,CAAA;AAA7F,QAAA,wBAAwB,4BAAqE;AAEnG,MAAM,kBAAkB,GAAG,CAAC,YAAoB,EAAE,EAAE,CAAC,GAAG,kBAAK,CAAC,MAAM,mBAAmB,YAAY,EAAE,CAAA;AAA/F,QAAA,kBAAkB,sBAA6E;AAErG,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,OAAe,EAAE,EAAE,CAC3E,YAAY,OAAO,sBAAsB,YAAY,EAAE,CAAA;AAD5C,QAAA,mBAAmB,uBACyB;AAElD,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAE,MAAe,EAAE,EAAE;IAC3E,IAAI,MAAM,EAAE;QACV,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,kBAAK,CAAC,OAAO,wBAAwB,QAAQ,WAAW,CAAC,CAAA;KAChF;SAAM;QACL,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,kBAAK,CAAC,OAAO,gBAAgB,QAAQ,WAAW,CAAC,CAAA;KACxE;AACH,CAAC,CAAA;AANY,QAAA,uBAAuB,2BAMnC;AAEM,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,GAAG,kBAAK,CAAC,OAAO,wCAAwC,CAAA;AAApF,QAAA,mBAAmB,uBAAiE;AAE1F,MAAM,iBAAiB,GAAG,CAAC,MAAkB,EAAE,EAAE,CACtD,oBAAoB,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,MAAM;EAChE,MAAM,CAAC,YAAY,CAAC,MAAM,uCAAuC,CAAA;AAFtD,QAAA,iBAAiB,qBAEqC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class UploadCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
private repositoryURL;
|
|
6
|
+
private dryRun;
|
|
7
|
+
private verbose;
|
|
8
|
+
private noGitSync;
|
|
9
|
+
private directory;
|
|
10
|
+
private cliVersion;
|
|
11
|
+
private fips;
|
|
12
|
+
private fipsIgnoreError;
|
|
13
|
+
private config;
|
|
14
|
+
private logger;
|
|
15
|
+
execute(): Promise<1 | 0>;
|
|
16
|
+
private uploadToGitDB;
|
|
17
|
+
private uploadToSrcmapTrack;
|
|
18
|
+
private getSrcmapRequestBuilder;
|
|
19
|
+
private getApiRequestBuilder;
|
|
20
|
+
}
|