@code-pushup/ci 0.70.0 → 0.72.0
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 +28 -1
- package/package.json +4 -3
- package/src/lib/cli/commands/compare.d.ts +3 -7
- package/src/lib/cli/commands/compare.js +4 -5
- package/src/lib/cli/commands/compare.js.map +1 -1
- package/src/lib/cli/index.d.ts +1 -1
- package/src/lib/cli/index.js +1 -1
- package/src/lib/cli/index.js.map +1 -1
- package/src/lib/cli/persist.d.ts +3 -2
- package/src/lib/cli/persist.js +9 -6
- package/src/lib/cli/persist.js.map +1 -1
- package/src/lib/constants.js +1 -0
- package/src/lib/constants.js.map +1 -1
- package/src/lib/models.d.ts +10 -1
- package/src/lib/monorepo/handlers/nx.js +2 -2
- package/src/lib/monorepo/handlers/nx.js.map +1 -1
- package/src/lib/portal/download.d.ts +2 -0
- package/src/lib/portal/download.js +16 -0
- package/src/lib/portal/download.js.map +1 -0
- package/src/lib/portal/index.d.ts +1 -0
- package/src/lib/portal/index.js +2 -0
- package/src/lib/portal/index.js.map +1 -0
- package/src/lib/portal/transform.d.ts +3 -0
- package/src/lib/portal/transform.js +179 -0
- package/src/lib/portal/transform.js.map +1 -0
- package/src/lib/run-monorepo.d.ts +2 -2
- package/src/lib/run-monorepo.js +67 -31
- package/src/lib/run-monorepo.js.map +1 -1
- package/src/lib/run-utils.d.ts +20 -7
- package/src/lib/run-utils.js +125 -35
- package/src/lib/run-utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -103,11 +103,12 @@ Optionally, you can override default options for further customization:
|
|
|
103
103
|
| `nxProjectsFilter` | `string \| string[]` | `'--with-target={task}'` | Arguments passed to [`nx show projects`](https://nx.dev/nx-api/nx/documents/show#projects), only relevant for Nx in [monorepo mode](#monorepo-mode) [^2] |
|
|
104
104
|
| `directory` | `string` | `process.cwd()` | Directory in which Code PushUp CLI should run |
|
|
105
105
|
| `config` | `string \| null` | `null` [^1] | Path to config file (`--config` option) |
|
|
106
|
-
| `silent` | `boolean` | `false` | Hides logs from CLI commands (
|
|
106
|
+
| `silent` | `boolean` | `false` | Hides logs from CLI commands (errors will be printed) |
|
|
107
107
|
| `bin` | `string` | `'npx --no-install code-pushup'` | Command for executing Code PushUp CLI |
|
|
108
108
|
| `detectNewIssues` | `boolean` | `true` | Toggles if new issues should be detected and returned in `newIssues` property |
|
|
109
109
|
| `logger` | `Logger` | `console` | Logger for reporting progress and encountered problems |
|
|
110
110
|
| `skipComment` | `boolean` | `false` | Toggles if comparison comment is posted to PR |
|
|
111
|
+
| `configPatterns` | `ConfigPatterns \| null` | `null` | Additional configuration which enables [faster CI runs](#faster-ci-runs-with-configpatterns) |
|
|
111
112
|
|
|
112
113
|
[^1]: By default, the `code-pushup.config` file is autodetected as described in [`@code-pushup/cli` docs](../cli/README.md#configuration).
|
|
113
114
|
|
|
@@ -216,6 +217,32 @@ await runInCI(refs, api, {
|
|
|
216
217
|
});
|
|
217
218
|
```
|
|
218
219
|
|
|
220
|
+
### Faster CI runs with `configPatterns`
|
|
221
|
+
|
|
222
|
+
By default, the `print-config` command is run sequentially for each project in order to reliably detect how `code-pushup` is configured - specifically, where to read output files from (`persist` config) and whether portal may be used as a cache (`upload` config). This allows for each project to be configured in its own way without breaking anything, but for large monorepos these extra `code-pushup print-config` executions can accumulate and significantly slow down CI pipelines.
|
|
223
|
+
|
|
224
|
+
As a more scalable alternative, `configPatterns` may be provided. A user declares upfront how every project is configured, which allows `print-config` to be skipped. It's the user's responsibility to ensure this configuration holds for every project (it won't be checked). The `configPatterns` support string interpolation, substituting `{projectName}` with each project's name. Other than that, each project's `code-pushup.config` must have exactly the same `persist` and `upload` configurations.
|
|
225
|
+
|
|
226
|
+
```ts
|
|
227
|
+
await runInCI(refs, api, {
|
|
228
|
+
monorepo: true,
|
|
229
|
+
configPatterns: {
|
|
230
|
+
persist: {
|
|
231
|
+
outputDir: '.code-pushup/{projectName}',
|
|
232
|
+
filename: 'report',
|
|
233
|
+
format: ['json', 'md'],
|
|
234
|
+
},
|
|
235
|
+
// optional: will use portal as cache when comparing reports in PRs
|
|
236
|
+
upload: {
|
|
237
|
+
server: 'https://api.code-pushup.example.com/graphql',
|
|
238
|
+
apiKey: 'cp_...',
|
|
239
|
+
organization: 'example',
|
|
240
|
+
project: '{projectName}',
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
219
246
|
### Monorepo result
|
|
220
247
|
|
|
221
248
|
In monorepo mode, the resolved object includes the merged diff at the top-level, as well as a list of projects.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/ci",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.72.0",
|
|
4
4
|
"description": "CI automation logic for Code PushUp (provider-agnostic)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/ci#readme",
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@code-pushup/models": "0.
|
|
30
|
-
"@code-pushup/
|
|
29
|
+
"@code-pushup/models": "0.72.0",
|
|
30
|
+
"@code-pushup/portal-client": "^0.14.3",
|
|
31
|
+
"@code-pushup/utils": "0.72.0",
|
|
31
32
|
"glob": "^11.0.1",
|
|
32
33
|
"simple-git": "^3.20.0",
|
|
33
34
|
"yaml": "^2.5.1",
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { CommandContext } from '../context.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
label?: string;
|
|
6
|
-
};
|
|
7
|
-
export declare function runCompare({ before, after, label }: CompareOptions, { bin, config, directory, observer }: CommandContext): Promise<void>;
|
|
8
|
-
export {};
|
|
2
|
+
export declare function runCompare({ bin, config, directory, observer }: CommandContext, { hasFormats }: {
|
|
3
|
+
hasFormats: boolean;
|
|
4
|
+
}): Promise<void>;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { DEFAULT_PERSIST_FORMAT } from '@code-pushup/models';
|
|
2
2
|
import { executeProcess, isVerbose } from '@code-pushup/utils';
|
|
3
|
-
export async function runCompare({
|
|
3
|
+
export async function runCompare({ bin, config, directory, observer }, { hasFormats }) {
|
|
4
4
|
await executeProcess({
|
|
5
5
|
command: bin,
|
|
6
6
|
args: [
|
|
7
7
|
'compare',
|
|
8
8
|
...(isVerbose() ? ['--verbose'] : []),
|
|
9
|
-
`--before=${before}`,
|
|
10
|
-
`--after=${after}`,
|
|
11
|
-
...(label ? [`--label=${label}`] : []),
|
|
12
9
|
...(config ? [`--config=${config}`] : []),
|
|
13
|
-
...
|
|
10
|
+
...(hasFormats
|
|
11
|
+
? []
|
|
12
|
+
: DEFAULT_PERSIST_FORMAT.map(format => `--persist.format=${format}`)),
|
|
14
13
|
],
|
|
15
14
|
cwd: directory,
|
|
16
15
|
observer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/cli/commands/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/cli/commands/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAkB,EACpD,EAAE,UAAU,EAA2B;IAEvC,MAAM,cAAc,CAAC;QACnB,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE;YACJ,SAAS;YACT,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,UAAU;gBACZ,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;SACxE;QACD,GAAG,EAAE,SAAS;QACd,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
|
package/src/lib/cli/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { runCompare } from './commands/compare.js';
|
|
|
3
3
|
export { runMergeDiffs } from './commands/merge-diffs.js';
|
|
4
4
|
export { runPrintConfig } from './commands/print-config.js';
|
|
5
5
|
export { createCommandContext, type CommandContext } from './context.js';
|
|
6
|
-
export { persistedFilesFromConfig } from './persist.js';
|
|
6
|
+
export { parsePersistConfig, persistedFilesFromConfig, type EnhancedPersistConfig, } from './persist.js';
|
package/src/lib/cli/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { runCompare } from './commands/compare.js';
|
|
|
3
3
|
export { runMergeDiffs } from './commands/merge-diffs.js';
|
|
4
4
|
export { runPrintConfig } from './commands/print-config.js';
|
|
5
5
|
export { createCommandContext } from './context.js';
|
|
6
|
-
export { persistedFilesFromConfig } from './persist.js';
|
|
6
|
+
export { parsePersistConfig, persistedFilesFromConfig, } from './persist.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/src/lib/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAEzB,MAAM,cAAc,CAAC"}
|
package/src/lib/cli/persist.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CoreConfig, type Format } from '@code-pushup/models';
|
|
2
|
-
export
|
|
2
|
+
export type EnhancedPersistConfig = Pick<CoreConfig, 'persist' | 'upload'>;
|
|
3
|
+
export declare function persistedFilesFromConfig(config: EnhancedPersistConfig, { isDiff, directory }: {
|
|
3
4
|
isDiff?: boolean;
|
|
4
5
|
directory: string;
|
|
5
6
|
}): Record<Format, string>;
|
|
6
|
-
export declare function parsePersistConfig(json: unknown): Promise<
|
|
7
|
+
export declare function parsePersistConfig(json: unknown): Promise<EnhancedPersistConfig>;
|
package/src/lib/cli/persist.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, persistConfigSchema, } from '@code-pushup/models';
|
|
4
|
-
import {
|
|
3
|
+
import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, persistConfigSchema, uploadConfigSchema, } from '@code-pushup/models';
|
|
4
|
+
import { createReportPath, objectFromEntries } from '@code-pushup/utils';
|
|
5
5
|
export function persistedFilesFromConfig(config, { isDiff, directory }) {
|
|
6
6
|
const { persist: { outputDir = DEFAULT_PERSIST_OUTPUT_DIR, filename = DEFAULT_PERSIST_FILENAME, } = {}, } = config;
|
|
7
7
|
const dir = path.isAbsolute(outputDir)
|
|
8
8
|
? outputDir
|
|
9
9
|
: path.join(directory, outputDir);
|
|
10
|
-
const
|
|
10
|
+
const suffix = isDiff ? 'diff' : undefined;
|
|
11
11
|
return objectFromEntries(DEFAULT_PERSIST_FORMAT.map(format => [
|
|
12
12
|
format,
|
|
13
|
-
|
|
13
|
+
createReportPath({ outputDir: dir, filename, format, suffix }),
|
|
14
14
|
]));
|
|
15
15
|
}
|
|
16
16
|
export async function parsePersistConfig(json) {
|
|
17
|
-
const schema = z.object({
|
|
17
|
+
const schema = z.object({
|
|
18
|
+
persist: persistConfigSchema.optional(),
|
|
19
|
+
upload: uploadConfigSchema.optional(),
|
|
20
|
+
});
|
|
18
21
|
const result = await schema.safeParseAsync(json);
|
|
19
22
|
if (result.error) {
|
|
20
|
-
throw new Error(`
|
|
23
|
+
throw new Error(`Code PushUp config is invalid:\n${z.prettifyError(result.error)}`);
|
|
21
24
|
}
|
|
22
25
|
return result.data;
|
|
23
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/persist.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAE1B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/persist.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAE1B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIzE,MAAM,UAAU,wBAAwB,CACtC,MAA6B,EAC7B,EAAE,MAAM,EAAE,SAAS,EAA2C;IAE9D,MAAM,EACJ,OAAO,EAAE,EACP,SAAS,GAAG,0BAA0B,EACtC,QAAQ,GAAG,wBAAwB,GACpC,GAAG,EAAE,GACP,GAAG,MAAM,CAAC;IAEX,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACpC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3C,OAAO,iBAAiB,CACtB,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM;QACN,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;KAC/D,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAa;IAEb,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
package/src/lib/constants.js
CHANGED
package/src/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,8BAA8B;IACnC,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE;IACxB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,OAAO;IACf,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,8BAA8B;IACnC,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE;IACxB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,OAAO;IACf,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,IAAI;CACrB,CAAC"}
|
package/src/lib/models.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Format } from '@code-pushup/models';
|
|
1
|
+
import type { Format, PersistConfig, UploadConfig } from '@code-pushup/models';
|
|
2
2
|
import type { SourceFileIssue } from './issues.js';
|
|
3
3
|
import type { MonorepoTool } from './monorepo/index.js';
|
|
4
4
|
/**
|
|
@@ -19,6 +19,7 @@ export type Options = {
|
|
|
19
19
|
detectNewIssues?: boolean;
|
|
20
20
|
logger?: Logger;
|
|
21
21
|
skipComment?: boolean;
|
|
22
|
+
configPatterns?: ConfigPatterns | null;
|
|
22
23
|
};
|
|
23
24
|
/**
|
|
24
25
|
* {@link Options} with filled-in defaults.
|
|
@@ -66,6 +67,14 @@ export type Logger = {
|
|
|
66
67
|
info: (message: string) => void;
|
|
67
68
|
debug: (message: string) => void;
|
|
68
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* Code PushUp config patterns which hold for every project in monorepo.
|
|
72
|
+
* Providing this information upfront makes CI runs faster (skips print-config).
|
|
73
|
+
*/
|
|
74
|
+
export type ConfigPatterns = {
|
|
75
|
+
persist: Required<PersistConfig>;
|
|
76
|
+
upload?: UploadConfig;
|
|
77
|
+
};
|
|
69
78
|
/**
|
|
70
79
|
* Resolved return value of {@link runInCI}
|
|
71
80
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { executeProcess, fileExists, stringifyError, toArray, } from '@code-pushup/utils';
|
|
2
|
+
import { executeProcess, fileExists, interpolate, stringifyError, toArray, } from '@code-pushup/utils';
|
|
3
3
|
export const nxHandler = {
|
|
4
4
|
tool: 'nx',
|
|
5
5
|
async isConfigured(options) {
|
|
@@ -19,7 +19,7 @@ export const nxHandler = {
|
|
|
19
19
|
'nx',
|
|
20
20
|
'show',
|
|
21
21
|
'projects',
|
|
22
|
-
...toArray(nxProjectsFilter).map(arg => arg
|
|
22
|
+
...toArray(nxProjectsFilter).map(arg => interpolate(arg, { task })),
|
|
23
23
|
'--json',
|
|
24
24
|
],
|
|
25
25
|
cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/monorepo/handlers/nx.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,GACR,MAAM,oBAAoB,CAAC;AAG5B,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,IAAI,EAAE,IAAI;IAEV,KAAK,CAAC,YAAY,CAAC,OAAO;QACxB,OAAO,CACL,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;YACrD,CACE,MAAM,cAAc,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,cAAc,EAAE,IAAI;aACrB,CAAC,CACH,CAAC,IAAI,KAAK,CAAC,CACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC;YACtC,OAAO,EAAE,KAAK;YACd,IAAI,EAAE;gBACJ,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/monorepo/handlers/nx.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,oBAAoB,CAAC;AAG5B,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,IAAI,EAAE,IAAI;IAEV,KAAK,CAAC,YAAY,CAAC,OAAO;QACxB,OAAO,CACL,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;YACrD,CACE,MAAM,cAAc,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,cAAc,EAAE,IAAI;aACrB,CAAC,CACH,CAAC,IAAI,KAAK,CAAC,CACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC;YACtC,OAAO,EAAE,KAAK;YACd,IAAI,EAAE;gBACJ,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,QAAQ;aACT;YACD,GAAG;YACH,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,cAAc,OAAO,IAAI,IAAI,KAAK;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,oBAAoB,CAAC,OAAO,EAAE,QAAQ;QACpC,MAAM,YAAY,GAChB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO;YACL,KAAK;YACL,IAAI;YACJ,UAAU;YACV,aAAa,OAAO,CAAC,IAAI,EAAE;YAC3B,cAAc,OAAO,CAAC,QAAQ,EAAE;YAChC,cAAc,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtC,IAAI;SACL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc;IACnC,6CAA6C;IAC7C,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qDAAqD,cAAc,CACjE,KAAK,CACN,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,IACE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAC9D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oFAAoF,IAAI,CAAC,SAAS,CAChG,IAAI,CACL,EAAE,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { downloadFromPortal, } from '@code-pushup/portal-client';
|
|
4
|
+
import { transformGQLReport } from './transform.js';
|
|
5
|
+
export async function downloadReportFromPortal(args) {
|
|
6
|
+
const gqlReport = await downloadFromPortal(args);
|
|
7
|
+
if (!gqlReport) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const report = transformGQLReport(gqlReport);
|
|
11
|
+
const outputFile = path.join('tmp', 'code-pushup', 'portal', args.parameters.organization, args.parameters.project, 'report.json');
|
|
12
|
+
await mkdir(path.dirname(outputFile), { recursive: true });
|
|
13
|
+
await writeFile(outputFile, JSON.stringify(report, null, 2));
|
|
14
|
+
return outputFile;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAEL,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,KAAK,EACL,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,aAAa,CACd,CAAC;IACF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { downloadReportFromPortal } from './download.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { lowercase } from '@code-pushup/utils';
|
|
2
|
+
export function transformGQLReport(report) {
|
|
3
|
+
return {
|
|
4
|
+
commit: transformGQLCommit(report.commit),
|
|
5
|
+
plugins: report.plugins.map(plugin => transformGQLPlugin(plugin, report.issues?.edges.map(({ node }) => node) ?? [])),
|
|
6
|
+
categories: report.categories.map(transformGQLCategory),
|
|
7
|
+
// TODO: make report metadata required in Portal API?
|
|
8
|
+
packageName: report.packageName ?? 'unknown',
|
|
9
|
+
version: report.packageVersion ?? 'unknown',
|
|
10
|
+
date: report.commandStartDate ?? '',
|
|
11
|
+
duration: report.commandDuration ?? 0,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function transformGQLCommit(commit) {
|
|
15
|
+
return {
|
|
16
|
+
hash: commit.sha,
|
|
17
|
+
message: commit.message,
|
|
18
|
+
// TODO: make commit author and date required in Portal API?
|
|
19
|
+
author: commit.author
|
|
20
|
+
? `${commit.author.name} <${commit.author.email}>`
|
|
21
|
+
: 'unknown',
|
|
22
|
+
date: commit.date ? new Date(commit.date) : new Date(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function transformGQLCategory(category) {
|
|
26
|
+
return {
|
|
27
|
+
slug: category.slug,
|
|
28
|
+
title: category.title,
|
|
29
|
+
isBinary: category.isBinary,
|
|
30
|
+
...(category.description && { description: category.description }),
|
|
31
|
+
refs: category.refs.map(({ target, weight }) => ({
|
|
32
|
+
type: lowercase(target.__typename),
|
|
33
|
+
plugin: target.plugin.slug,
|
|
34
|
+
slug: target.slug,
|
|
35
|
+
weight,
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function transformGQLPlugin(plugin, issues) {
|
|
40
|
+
return {
|
|
41
|
+
slug: plugin.slug,
|
|
42
|
+
title: plugin.title,
|
|
43
|
+
icon: plugin.icon,
|
|
44
|
+
...(plugin.description && { description: plugin.description }),
|
|
45
|
+
...(plugin.docsUrl && { docsUrl: plugin.docsUrl }),
|
|
46
|
+
audits: plugin.audits.edges.map(({ node }) => transformGQLAudit(node, issues.filter(issue => issue.audit.plugin.slug === plugin.slug &&
|
|
47
|
+
issue.audit.slug === node.slug))),
|
|
48
|
+
groups: plugin.groups.map(transformGQLGroup),
|
|
49
|
+
...(plugin.packageName && { packageName: plugin.packageName }),
|
|
50
|
+
...(plugin.packageVersion && { version: plugin.packageVersion }),
|
|
51
|
+
// TODO: make plugin metadata required in Portal API?
|
|
52
|
+
date: plugin.runnerStartDate ?? '',
|
|
53
|
+
duration: plugin.runnerDuration ?? 0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function transformGQLGroup(group) {
|
|
57
|
+
return {
|
|
58
|
+
slug: group.slug,
|
|
59
|
+
title: group.title,
|
|
60
|
+
...(group.description && { description: group.description }),
|
|
61
|
+
refs: group.refs.map(({ target, weight }) => ({
|
|
62
|
+
slug: target.slug,
|
|
63
|
+
weight,
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function transformGQLAudit(audit, issues) {
|
|
68
|
+
return {
|
|
69
|
+
slug: audit.slug,
|
|
70
|
+
title: audit.title,
|
|
71
|
+
...(audit.description && { description: audit.description }),
|
|
72
|
+
...(audit.docsUrl && { docsUrl: audit.docsUrl }),
|
|
73
|
+
score: audit.score,
|
|
74
|
+
value: audit.value,
|
|
75
|
+
...(audit.formattedValue && { displayValue: audit.formattedValue }),
|
|
76
|
+
...(audit.details?.enabled && {
|
|
77
|
+
details: {
|
|
78
|
+
...(issues.length > 0 && {
|
|
79
|
+
issues: issues.map(transformGQLIssue),
|
|
80
|
+
}),
|
|
81
|
+
...(audit.details.tables[0] && {
|
|
82
|
+
table: transformGQLTable(audit.details.tables[0]),
|
|
83
|
+
}),
|
|
84
|
+
...(audit.details.trees.length > 0 && {
|
|
85
|
+
trees: audit.details.trees.map(transformGQLTree),
|
|
86
|
+
}),
|
|
87
|
+
},
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function transformGQLIssue(issue) {
|
|
92
|
+
return {
|
|
93
|
+
message: issue.message,
|
|
94
|
+
severity: lowercase(issue.severity),
|
|
95
|
+
...(issue.source?.__typename === 'SourceCodeLocation' && {
|
|
96
|
+
source: {
|
|
97
|
+
file: issue.source.filePath,
|
|
98
|
+
position: {
|
|
99
|
+
startLine: issue.source.startLine ?? 0,
|
|
100
|
+
...(issue.source.startColumn != null && {
|
|
101
|
+
startColumn: issue.source.startColumn,
|
|
102
|
+
}),
|
|
103
|
+
...(issue.source.endLine != null && {
|
|
104
|
+
endLine: issue.source.endLine,
|
|
105
|
+
}),
|
|
106
|
+
...(issue.source.endColumn != null && {
|
|
107
|
+
endColumn: issue.source.endColumn,
|
|
108
|
+
}),
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
}),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function transformGQLTable(table) {
|
|
115
|
+
if (!table.header) {
|
|
116
|
+
return {
|
|
117
|
+
...(table.title && { title: table.title }),
|
|
118
|
+
rows: table.body.map(cells => cells.map(cell => cell.content)),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
...(table.title && { title: table.title }),
|
|
123
|
+
columns: table.header.map(({ content, alignment }, idx) => ({
|
|
124
|
+
key: idx.toString(),
|
|
125
|
+
label: content,
|
|
126
|
+
align: lowercase(alignment),
|
|
127
|
+
})),
|
|
128
|
+
rows: table.body.map(cells => Object.fromEntries(cells.map((cell, idx) => [idx, cell.content]))),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function transformGQLTree(tree) {
|
|
132
|
+
switch (tree.__typename) {
|
|
133
|
+
case 'BasicTree':
|
|
134
|
+
return {
|
|
135
|
+
type: 'basic',
|
|
136
|
+
...(tree.title && { title: tree.title }),
|
|
137
|
+
root: transformGQLBasicTreeNode(tree.root),
|
|
138
|
+
};
|
|
139
|
+
case 'CoverageTree':
|
|
140
|
+
return {
|
|
141
|
+
type: 'coverage',
|
|
142
|
+
...(tree.title && { title: tree.title }),
|
|
143
|
+
root: transformGQLCoverageTreeNode(tree.root),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function transformGQLBasicTreeNode(node) {
|
|
148
|
+
return {
|
|
149
|
+
name: node.name,
|
|
150
|
+
...(node.customValues && {
|
|
151
|
+
values: Object.fromEntries(node.customValues.map(({ key, value }) => [key, value])),
|
|
152
|
+
}),
|
|
153
|
+
...(node.children && {
|
|
154
|
+
children: node.children.map(transformGQLBasicTreeNode),
|
|
155
|
+
}),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function transformGQLCoverageTreeNode(node) {
|
|
159
|
+
return {
|
|
160
|
+
name: node.name,
|
|
161
|
+
values: {
|
|
162
|
+
coverage: node.values.coverage,
|
|
163
|
+
...(node.values.missing && {
|
|
164
|
+
missing: node.values.missing.map(missing => ({
|
|
165
|
+
...(missing.kind && { kind: missing.kind }),
|
|
166
|
+
...(missing.name && { name: missing.name }),
|
|
167
|
+
startLine: missing.startLine,
|
|
168
|
+
...(missing.startColumn && { startColumn: missing.startColumn }),
|
|
169
|
+
...(missing.endLine && { endLine: missing.endLine }),
|
|
170
|
+
...(missing.endColumn && { endColumn: missing.endColumn }),
|
|
171
|
+
})),
|
|
172
|
+
}),
|
|
173
|
+
},
|
|
174
|
+
...(node.children && {
|
|
175
|
+
children: node.children.map(transformGQLCoverageTreeNode),
|
|
176
|
+
}),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EnhancedPersistConfig } from './cli/index.js';
|
|
2
2
|
import type { MonorepoRunResult } from './models.js';
|
|
3
3
|
import { type RunEnv } from './run-utils.js';
|
|
4
4
|
export declare function runInMonorepoMode(env: RunEnv): Promise<MonorepoRunResult>;
|
|
5
5
|
export declare function allProjectsHaveDefaultPersistFormats(projects: {
|
|
6
|
-
config:
|
|
6
|
+
config: EnhancedPersistConfig;
|
|
7
7
|
}[]): boolean;
|
package/src/lib/run-monorepo.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
1
2
|
import { readFile } from 'node:fs/promises';
|
|
2
3
|
import { asyncSequential, hasNoNullableProps, } from '@code-pushup/utils';
|
|
3
|
-
import { createCommandContext, persistedFilesFromConfig, runCollect, runMergeDiffs, } from './cli/index.js';
|
|
4
|
+
import { createCommandContext, persistedFilesFromConfig, runCollect, runCompare, runMergeDiffs, } from './cli/index.js';
|
|
4
5
|
import { commentOnPR } from './comment.js';
|
|
5
6
|
import { listMonorepoProjects, } from './monorepo/index.js';
|
|
6
7
|
import { saveOutputFiles } from './output-files.js';
|
|
7
|
-
import { checkPrintConfig,
|
|
8
|
+
import { checkPrintConfig, configFromPatterns, hasDefaultPersistFormats, loadCachedBaseReport, prepareReportFilesToCompare, printPersistConfig, runInBaseBranch, runOnProject, saveDiffFiles, saveReportFiles, } from './run-utils.js';
|
|
8
9
|
export async function runInMonorepoMode(env) {
|
|
9
10
|
const { api, settings } = env;
|
|
10
11
|
const { logger } = settings;
|
|
@@ -45,20 +46,9 @@ async function runProjectsInBulk(projects, runManyCommand, env) {
|
|
|
45
46
|
const { refs: { base }, settings, } = env;
|
|
46
47
|
const { logger } = settings;
|
|
47
48
|
logger.info(`Running on ${projects.length} projects in bulk (parallel: ${settings.parallel})`);
|
|
48
|
-
const
|
|
49
|
-
const ctx = createCommandContext(settings, project);
|
|
50
|
-
const config = await printPersistConfig(ctx);
|
|
51
|
-
return { project, config, ctx };
|
|
52
|
-
});
|
|
53
|
-
const hasFormats = allProjectsHaveDefaultPersistFormats(currProjectConfigs);
|
|
54
|
-
logger.debug([
|
|
55
|
-
`Loaded ${currProjectConfigs.length} persist configs by running print-config command for each project.`,
|
|
56
|
-
hasFormats
|
|
57
|
-
? 'Every project has default persist formats.'
|
|
58
|
-
: 'Not all projects have default persist formats.',
|
|
59
|
-
].join(' '));
|
|
49
|
+
const { projectEnvs, hasFormats } = await loadProjectEnvs(projects, settings);
|
|
60
50
|
await collectMany(runManyCommand, env, { hasFormats });
|
|
61
|
-
const currProjectReports = await Promise.all(
|
|
51
|
+
const currProjectReports = await Promise.all(projectEnvs.map(async ({ project, config, ctx }) => {
|
|
62
52
|
const reports = await saveOutputFiles({
|
|
63
53
|
project,
|
|
64
54
|
type: 'current',
|
|
@@ -72,9 +62,33 @@ async function runProjectsInBulk(projects, runManyCommand, env) {
|
|
|
72
62
|
}
|
|
73
63
|
return compareProjectsInBulk(currProjectReports, base, runManyCommand, env);
|
|
74
64
|
}
|
|
65
|
+
async function loadProjectEnvs(projects, settings) {
|
|
66
|
+
const { logger, configPatterns } = settings;
|
|
67
|
+
const projectEnvs = configPatterns
|
|
68
|
+
? projects.map((project) => ({
|
|
69
|
+
project,
|
|
70
|
+
config: configFromPatterns(configPatterns, project),
|
|
71
|
+
ctx: createCommandContext(settings, project),
|
|
72
|
+
}))
|
|
73
|
+
: await asyncSequential(projects, async (project) => {
|
|
74
|
+
const ctx = createCommandContext(settings, project);
|
|
75
|
+
const config = await printPersistConfig(ctx);
|
|
76
|
+
return { project, config, ctx };
|
|
77
|
+
});
|
|
78
|
+
const hasFormats = allProjectsHaveDefaultPersistFormats(projectEnvs);
|
|
79
|
+
logger.debug([
|
|
80
|
+
configPatterns
|
|
81
|
+
? `Parsed ${projectEnvs.length} persist and upload configs by interpolating configPatterns option for each project.`
|
|
82
|
+
: `Loaded ${projectEnvs.length} persist and upload configs by running print-config command for each project.`,
|
|
83
|
+
hasFormats
|
|
84
|
+
? 'Every project has default persist formats.'
|
|
85
|
+
: 'Not all projects have default persist formats.',
|
|
86
|
+
].join(' '));
|
|
87
|
+
return { projectEnvs, hasFormats };
|
|
88
|
+
}
|
|
75
89
|
async function compareProjectsInBulk(currProjectReports, base, runManyCommand, env) {
|
|
76
90
|
const projectReportsWithCache = await Promise.all(currProjectReports.map(async ({ project, ctx, reports, config }) => {
|
|
77
|
-
const args = { project, base, ctx, env };
|
|
91
|
+
const args = { project, config, base, ctx, env };
|
|
78
92
|
const [currReport, prevReport] = await Promise.all([
|
|
79
93
|
readFile(reports.json, 'utf8').then((content) => ({
|
|
80
94
|
content,
|
|
@@ -93,12 +107,19 @@ async function compareProjectsInBulk(currProjectReports, base, runManyCommand, e
|
|
|
93
107
|
prevReport: args.prevReport || collectedPrevReports[args.project.name],
|
|
94
108
|
}))
|
|
95
109
|
.filter(hasNoNullableProps);
|
|
96
|
-
const projectComparisons =
|
|
97
|
-
args.project.name,
|
|
98
|
-
await compareReports(args),
|
|
99
|
-
]));
|
|
110
|
+
const projectComparisons = await compareManyProjects(projectsToCompare, runManyCommand, env);
|
|
100
111
|
return finalizeProjectReports(currProjectReports, projectComparisons);
|
|
101
112
|
}
|
|
113
|
+
async function compareManyProjects(projectsToCompare, runManyCommand, env) {
|
|
114
|
+
await Promise.all(projectsToCompare.map(prepareReportFilesToCompare));
|
|
115
|
+
await compareMany(runManyCommand, env, {
|
|
116
|
+
hasFormats: allProjectsHaveDefaultPersistFormats(projectsToCompare),
|
|
117
|
+
});
|
|
118
|
+
return Object.fromEntries(await Promise.all(projectsToCompare.map(async (args) => [
|
|
119
|
+
args.project.name,
|
|
120
|
+
await saveDiffFiles(args),
|
|
121
|
+
])));
|
|
122
|
+
}
|
|
102
123
|
function finalizeProjectReports(projectReports, projectComparisons) {
|
|
103
124
|
return projectReports.map(({ project, reports }) => {
|
|
104
125
|
const comparison = projectComparisons?.[project.name];
|
|
@@ -111,20 +132,25 @@ function finalizeProjectReports(projectReports, projectComparisons) {
|
|
|
111
132
|
}
|
|
112
133
|
async function collectPreviousReports(base, uncachedProjectReports, runManyCommand, env) {
|
|
113
134
|
const { settings } = env;
|
|
114
|
-
const { logger } = settings;
|
|
135
|
+
const { logger, configPatterns } = settings;
|
|
115
136
|
if (uncachedProjectReports.length === 0) {
|
|
116
137
|
return {};
|
|
117
138
|
}
|
|
118
139
|
return runInBaseBranch(base, env, async () => {
|
|
119
|
-
const uncachedProjectConfigs =
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
140
|
+
const uncachedProjectConfigs = configPatterns
|
|
141
|
+
? uncachedProjectReports.map(({ project, ctx }) => {
|
|
142
|
+
const config = configFromPatterns(configPatterns, project);
|
|
143
|
+
return { project, ctx, config };
|
|
144
|
+
})
|
|
145
|
+
: await asyncSequential(uncachedProjectReports, async (args) => ({
|
|
146
|
+
project: args.project,
|
|
147
|
+
ctx: args.ctx,
|
|
148
|
+
config: await checkPrintConfig(args),
|
|
149
|
+
}));
|
|
124
150
|
const validProjectConfigs = uncachedProjectConfigs.filter(hasNoNullableProps);
|
|
125
|
-
const onlyProjects = validProjectConfigs.map(({
|
|
151
|
+
const onlyProjects = validProjectConfigs.map(({ project }) => project.name);
|
|
126
152
|
const invalidProjects = uncachedProjectConfigs
|
|
127
|
-
.map(({
|
|
153
|
+
.map(({ project }) => project.name)
|
|
128
154
|
.filter(name => !onlyProjects.includes(name));
|
|
129
155
|
if (invalidProjects.length > 0) {
|
|
130
156
|
logger.debug(`Printing config failed for ${invalidProjects.length} projects - ${invalidProjects.join(', ')}`);
|
|
@@ -140,14 +166,14 @@ async function collectPreviousReports(base, uncachedProjectReports, runManyComma
|
|
|
140
166
|
});
|
|
141
167
|
}
|
|
142
168
|
async function savePreviousProjectReport(args) {
|
|
143
|
-
const {
|
|
169
|
+
const { project, ctx, config, settings } = args;
|
|
144
170
|
const files = await saveReportFiles({
|
|
145
|
-
project
|
|
171
|
+
project,
|
|
146
172
|
type: 'previous',
|
|
147
173
|
files: persistedFilesFromConfig(config, ctx),
|
|
148
174
|
settings,
|
|
149
175
|
});
|
|
150
|
-
return [name, files];
|
|
176
|
+
return [project.name, files];
|
|
151
177
|
}
|
|
152
178
|
async function collectMany(runManyCommand, env, options) {
|
|
153
179
|
const { settings } = env;
|
|
@@ -163,6 +189,16 @@ async function collectMany(runManyCommand, env, options) {
|
|
|
163
189
|
: 'all current';
|
|
164
190
|
settings.logger.debug(`Collected ${countText} reports using command \`${command}\``);
|
|
165
191
|
}
|
|
192
|
+
async function compareMany(runManyCommand, env, options) {
|
|
193
|
+
const { settings } = env;
|
|
194
|
+
const { hasFormats } = options;
|
|
195
|
+
const ctx = {
|
|
196
|
+
...createCommandContext(settings, null),
|
|
197
|
+
bin: await runManyCommand(),
|
|
198
|
+
};
|
|
199
|
+
await runCompare(ctx, { hasFormats });
|
|
200
|
+
settings.logger.debug('Compared all project reports');
|
|
201
|
+
}
|
|
166
202
|
export function allProjectsHaveDefaultPersistFormats(projects) {
|
|
167
203
|
return projects.every(({ config }) => hasDefaultPersistFormats(config));
|
|
168
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-monorepo.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-monorepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-monorepo.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-monorepo.ts"],"names":[],"mappings":"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"}
|
package/src/lib/run-utils.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { SimpleGit } from 'simple-git';
|
|
2
|
-
import { type
|
|
3
|
-
import { type CommandContext } from './cli/index.js';
|
|
2
|
+
import { type Diff } from '@code-pushup/utils';
|
|
3
|
+
import { type CommandContext, type EnhancedPersistConfig } from './cli/index.js';
|
|
4
4
|
import { type SourceFileIssue } from './issues.js';
|
|
5
|
-
import type { GitBranch, GitRefs, Options, OutputFiles, ProjectRunResult, ProviderAPIClient, Settings } from './models.js';
|
|
5
|
+
import type { ConfigPatterns, GitBranch, GitRefs, Options, OutputFiles, ProjectRunResult, ProviderAPIClient, Settings } from './models.js';
|
|
6
6
|
import type { ProjectConfig } from './monorepo/index.js';
|
|
7
7
|
export type RunEnv = {
|
|
8
8
|
refs: NormalizedGitRefs;
|
|
@@ -17,13 +17,15 @@ type NormalizedGitRefs = {
|
|
|
17
17
|
export type CompareReportsArgs = {
|
|
18
18
|
project: ProjectConfig | null;
|
|
19
19
|
env: RunEnv;
|
|
20
|
+
ctx: CommandContext;
|
|
20
21
|
base: GitBranch;
|
|
21
22
|
currReport: ReportData<'current'>;
|
|
22
23
|
prevReport: ReportData<'previous'>;
|
|
23
|
-
config:
|
|
24
|
+
config: EnhancedPersistConfig;
|
|
24
25
|
};
|
|
25
26
|
export type BaseReportArgs = {
|
|
26
27
|
project: ProjectConfig | null;
|
|
28
|
+
config: EnhancedPersistConfig;
|
|
27
29
|
env: RunEnv;
|
|
28
30
|
base: GitBranch;
|
|
29
31
|
ctx: CommandContext;
|
|
@@ -35,6 +37,16 @@ export type ReportData<T extends 'current' | 'previous'> = {
|
|
|
35
37
|
export declare function createRunEnv(refs: GitRefs, api: ProviderAPIClient, options: Options | undefined, git: SimpleGit): Promise<RunEnv>;
|
|
36
38
|
export declare function runOnProject(project: ProjectConfig | null, env: RunEnv): Promise<ProjectRunResult>;
|
|
37
39
|
export declare function compareReports(args: CompareReportsArgs): Promise<ProjectRunResult>;
|
|
40
|
+
export declare function prepareReportFilesToCompare(args: CompareReportsArgs): Promise<Diff<string>>;
|
|
41
|
+
export declare function saveDiffFiles(args: CompareReportsArgs): Promise<{
|
|
42
|
+
newIssues?: SourceFileIssue[] | undefined;
|
|
43
|
+
name: string;
|
|
44
|
+
files: {
|
|
45
|
+
current: OutputFiles;
|
|
46
|
+
previous: OutputFiles | Pick<OutputFiles, "json">;
|
|
47
|
+
comparison: Record<"json" | "md", string>;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
38
50
|
export declare function saveReportFiles<T extends 'current' | 'previous'>(args: {
|
|
39
51
|
project: Pick<ProjectConfig, 'name'> | null;
|
|
40
52
|
type: T;
|
|
@@ -44,9 +56,10 @@ export declare function saveReportFiles<T extends 'current' | 'previous'>(args:
|
|
|
44
56
|
export declare function collectPreviousReport(args: BaseReportArgs): Promise<ReportData<'previous'> | null>;
|
|
45
57
|
export declare function loadCachedBaseReport(args: BaseReportArgs): Promise<ReportData<'previous'> | null>;
|
|
46
58
|
export declare function runInBaseBranch<T>(base: GitBranch, env: RunEnv, fn: () => Promise<T>): Promise<T>;
|
|
47
|
-
export declare function checkPrintConfig(args: BaseReportArgs): Promise<
|
|
48
|
-
export declare function printPersistConfig(ctx: CommandContext): Promise<
|
|
49
|
-
export declare function hasDefaultPersistFormats(config:
|
|
59
|
+
export declare function checkPrintConfig(args: BaseReportArgs): Promise<EnhancedPersistConfig | null>;
|
|
60
|
+
export declare function printPersistConfig(ctx: CommandContext): Promise<EnhancedPersistConfig>;
|
|
61
|
+
export declare function hasDefaultPersistFormats(config: EnhancedPersistConfig): boolean;
|
|
62
|
+
export declare function configFromPatterns(configPatterns: ConfigPatterns, project: ProjectConfig | null): ConfigPatterns;
|
|
50
63
|
export declare function findNewIssues(args: CompareReportsArgs & {
|
|
51
64
|
diffFiles: OutputFiles;
|
|
52
65
|
}): Promise<SourceFileIssue[]>;
|
package/src/lib/run-utils.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { parsePersistConfig } from './cli/
|
|
2
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, } from '@code-pushup/models';
|
|
5
|
+
import { createReportPath, interpolate, objectFromEntries, readJsonFile, removeUndefinedAndEmptyProps, stringifyError, } from '@code-pushup/utils';
|
|
6
|
+
import { createCommandContext, parsePersistConfig, persistedFilesFromConfig, runCollect, runCompare, runPrintConfig, } from './cli/index.js';
|
|
7
7
|
import { DEFAULT_SETTINGS } from './constants.js';
|
|
8
8
|
import { listChangedFiles, normalizeGitRef } from './git.js';
|
|
9
9
|
import { filterRelevantIssues } from './issues.js';
|
|
10
10
|
import { saveOutputFiles } from './output-files.js';
|
|
11
|
+
import { downloadReportFromPortal } from './portal/download.js';
|
|
11
12
|
export async function createRunEnv(refs, api, options, git) {
|
|
12
|
-
const inferredVerbose =
|
|
13
|
+
const inferredVerbose = options?.debug === true || options?.silent === false;
|
|
13
14
|
// eslint-disable-next-line functional/immutable-data
|
|
14
15
|
process.env['CP_VERBOSE'] = `${inferredVerbose}`;
|
|
15
16
|
const [head, base] = await Promise.all([
|
|
@@ -33,8 +34,12 @@ export async function runOnProject(project, env) {
|
|
|
33
34
|
if (project) {
|
|
34
35
|
logger.info(`Running Code PushUp on monorepo project ${project.name}`);
|
|
35
36
|
}
|
|
36
|
-
const config =
|
|
37
|
-
|
|
37
|
+
const config = settings.configPatterns
|
|
38
|
+
? configFromPatterns(settings.configPatterns, project)
|
|
39
|
+
: await printPersistConfig(ctx);
|
|
40
|
+
logger.debug(settings.configPatterns
|
|
41
|
+
? `Parsed persist and upload configs from configPatterns option - ${JSON.stringify(config)}`
|
|
42
|
+
: `Loaded persist and upload configs from print-config command - ${JSON.stringify(config)}`);
|
|
38
43
|
await runCollect(ctx, { hasFormats: hasDefaultPersistFormats(config) });
|
|
39
44
|
const currReport = await saveReportFiles({
|
|
40
45
|
project,
|
|
@@ -51,28 +56,58 @@ export async function runOnProject(project, env) {
|
|
|
51
56
|
return noDiffOutput;
|
|
52
57
|
}
|
|
53
58
|
logger.info(`PR/MR detected, preparing to compare base branch ${base.ref} to head ${head.ref}`);
|
|
54
|
-
const
|
|
59
|
+
const baseArgs = { project, env, base, config, ctx };
|
|
60
|
+
const prevReport = await collectPreviousReport(baseArgs);
|
|
55
61
|
if (!prevReport) {
|
|
56
62
|
return noDiffOutput;
|
|
57
63
|
}
|
|
58
|
-
const compareArgs = {
|
|
64
|
+
const compareArgs = { ...baseArgs, currReport, prevReport };
|
|
59
65
|
return compareReports(compareArgs);
|
|
60
66
|
}
|
|
61
67
|
export async function compareReports(args) {
|
|
62
|
-
const {
|
|
63
|
-
const logger = settings
|
|
64
|
-
|
|
65
|
-
await runCompare({
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
const { ctx, env, config } = args;
|
|
69
|
+
const { logger } = env.settings;
|
|
70
|
+
await prepareReportFilesToCompare(args);
|
|
71
|
+
await runCompare(ctx, { hasFormats: hasDefaultPersistFormats(config) });
|
|
72
|
+
logger.info('Compared reports and generated diff files');
|
|
73
|
+
return saveDiffFiles(args);
|
|
74
|
+
}
|
|
75
|
+
export async function prepareReportFilesToCompare(args) {
|
|
76
|
+
const { config, project, env, ctx } = args;
|
|
77
|
+
const { outputDir = DEFAULT_PERSIST_OUTPUT_DIR, filename = DEFAULT_PERSIST_FILENAME, } = config.persist ?? {};
|
|
78
|
+
const label = project?.name;
|
|
79
|
+
const { logger } = env.settings;
|
|
80
|
+
const originalReports = await Promise.all([args.currReport, args.prevReport].map(({ files }) => readJsonFile(files.json)));
|
|
81
|
+
const labeledReports = label
|
|
82
|
+
? originalReports.map(report => ({ ...report, label }))
|
|
83
|
+
: originalReports;
|
|
84
|
+
const reportPaths = labeledReports.map((report, idx) => {
|
|
85
|
+
const key = idx === 0 ? 'after' : 'before';
|
|
86
|
+
const filePath = createReportPath({
|
|
87
|
+
outputDir: path.resolve(ctx.directory, outputDir),
|
|
88
|
+
filename,
|
|
89
|
+
format: 'json',
|
|
90
|
+
suffix: key,
|
|
91
|
+
});
|
|
92
|
+
return { key, report, filePath };
|
|
93
|
+
});
|
|
94
|
+
await Promise.all(reportPaths.map(({ filePath, report }) => writeFile(filePath, JSON.stringify(report, null, 2))));
|
|
95
|
+
logger.debug([
|
|
96
|
+
'Prepared',
|
|
97
|
+
project && `"${project.name}" project's`,
|
|
98
|
+
'report files for comparison',
|
|
99
|
+
`at ${reportPaths.map(({ filePath }) => filePath).join(' and ')}`,
|
|
100
|
+
]
|
|
101
|
+
.filter(Boolean)
|
|
102
|
+
.join(' '));
|
|
103
|
+
return objectFromEntries(reportPaths.map(({ key, filePath }) => [key, filePath]));
|
|
104
|
+
}
|
|
105
|
+
export async function saveDiffFiles(args) {
|
|
106
|
+
const { project, ctx, env: { settings }, currReport, prevReport, config, } = args;
|
|
70
107
|
const diffFiles = persistedFilesFromConfig(config, {
|
|
71
108
|
directory: ctx.directory,
|
|
72
109
|
isDiff: true,
|
|
73
110
|
});
|
|
74
|
-
logger.info('Compared reports and generated diff files');
|
|
75
|
-
logger.debug(`Generated diff files at ${diffFiles.json} and ${diffFiles.md}`);
|
|
76
111
|
return {
|
|
77
112
|
name: projectToName(project),
|
|
78
113
|
files: {
|
|
@@ -100,13 +135,15 @@ export async function saveReportFiles(args) {
|
|
|
100
135
|
export async function collectPreviousReport(args) {
|
|
101
136
|
const { ctx, env, base, project } = args;
|
|
102
137
|
const { settings } = env;
|
|
103
|
-
const { logger } = settings;
|
|
138
|
+
const { logger, configPatterns } = settings;
|
|
104
139
|
const cachedBaseReport = await loadCachedBaseReport(args);
|
|
105
140
|
if (cachedBaseReport) {
|
|
106
141
|
return cachedBaseReport;
|
|
107
142
|
}
|
|
108
143
|
return runInBaseBranch(base, env, async () => {
|
|
109
|
-
const config =
|
|
144
|
+
const config = configPatterns
|
|
145
|
+
? configFromPatterns(configPatterns, project)
|
|
146
|
+
: await checkPrintConfig(args);
|
|
110
147
|
if (!config) {
|
|
111
148
|
return null;
|
|
112
149
|
}
|
|
@@ -122,19 +159,9 @@ export async function collectPreviousReport(args) {
|
|
|
122
159
|
});
|
|
123
160
|
}
|
|
124
161
|
export async function loadCachedBaseReport(args) {
|
|
125
|
-
const { project, env: {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
.downloadReportArtifact?.(project?.name)
|
|
129
|
-
.catch((error) => {
|
|
130
|
-
logger.warn(`Error when downloading previous report artifact, skipping - ${stringifyError(error)}`);
|
|
131
|
-
});
|
|
132
|
-
if (api.downloadReportArtifact != null) {
|
|
133
|
-
logger.info(`Previous report artifact ${cachedBaseReport ? 'found' : 'not found'}`);
|
|
134
|
-
if (cachedBaseReport) {
|
|
135
|
-
logger.debug(`Previous report artifact downloaded to ${cachedBaseReport}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
162
|
+
const { project, env: { settings }, } = args;
|
|
163
|
+
const cachedBaseReport = (await loadCachedBaseReportFromPortal(args)) ??
|
|
164
|
+
(await loadCachedBaseReportFromArtifacts(args));
|
|
138
165
|
if (!cachedBaseReport) {
|
|
139
166
|
return null;
|
|
140
167
|
}
|
|
@@ -145,6 +172,47 @@ export async function loadCachedBaseReport(args) {
|
|
|
145
172
|
settings,
|
|
146
173
|
});
|
|
147
174
|
}
|
|
175
|
+
async function loadCachedBaseReportFromArtifacts(args) {
|
|
176
|
+
const { env: { api, settings }, project, } = args;
|
|
177
|
+
const { logger } = settings;
|
|
178
|
+
if (api.downloadReportArtifact == null) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const reportPath = await api
|
|
182
|
+
.downloadReportArtifact(project?.name)
|
|
183
|
+
.catch((error) => {
|
|
184
|
+
logger.warn(`Error when downloading previous report artifact, skipping - ${stringifyError(error)}`);
|
|
185
|
+
return null;
|
|
186
|
+
});
|
|
187
|
+
logger.info(`Previous report artifact ${reportPath ? 'found' : 'not found'}`);
|
|
188
|
+
if (reportPath) {
|
|
189
|
+
logger.debug(`Previous report artifact downloaded to ${reportPath}`);
|
|
190
|
+
}
|
|
191
|
+
return reportPath;
|
|
192
|
+
}
|
|
193
|
+
async function loadCachedBaseReportFromPortal(args) {
|
|
194
|
+
const { config, env: { settings }, } = args;
|
|
195
|
+
const { logger } = settings;
|
|
196
|
+
if (!config.upload) {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
const reportPath = await downloadReportFromPortal({
|
|
200
|
+
server: config.upload.server,
|
|
201
|
+
apiKey: config.upload.apiKey,
|
|
202
|
+
parameters: {
|
|
203
|
+
organization: config.upload.organization,
|
|
204
|
+
project: config.upload.project,
|
|
205
|
+
},
|
|
206
|
+
}).catch((error) => {
|
|
207
|
+
logger.warn(`Error when downloading previous report from portal, skipping - ${stringifyError(error)}`);
|
|
208
|
+
return null;
|
|
209
|
+
});
|
|
210
|
+
logger.info(`Previous report ${reportPath ? 'found' : 'not found'} in Code PushUp portal`);
|
|
211
|
+
if (reportPath) {
|
|
212
|
+
logger.debug(`Previous report downloaded from portal to ${reportPath}`);
|
|
213
|
+
}
|
|
214
|
+
return reportPath;
|
|
215
|
+
}
|
|
148
216
|
export async function runInBaseBranch(base, env, fn) {
|
|
149
217
|
const { git, settings: { logger }, } = env;
|
|
150
218
|
await git.fetch('origin', base.ref, ['--depth=1']);
|
|
@@ -181,6 +249,28 @@ export function hasDefaultPersistFormats(config) {
|
|
|
181
249
|
return (formats == null ||
|
|
182
250
|
DEFAULT_PERSIST_FORMAT.every(format => formats.includes(format)));
|
|
183
251
|
}
|
|
252
|
+
export function configFromPatterns(configPatterns, project) {
|
|
253
|
+
const { persist, upload } = configPatterns;
|
|
254
|
+
const variables = {
|
|
255
|
+
projectName: project?.name ?? '',
|
|
256
|
+
};
|
|
257
|
+
return {
|
|
258
|
+
persist: {
|
|
259
|
+
outputDir: interpolate(persist.outputDir, variables),
|
|
260
|
+
filename: interpolate(persist.filename, variables),
|
|
261
|
+
format: persist.format,
|
|
262
|
+
},
|
|
263
|
+
...(upload && {
|
|
264
|
+
upload: {
|
|
265
|
+
server: upload.server,
|
|
266
|
+
apiKey: upload.apiKey,
|
|
267
|
+
organization: interpolate(upload.organization, variables),
|
|
268
|
+
project: interpolate(upload.project, variables),
|
|
269
|
+
...(upload.timeout != null && { timeout: upload.timeout }),
|
|
270
|
+
},
|
|
271
|
+
}),
|
|
272
|
+
};
|
|
273
|
+
}
|
|
184
274
|
export async function findNewIssues(args) {
|
|
185
275
|
const { base, currReport, prevReport, diffFiles, env: { git, settings: { logger }, }, } = args;
|
|
186
276
|
await git.fetch('origin', base.ref, ['--depth=1']);
|
package/src/lib/run-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-utils.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-utils.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-utils.ts"],"names":[],"mappings":"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"}
|