@datadog/datadog-ci-plugin-sarif 3.21.0 → 3.21.2

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/dist/api.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { Writable } from 'stream';
2
+ import type { AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios';
3
+ import { Payload } from './interfaces';
4
+ export declare const uploadSarifReport: (request: (args: AxiosRequestConfig) => AxiosPromise<AxiosResponse>) => (sarifReport: Payload, write: Writable['write']) => Promise<AxiosResponse<AxiosResponse<any, any>, any>>;
5
+ export declare const apiConstructor: (baseIntakeUrl: string, apiKey: string) => {
6
+ uploadSarifReport: (sarifReport: Payload, write: Writable['write']) => Promise<AxiosResponse<AxiosResponse<any, any>, any>>;
7
+ };
package/dist/api.js ADDED
@@ -0,0 +1,49 @@
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.apiConstructor = exports.uploadSarifReport = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const zlib_1 = require("zlib");
18
+ const utils_1 = require("@datadog/datadog-ci-base/helpers/utils");
19
+ const form_data_1 = __importDefault(require("form-data"));
20
+ const uuid_1 = require("uuid");
21
+ const renderer_1 = require("./renderer");
22
+ // Dependency follows-redirects sets a default maxBodyLength of 10 MB https://github.com/follow-redirects/follow-redirects/blob/b774a77e582b97174813b3eaeb86931becba69db/index.js#L391
23
+ // We don't want any hard limit enforced by the CLI, the backend will enforce a max size by returning 413 errors.
24
+ const maxBodyLength = Infinity;
25
+ const uploadSarifReport = (request) => (sarifReport, write) => __awaiter(void 0, void 0, void 0, function* () {
26
+ const form = new form_data_1.default();
27
+ write((0, renderer_1.renderUpload)(sarifReport));
28
+ const metadata = Object.assign(Object.assign({ service: sarifReport.service }, sarifReport.spanTags), { event_type: 'static_analysis', event_format_name: 'sarif', event_format_version: '2.1.0' });
29
+ form.append('event', JSON.stringify(metadata), { filename: 'event.json' });
30
+ form.append('sarif_report_file', fs_1.default.createReadStream(sarifReport.reportPath).pipe((0, zlib_1.createGzip)()), {
31
+ filename: `${(0, uuid_1.v4)()}.sarif.gz`,
32
+ });
33
+ return request({
34
+ data: form,
35
+ headers: form.getHeaders(),
36
+ maxBodyLength,
37
+ method: 'POST',
38
+ url: 'api/v2/cicodescan',
39
+ });
40
+ });
41
+ exports.uploadSarifReport = uploadSarifReport;
42
+ const apiConstructor = (baseIntakeUrl, apiKey) => {
43
+ const requestIntake = (0, utils_1.getRequestBuilder)({ baseUrl: baseIntakeUrl, apiKey });
44
+ return {
45
+ uploadSarifReport: (0, exports.uploadSarifReport)(requestIntake),
46
+ };
47
+ };
48
+ exports.apiConstructor = apiConstructor;
49
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAmB;AAEnB,+BAA+B;AAI/B,kEAAwE;AACxE,0DAAgC;AAChC,+BAAiC;AAGjC,yCAAuC;AAEvC,sLAAsL;AACtL,iHAAiH;AACjH,MAAM,aAAa,GAAG,QAAQ,CAAA;AAEvB,MAAM,iBAAiB,GAC5B,CAAC,OAAkE,EAAE,EAAE,CACvE,CAAO,WAAoB,EAAE,KAAwB,EAAE,EAAE;IACvD,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAC3B,KAAK,CAAC,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC,CAAA;IAEhC,MAAM,QAAQ,iCACZ,OAAO,EAAE,WAAW,CAAC,OAAO,IACzB,WAAW,CAAC,QAAQ,KACvB,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EAAE,OAAO,EAC1B,oBAAoB,EAAE,OAAO,GAC9B,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAA;IAExE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,YAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAU,GAAE,CAAC,EAAE;QAC/F,QAAQ,EAAE,GAAG,IAAA,SAAM,GAAE,WAAW;KACjC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;QAC1B,aAAa;QACb,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,mBAAmB;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AA3BU,QAAA,iBAAiB,qBA2B3B;AAEI,MAAM,cAAc,GAAG,CAAC,aAAqB,EAAE,MAAc,EAAE,EAAE;IACtE,MAAM,aAAa,GAAG,IAAA,yBAAiB,EAAC,EAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAC,CAAC,CAAA;IAEzE,OAAO;QACL,iBAAiB,EAAE,IAAA,yBAAiB,EAAC,aAAa,CAAC;KACpD,CAAA;AACH,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const upload_1 = require("./commands/upload");
4
+ module.exports = [upload_1.PluginCommand];
5
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAAA,8CAAqE;AAErE,MAAM,CAAC,OAAO,GAAG,CAAC,sBAAkB,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { SarifUploadCommand } from '@datadog/datadog-ci-base/commands/sarif/upload-command';
2
+ export declare class PluginCommand extends SarifUploadCommand {
3
+ private config;
4
+ private fipsConfig;
5
+ execute(): Promise<1 | undefined>;
6
+ private uploadSarifReport;
7
+ private getApiHelper;
8
+ private getMatchingSarifReports;
9
+ }
@@ -0,0 +1,151 @@
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.PluginCommand = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const upload_command_1 = require("@datadog/datadog-ci-base/commands/sarif/upload-command");
18
+ const constants_1 = require("@datadog/datadog-ci-base/constants");
19
+ const concurrency_1 = require("@datadog/datadog-ci-base/helpers/concurrency");
20
+ const env_1 = require("@datadog/datadog-ci-base/helpers/env");
21
+ const fips_1 = require("@datadog/datadog-ci-base/helpers/fips");
22
+ const glob_1 = require("@datadog/datadog-ci-base/helpers/glob");
23
+ const retry_1 = require("@datadog/datadog-ci-base/helpers/retry");
24
+ const tags_1 = require("@datadog/datadog-ci-base/helpers/tags");
25
+ const utils_1 = require("@datadog/datadog-ci-base/helpers/utils");
26
+ const chalk_1 = __importDefault(require("chalk"));
27
+ const upath_1 = __importDefault(require("upath"));
28
+ const api_1 = require("../api");
29
+ const renderer_1 = require("../renderer");
30
+ const utils_2 = require("../utils");
31
+ const validation_1 = require("../validation");
32
+ class PluginCommand extends upload_command_1.SarifUploadCommand {
33
+ constructor() {
34
+ var _a, _b;
35
+ super(...arguments);
36
+ this.config = {
37
+ apiKey: process.env.DATADOG_API_KEY || process.env.DD_API_KEY,
38
+ env: process.env.DD_ENV,
39
+ envVarTags: process.env.DD_TAGS,
40
+ };
41
+ this.fipsConfig = {
42
+ fips: (_a = (0, env_1.toBoolean)(process.env[constants_1.FIPS_ENV_VAR])) !== null && _a !== void 0 ? _a : false,
43
+ fipsIgnoreError: (_b = (0, env_1.toBoolean)(process.env[constants_1.FIPS_IGNORE_ERROR_ENV_VAR])) !== null && _b !== void 0 ? _b : false,
44
+ };
45
+ }
46
+ execute() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ (0, fips_1.enableFips)(this.fips || this.fipsConfig.fips, this.fipsIgnoreError || this.fipsConfig.fipsIgnoreError);
49
+ // TODO(julien): remove this notice in April 2025
50
+ if (this.serviceFromCli) {
51
+ this.context.stderr.write('The CLI flag `--service` is deprecated and will be removed in a future version of datadog-ci\n');
52
+ this.context.stderr.write('To associate findings with services, consider using the service-to-repo mapping from service catalog\n');
53
+ this.context.stderr.write('Learn more at https://docs.datadoghq.com/getting_started/code_security/?tab=staticcodeanalysissast#link-datadog-services-to-repository-scan-results\n');
54
+ }
55
+ if (!this.basePaths || !this.basePaths.length) {
56
+ this.context.stderr.write('Missing basePath\n');
57
+ return 1;
58
+ }
59
+ if (!this.config.env) {
60
+ this.config.env = this.env;
61
+ }
62
+ const api = this.getApiHelper();
63
+ // Normalizing the basePath to resolve .. and .
64
+ this.basePaths = this.basePaths.map((basePath) => upath_1.default.normalize(basePath));
65
+ const spanTags = yield (0, tags_1.getSpanTags)(this.config, this.tags, !this.noCiTags, this.gitPath);
66
+ // Gather any missing mandatory git fields to display to the user
67
+ const missingGitFields = (0, tags_1.getMissingRequiredGitTags)(spanTags);
68
+ if (missingGitFields.length > 0) {
69
+ this.context.stdout.write((0, renderer_1.renderMissingTags)(missingGitFields));
70
+ return 1;
71
+ }
72
+ const payloads = yield this.getMatchingSarifReports(spanTags);
73
+ if (payloads.length === 0) {
74
+ this.context.stdout.write((0, renderer_1.renderFilesNotFound)(this.basePaths));
75
+ return 1;
76
+ }
77
+ const sha = spanTags[tags_1.GIT_SHA] || 'sha-not-found';
78
+ const env = this.config.env || 'env-not-set';
79
+ this.context.stdout.write((0, renderer_1.renderCommandInfo)(this.basePaths, env, sha, this.maxConcurrency, this.dryRun, this.noVerify));
80
+ const upload = (payload) => this.uploadSarifReport(api, payload);
81
+ const initialTime = new Date().getTime();
82
+ yield (0, concurrency_1.doWithMaxConcurrency)(this.maxConcurrency, payloads, upload);
83
+ const totalTimeSeconds = (Date.now() - initialTime) / 1000;
84
+ this.context.stdout.write((0, renderer_1.renderSuccessfulCommand)(payloads.length, totalTimeSeconds));
85
+ });
86
+ }
87
+ uploadSarifReport(api, sarifReport) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ if (this.dryRun) {
90
+ this.context.stdout.write((0, renderer_1.renderDryRunUpload)(sarifReport));
91
+ return;
92
+ }
93
+ try {
94
+ yield (0, retry_1.retryRequest)(() => api.uploadSarifReport(sarifReport, this.context.stdout.write.bind(this.context.stdout)), {
95
+ onRetry: (e, attempt) => {
96
+ this.context.stderr.write((0, renderer_1.renderRetriedUpload)(sarifReport, e.message, attempt));
97
+ },
98
+ retries: 5,
99
+ });
100
+ }
101
+ catch (error) {
102
+ this.context.stderr.write((0, renderer_1.renderFailedUpload)(sarifReport, error));
103
+ throw error;
104
+ }
105
+ });
106
+ }
107
+ getApiHelper() {
108
+ if (!this.config.apiKey) {
109
+ this.context.stdout.write(`Neither ${chalk_1.default.red.bold('DATADOG_API_KEY')} nor ${chalk_1.default.red.bold('DD_API_KEY')} is in your environment.\n`);
110
+ throw new Error('API key is missing');
111
+ }
112
+ return (0, api_1.apiConstructor)((0, utils_2.getBaseIntakeUrl)(), this.config.apiKey);
113
+ }
114
+ getMatchingSarifReports(spanTags) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const sarifReports = (this.basePaths || []).reduce((acc, basePath) => {
117
+ const isFile = !!upath_1.default.extname(basePath);
118
+ if (isFile) {
119
+ return acc.concat(fs_1.default.existsSync(basePath) ? [basePath] : []);
120
+ }
121
+ return acc.concat((0, glob_1.globSync)((0, utils_1.buildPath)(basePath, '*.sarif'), { dotRelative: true }));
122
+ }, []);
123
+ const validUniqueFiles = [...new Set(sarifReports)].filter((sarifReport) => {
124
+ if (this.noVerify) {
125
+ return true;
126
+ }
127
+ const validationErrorMessage = (0, validation_1.validateSarif)(sarifReport);
128
+ if (validationErrorMessage) {
129
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
130
+ this.context.stdout.write((0, renderer_1.renderInvalidFile)(sarifReport, [validationErrorMessage]));
131
+ return false;
132
+ }
133
+ const potentialErrors = (0, validation_1.checkForError)(sarifReport);
134
+ if (potentialErrors.length > 0) {
135
+ this.context.stdout.write((0, renderer_1.renderInvalidFile)(sarifReport, potentialErrors));
136
+ return false;
137
+ }
138
+ return true;
139
+ });
140
+ return validUniqueFiles.map((sarifReport) => {
141
+ return {
142
+ reportPath: sarifReport,
143
+ spanTags,
144
+ service: (0, utils_2.getServiceFromSarifTool)(sarifReport),
145
+ };
146
+ });
147
+ });
148
+ }
149
+ }
150
+ exports.PluginCommand = PluginCommand;
151
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { Writable } from 'stream';
3
+ import type { AxiosPromise, AxiosResponse } from 'axios';
4
+ import { SpanTags } from '@datadog/datadog-ci-base/helpers/interfaces';
5
+ export interface Payload {
6
+ reportPath: string;
7
+ spanTags: SpanTags;
8
+ service: string;
9
+ }
10
+ export interface APIHelper {
11
+ uploadSarifReport(sarifReport: Payload, write: Writable['write']): AxiosPromise<AxiosResponse>;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}