Skip to content

Commit 4f60265

Browse files
committed
ci: configure cached code-pushup targets per project
1 parent 043eb80 commit 4f60265

30 files changed

+368
-53
lines changed

code-pushup.preset.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ import typescriptPlugin, {
2727
getCategories,
2828
} from './packages/plugin-typescript/src/index.js';
2929

30-
export function configureUpload(): CoreConfig {
30+
export function configureUpload(projectName?: string): CoreConfig {
3131
return {
3232
...(process.env['CP_API_KEY'] && {
3333
upload: {
3434
server: 'https://api.staging.code-pushup.dev/graphql',
3535
apiKey: process.env['CP_API_KEY'],
3636
organization: 'code-pushup',
37-
project: process.env['NX_TASK_TARGET_PROJECT'] ?? 'cli-workspace',
37+
project: projectName ? `cli-${projectName}` : 'cli-workspace',
3838
},
3939
}),
4040
plugins: [],
@@ -89,20 +89,19 @@ export async function configureEslintPlugin(
8989
export async function configureCoveragePlugin(
9090
projectName?: string,
9191
): Promise<CoreConfig> {
92+
const targets = ['unit-test', 'int-test'];
9293
const config: CoveragePluginConfig = projectName
9394
? // We do not need to run a coverageToolCommand. This is handled over the Nx task graph.
9495
{
95-
reports: [
96-
{
97-
pathToProject: `packages/${projectName}`,
98-
resultsPath: `packages/${projectName}/coverage/lcov.info`,
99-
},
100-
],
96+
reports: targets.map(target => ({
97+
pathToProject: `packages/${projectName}`,
98+
resultsPath: `coverage/${projectName}/${target}s/lcov.info`,
99+
})),
101100
}
102101
: {
103-
reports: await getNxCoveragePaths(['unit-test', 'int-test']),
102+
reports: await getNxCoveragePaths(targets),
104103
coverageToolCommand: {
105-
command: 'npx nx run-many -t unit-test,int-test',
104+
command: `npx nx run-many -t ${targets.join(',')}`,
106105
},
107106
};
108107
return {

nx.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"!{projectRoot}/zod2md.config.ts",
1313
"!{projectRoot}/eslint.config.?(c)js",
1414
"!{workspaceRoot}/**/.code-pushup/**/*",
15-
"!{projectRoot}/code-pushup.config.?(*.).?(m)[jt]s",
15+
"!{projectRoot}/code-pushup.config.?(m)[jt]s",
1616
"!{projectRoot}/@(test|mocks|mock)/**/*",
1717
"!{projectRoot}/**/?(*.)test.[jt]s?(x)?(.snap)",
1818
"!{projectRoot}/**/?(*.)mocks.[jt]s?(x)",
@@ -122,8 +122,7 @@
122122
"args": [
123123
"--config={projectRoot}/code-pushup.config.ts",
124124
"--cache.read",
125-
"--persist.outputDir={projectRoot}/.code-pushup",
126-
"--upload.project=cli-{projectName}"
125+
"--persist.outputDir={projectRoot}/.code-pushup"
127126
],
128127
"env": {
129128
"NODE_OPTIONS": "--import tsx",
@@ -132,11 +131,11 @@
132131
}
133132
},
134133
"code-pushup-coverage": {
134+
"dependsOn": ["*-test"],
135135
"cache": true,
136136
"inputs": ["default", "code-pushup-inputs"],
137137
"outputs": ["{projectRoot}/.code-pushup/coverage/runner-output.json"],
138138
"executor": "nx:run-commands",
139-
"dependsOn": ["*-test"],
140139
"options": {
141140
"command": "node packages/cli/src/index.ts collect",
142141
"args": [
@@ -153,6 +152,7 @@
153152
}
154153
},
155154
"code-pushup-eslint": {
155+
"dependsOn": ["lint"],
156156
"cache": true,
157157
"inputs": ["default", "code-pushup-inputs"],
158158
"outputs": ["{projectRoot}/.code-pushup/eslint/runner-output.json"],

packages/ci/code-pushup.config.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'dotenv/config';
2+
import {
3+
configureCoveragePlugin,
4+
configureEslintPlugin,
5+
configureJsDocsPlugin,
6+
configureTypescriptPlugin,
7+
configureUpload,
8+
} from '../../code-pushup.preset.js';
9+
import { mergeConfigs } from '../utils/src/index.js';
10+
11+
const projectName = 'ci';
12+
13+
export default mergeConfigs(
14+
configureUpload(projectName),
15+
await configureEslintPlugin(projectName),
16+
await configureCoveragePlugin(projectName),
17+
configureTypescriptPlugin(projectName),
18+
configureJsDocsPlugin(projectName),
19+
);

packages/ci/project.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
"lint": {},
99
"lint-report": {},
1010
"unit-test": {},
11-
"int-test": {}
11+
"int-test": {},
12+
"code-pushup": {},
13+
"code-pushup-eslint": {},
14+
"code-pushup-coverage": {},
15+
"code-pushup-typescript": {},
16+
"code-pushup-jsdocs": {}
1217
},
1318
"tags": ["scope:tooling", "type:feature", "publishable"]
1419
}

packages/cli/code-pushup.config.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'dotenv/config';
2+
import {
3+
configureCoveragePlugin,
4+
configureEslintPlugin,
5+
configureJsDocsPlugin,
6+
configureTypescriptPlugin,
7+
configureUpload,
8+
} from '../../code-pushup.preset.js';
9+
import { mergeConfigs } from '../utils/src/index.js';
10+
11+
const projectName = 'cli';
12+
13+
export default mergeConfigs(
14+
configureUpload(projectName),
15+
await configureEslintPlugin(projectName),
16+
await configureCoveragePlugin(projectName),
17+
configureTypescriptPlugin(projectName),
18+
configureJsDocsPlugin(projectName),
19+
);

packages/cli/project.json

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,11 @@
99
"lint-report": {},
1010
"unit-test": {},
1111
"int-test": {},
12-
"run-help": {
13-
"command": "npx dist/packages/cli --help",
14-
"dependsOn": ["build"]
15-
},
16-
"run-collect": {
17-
"command": "npx ../../dist/packages/cli collect --persist.format=json --persist.format=md",
18-
"options": {
19-
"cwd": "examples/react-todos-app"
20-
},
21-
"dependsOn": ["build"]
22-
},
23-
"run-print-config": {
24-
"command": "npx ../../dist/packages/cli print-config",
25-
"options": {
26-
"cwd": "examples/react-todos-app"
27-
},
28-
"dependsOn": ["build"]
29-
}
12+
"code-pushup": {},
13+
"code-pushup-eslint": {},
14+
"code-pushup-coverage": {},
15+
"code-pushup-typescript": {},
16+
"code-pushup-jsdocs": {}
3017
},
3118
"tags": ["scope:core", "type:app", "publishable"]
3219
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'dotenv/config';
2+
import {
3+
configureCoveragePlugin,
4+
configureEslintPlugin,
5+
configureJsDocsPlugin,
6+
configureTypescriptPlugin,
7+
configureUpload,
8+
} from '../../code-pushup.preset.js';
9+
import { mergeConfigs } from '../utils/src/index.js';
10+
11+
const projectName = 'core';
12+
13+
export default mergeConfigs(
14+
configureUpload(projectName),
15+
await configureEslintPlugin(projectName),
16+
await configureCoveragePlugin(projectName),
17+
configureTypescriptPlugin(projectName),
18+
configureJsDocsPlugin(projectName),
19+
);

packages/core/project.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
"lint": {},
99
"lint-report": {},
1010
"unit-test": {},
11-
"int-test": {}
11+
"int-test": {},
12+
"code-pushup": {},
13+
"code-pushup-eslint": {},
14+
"code-pushup-coverage": {},
15+
"code-pushup-typescript": {},
16+
"code-pushup-jsdocs": {}
1217
},
1318
"tags": ["scope:core", "type:feature", "publishable"]
1419
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'dotenv/config';
2+
import {
3+
configureCoveragePlugin,
4+
configureEslintPlugin,
5+
configureJsDocsPlugin,
6+
configureTypescriptPlugin,
7+
configureUpload,
8+
} from '../../code-pushup.preset.js';
9+
import { mergeConfigs } from '../utils/src/index.js';
10+
11+
const projectName = 'create-cli';
12+
13+
export default mergeConfigs(
14+
configureUpload(projectName),
15+
await configureEslintPlugin(projectName),
16+
await configureCoveragePlugin(projectName),
17+
configureTypescriptPlugin(projectName),
18+
configureJsDocsPlugin(projectName),
19+
);

packages/create-cli/project.json

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,11 @@
88
"lint": {},
99
"lint-report": {},
1010
"unit-test": {},
11-
"exec-node": {
12-
"dependsOn": ["build"],
13-
"command": "node ./dist/packages/create-cli/src/index.js",
14-
"options": {}
15-
},
16-
"exec-npm": {
17-
"dependsOn": ["^build"],
18-
"command": "npm exec ./dist/packages/create-cli",
19-
"options": {}
20-
}
11+
"code-pushup": {},
12+
"code-pushup-eslint": {},
13+
"code-pushup-coverage": {},
14+
"code-pushup-typescript": {},
15+
"code-pushup-jsdocs": {}
2116
},
2217
"tags": ["scope:tooling", "type:app", "publishable"]
2318
}

0 commit comments

Comments
 (0)