From 9e508663563f019f1ef5bd727a48fa72a56d42a2 Mon Sep 17 00:00:00 2001 From: Jack Westbrook Date: Tue, 15 Oct 2024 14:25:45 +0200 Subject: [PATCH] Build: Nx improvements (#88341) * feat(frontend): introduce project.json for every workspace to improve caching * refactor(frontend): use nx tags for grafana dependson * refactor(frontend): clean up nx tags for packages and plugins * build(nx): make grafana dependent on cacheable generate icons command * build(nx): clean up project files --- nx.json | 2 +- package.json | 14 +++++++------- packages/grafana-data/project.json | 8 ++++++++ packages/grafana-e2e-selectors/project.json | 8 ++++++++ packages/grafana-eslint-rules/project.json | 6 ++++++ packages/grafana-flamegraph/project.json | 8 ++++++++ packages/grafana-icons/project.json | 11 +++++++++++ packages/grafana-o11y-ds-frontend/project.json | 6 ++++++ packages/grafana-plugin-configs/project.json | 6 ++++++ packages/grafana-prometheus/project.json | 8 ++++++++ packages/grafana-runtime/project.json | 8 ++++++++ packages/grafana-schema/project.json | 8 ++++++++ packages/grafana-sql/project.json | 6 ++++++ packages/grafana-ui/project.json | 8 ++++++++ project.json | 6 ++++-- .../plugins/datasource/azuremonitor/project.json | 9 +++++++++ .../datasource/cloud-monitoring/project.json | 9 +++++++++ .../grafana-postgresql-datasource/project.json | 9 +++++++++ .../grafana-pyroscope-datasource/project.json | 9 +++++++++ .../grafana-testdata-datasource/project.json | 9 +++++++++ public/app/plugins/datasource/jaeger/project.json | 9 +++++++++ public/app/plugins/datasource/mysql/project.json | 9 +++++++++ public/app/plugins/datasource/parca/project.json | 9 +++++++++ public/app/plugins/datasource/tempo/project.json | 9 +++++++++ public/app/plugins/datasource/zipkin/project.json | 9 +++++++++ 25 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 packages/grafana-data/project.json create mode 100644 packages/grafana-e2e-selectors/project.json create mode 100644 packages/grafana-eslint-rules/project.json create mode 100644 packages/grafana-flamegraph/project.json create mode 100644 packages/grafana-icons/project.json create mode 100644 packages/grafana-o11y-ds-frontend/project.json create mode 100644 packages/grafana-plugin-configs/project.json create mode 100644 packages/grafana-prometheus/project.json create mode 100644 packages/grafana-runtime/project.json create mode 100644 packages/grafana-schema/project.json create mode 100644 packages/grafana-sql/project.json create mode 100644 packages/grafana-ui/project.json create mode 100644 public/app/plugins/datasource/azuremonitor/project.json create mode 100644 public/app/plugins/datasource/cloud-monitoring/project.json create mode 100644 public/app/plugins/datasource/grafana-postgresql-datasource/project.json create mode 100644 public/app/plugins/datasource/grafana-pyroscope-datasource/project.json create mode 100644 public/app/plugins/datasource/grafana-testdata-datasource/project.json create mode 100644 public/app/plugins/datasource/jaeger/project.json create mode 100644 public/app/plugins/datasource/mysql/project.json create mode 100644 public/app/plugins/datasource/parca/project.json create mode 100644 public/app/plugins/datasource/tempo/project.json create mode 100644 public/app/plugins/datasource/zipkin/project.json diff --git a/nx.json b/nx.json index 3ec7fc7711f..5e92cfe6851 100644 --- a/nx.json +++ b/nx.json @@ -3,7 +3,7 @@ "default": { "runner": "nx/tasks-runners/default", "options": { - "cacheableOperations": ["build"] + "cacheableOperations": ["build", "generate"] } } }, diff --git a/package.json b/package.json index 7efcf198bc5..40fbb729cfa 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,11 @@ "lint:sass": "yarn stylelint '{public/sass,packages}/**/*.scss' --cache", "test:ci": "mkdir -p reports/junit && JEST_JUNIT_OUTPUT_DIR=reports/junit jest --ci --reporters=default --reporters=jest-junit -w ${TEST_MAX_WORKERS:-100%}", "lint:fix": "yarn lint:ts --fix", - "packages:build": "nx run-many -t build --projects='@grafana/*'", - "packages:clean": "rimraf ./npm-artifacts && lerna run clean --parallel", + "packages:build": "nx run-many -t build --projects='tag:scope:package'", + "packages:clean": "rimraf ./npm-artifacts && nx run-many -t clean --projects='tag:scope:package' --maxParallel=100", "packages:prepare": "lerna version --no-push --no-git-tag-version --force-publish --exact", "packages:pack": "mkdir -p ./npm-artifacts && lerna exec --no-private -- yarn pack --out \"../../npm-artifacts/%s-%v.tgz\"", - "packages:typecheck": "nx run-many -t typecheck --projects='@grafana/*'", + "packages:typecheck": "nx run-many -t typecheck --projects='tag:scope:package'", "prettier:check": "prettier --check --list-different=false --log-level=warn \"**/*.{ts,tsx,scss,md,mdx,json}\"", "prettier:checkDocs": "prettier --check --list-different=false --log-level=warn \"docs/**/*.md\" \"*.md\" \"packages/**/*.{ts,tsx,scss,md,mdx,json}\"", "prettier:write": "prettier --list-different \"**/*.{js,ts,tsx,scss,md,mdx,json}\" --write", @@ -58,10 +58,10 @@ "betterer:stats": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/reportBettererStats.ts", "betterer:issues": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/generateBettererIssues.ts", "generate-icons-bundle-cache-file": "node ./scripts/generate-icon-bundle.js", - "plugin:build": "nx run-many -t build --projects='@grafana-plugins/*'", - "plugin:build:commit": "nx run-many -t build:commit --projects='@grafana-plugins/*'", - "plugin:build:dev": "nx run-many -t dev --projects='@grafana-plugins/*' --maxParallel=100", - "generate-icons": "yarn workspace @grafana/saga-icons generate", + "plugin:build": "nx run-many -t build --projects='tag:scope:plugin'", + "plugin:build:commit": "nx run-many -t build:commit --projects='tag:scope:plugin'", + "plugin:build:dev": "nx run-many -t dev --projects='tag:scope:plugin' --maxParallel=100", + "generate-icons": "nx run grafana-icons:generate", "generate-apis": "rtk-query-codegen-openapi ./scripts/generate-rtk-apis.ts" }, "grafana": { diff --git a/packages/grafana-data/project.json b/packages/grafana-data/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-data/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-e2e-selectors/project.json b/packages/grafana-e2e-selectors/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-e2e-selectors/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-eslint-rules/project.json b/packages/grafana-eslint-rules/project.json new file mode 100644 index 00000000000..646c64168a8 --- /dev/null +++ b/packages/grafana-eslint-rules/project.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:build"], + "targets": {} +} diff --git a/packages/grafana-flamegraph/project.json b/packages/grafana-flamegraph/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-flamegraph/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-icons/project.json b/packages/grafana-icons/project.json new file mode 100644 index 00000000000..7950b1939c0 --- /dev/null +++ b/packages/grafana-icons/project.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "generate": { + "outputs": ["{projectRoot}/src/icons-gen"] + }, + "build": {} + } +} diff --git a/packages/grafana-o11y-ds-frontend/project.json b/packages/grafana-o11y-ds-frontend/project.json new file mode 100644 index 00000000000..2fe46a23eff --- /dev/null +++ b/packages/grafana-o11y-ds-frontend/project.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": {} +} diff --git a/packages/grafana-plugin-configs/project.json b/packages/grafana-plugin-configs/project.json new file mode 100644 index 00000000000..646c64168a8 --- /dev/null +++ b/packages/grafana-plugin-configs/project.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:build"], + "targets": {} +} diff --git a/packages/grafana-prometheus/project.json b/packages/grafana-prometheus/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-prometheus/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-runtime/project.json b/packages/grafana-runtime/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-runtime/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-schema/project.json b/packages/grafana-schema/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-schema/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/packages/grafana-sql/project.json b/packages/grafana-sql/project.json new file mode 100644 index 00000000000..2fe46a23eff --- /dev/null +++ b/packages/grafana-sql/project.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": {} +} diff --git a/packages/grafana-ui/project.json b/packages/grafana-ui/project.json new file mode 100644 index 00000000000..9d13669dada --- /dev/null +++ b/packages/grafana-ui/project.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:package", "type:ui"], + "targets": { + "build": {} + } +} diff --git a/project.json b/project.json index fc188ab461b..9c2c25d1e8d 100644 --- a/project.json +++ b/project.json @@ -6,8 +6,9 @@ "start": { "dependsOn": [ "themes-generate", + "grafana-icons:generate", { - "projects": ["@grafana-plugins/**"], + "projects": ["tag:scope:plugin"], "target": "build" } ] @@ -15,8 +16,9 @@ "build": { "dependsOn": [ "themes-generate", + "grafana-icons:generate", { - "projects": ["@grafana-plugins/**"], + "projects": ["tag:scope:plugin"], "target": "build" } ], diff --git a/public/app/plugins/datasource/azuremonitor/project.json b/public/app/plugins/datasource/azuremonitor/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/azuremonitor/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/cloud-monitoring/project.json b/public/app/plugins/datasource/cloud-monitoring/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/cloud-monitoring/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/grafana-postgresql-datasource/project.json b/public/app/plugins/datasource/grafana-postgresql-datasource/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/grafana-postgresql-datasource/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/grafana-pyroscope-datasource/project.json b/public/app/plugins/datasource/grafana-pyroscope-datasource/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/grafana-pyroscope-datasource/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/grafana-testdata-datasource/project.json b/public/app/plugins/datasource/grafana-testdata-datasource/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/grafana-testdata-datasource/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/jaeger/project.json b/public/app/plugins/datasource/jaeger/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/jaeger/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/mysql/project.json b/public/app/plugins/datasource/mysql/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/mysql/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/parca/project.json b/public/app/plugins/datasource/parca/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/parca/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/tempo/project.json b/public/app/plugins/datasource/tempo/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/tempo/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +} diff --git a/public/app/plugins/datasource/zipkin/project.json b/public/app/plugins/datasource/zipkin/project.json new file mode 100644 index 00000000000..4247352791d --- /dev/null +++ b/public/app/plugins/datasource/zipkin/project.json @@ -0,0 +1,9 @@ +{ + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "tags": ["scope:plugin", "type:datasource"], + "targets": { + "build": {}, + "dev": {} + } +}