Skip to content

chore(NA): tool to find plugins circular dependencies between plugins#82867

Merged
mistic merged 91 commits intoelastic:masterfrom
mistic:find-plugins-circular-deps
Nov 30, 2020
Merged

chore(NA): tool to find plugins circular dependencies between plugins#82867
mistic merged 91 commits intoelastic:masterfrom
mistic:find-plugins-circular-deps

Conversation

@mistic
Copy link
Copy Markdown
Contributor

@mistic mistic commented Nov 6, 2020

It closes #78162

Introduces a tool to identify circular dependencies between plugins. It will run on a ci check respecting an hardcoded allowed list and it can also be ran locally in a debug verbose mode with node scripts/find_plugins_with_circular_deps --debug.

Before choosing dpdm I've tried other tools like madge and dependency-cruiser . The first one is currently not working with async imports (which we use to load plugin bundles) pahen/madge#157 while the second one was not able to find any circular dependencies on our code base (which we knew we have). By those reasons I choose to go with dpdm as it is working as we expect.

@mistic
Copy link
Copy Markdown
Contributor Author

mistic commented Nov 24, 2020

@elasticmachine merge upstream

@mshustov
Copy link
Copy Markdown
Contributor

@mistic ack: going to review it today

@mistic
Copy link
Copy Markdown
Contributor Author

mistic commented Nov 25, 2020

@restrry I've addressed all of the feedback you left 😃

@mistic

This comment has been minimized.

@mistic
Copy link
Copy Markdown
Contributor Author

mistic commented Nov 26, 2020

@elasticmachine merge upstream

@mistic
Copy link
Copy Markdown
Contributor Author

mistic commented Nov 30, 2020

@elasticmachine merge upstream

@kibanamachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
enterpriseSearch 1.0MB 1.0MB +15.0B

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
upgradeAssistant 60.4KB 60.4KB +15.0B

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@mistic mistic merged commit 6e88954 into elastic:master Nov 30, 2020
@mistic
Copy link
Copy Markdown
Contributor Author

mistic commented Nov 30, 2020

7.x: 60e03fc

mistic added a commit to mistic/kibana that referenced this pull request Nov 30, 2020
…elastic#82867)

* chore(NA): update gitignore to include first changes from moving into a single package.json

* chore(NA): update gitignore

* chore(NA): move all the dependencies into the single package.json and apply changes to bootstrap

* chore(NA): fix types problems after the single package json

* chore(NA): include code to find the dependencies used across the code

* chore(NA): introduce pure lockfile for install dependencies on build

* chore(NA): update clean task to not delete anything from xpack node_modules

* chore(NA): update gitignore to remove development temporary rules

* chore(NA): update notice file

* chore(NA): update jest snapshots

* chore(NA): fix whitelisted licenses to include a new specify form of an already included one

* chore(NA): remove check lockfile symlinks from child projects

* chore(NA): fix eslint and add missing declared deps on single pkg json

* chore(NA): correctly update notice

* chore(NA): fix failing jest test for storyshots.test.tsx

* chore(NA): fix cypress multi reporter path

* chore(NA): fix Project tests check

* chore(NA): fix problem with logic to detect used dependes on oss build

* chore(NA): include correct x-pack plugins dep discovery

* chore(NA): discover entries under dynamic requires on vis_type_timelion

* chore(NA): remove canvas

* chore(NA): add initial code to find circular deps

* chore(NA): ground work to integrate the circular deps scripts

* chore(NA): add correct filtering to find circular dependenices feature

* chore(NA): add ci mode flag into circular deps script

* chore(NA): feature complete circular dependencies detect script

* chore(NA): merge and solve conflicts with master

* chore(NA): remove unwanted changes

* chore(NA): remove unwanted changes on kbn storybook

* chore(NA): hook find circular deps tool into ci

* chore(NA): remove previous find plugin circular deps script

* chore(NA): add type for circular dep list

* chore(NA): add type for circular dep list for allowed list

* chore(NA): allow CI to fail check

* chore(NA): update deps allowed list

* chore(NA): run search circular deps script over examples too

* docs(NA): adds cli description

* chore(NA): use plugin search paths to build entries to find circular deps

* chore(NA): update allowed list

* chore(NA): snapshot update for kbn optimizer test

* chore(NA): update dpdm version

* chore(NA): remove thirdParty flag

* chore(NA): update docs to include info about the new tool

* docs(NA): update to link PR instead of the issue

* chore(NA): update debug logs to always output allowedList

* fix(NA): correctly list found differences number

* chore(NA): remove quiet flag

* fix(NA): correctly fail the CI if circular deps are found

* chore(NA): complete list of found circular deps

* chore(NA): used named capturing group into the regex

* docs(NA): update typescript best practices docs and styleguide

* chore(NA): introduce quick filter option flag

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
mistic added a commit that referenced this pull request Dec 1, 2020
…#82867) (#84588)

* chore(NA): update gitignore to include first changes from moving into a single package.json

* chore(NA): update gitignore

* chore(NA): move all the dependencies into the single package.json and apply changes to bootstrap

* chore(NA): fix types problems after the single package json

* chore(NA): include code to find the dependencies used across the code

* chore(NA): introduce pure lockfile for install dependencies on build

* chore(NA): update clean task to not delete anything from xpack node_modules

* chore(NA): update gitignore to remove development temporary rules

* chore(NA): update notice file

* chore(NA): update jest snapshots

* chore(NA): fix whitelisted licenses to include a new specify form of an already included one

* chore(NA): remove check lockfile symlinks from child projects

* chore(NA): fix eslint and add missing declared deps on single pkg json

* chore(NA): correctly update notice

* chore(NA): fix failing jest test for storyshots.test.tsx

* chore(NA): fix cypress multi reporter path

* chore(NA): fix Project tests check

* chore(NA): fix problem with logic to detect used dependes on oss build

* chore(NA): include correct x-pack plugins dep discovery

* chore(NA): discover entries under dynamic requires on vis_type_timelion

* chore(NA): remove canvas

* chore(NA): add initial code to find circular deps

* chore(NA): ground work to integrate the circular deps scripts

* chore(NA): add correct filtering to find circular dependenices feature

* chore(NA): add ci mode flag into circular deps script

* chore(NA): feature complete circular dependencies detect script

* chore(NA): merge and solve conflicts with master

* chore(NA): remove unwanted changes

* chore(NA): remove unwanted changes on kbn storybook

* chore(NA): hook find circular deps tool into ci

* chore(NA): remove previous find plugin circular deps script

* chore(NA): add type for circular dep list

* chore(NA): add type for circular dep list for allowed list

* chore(NA): allow CI to fail check

* chore(NA): update deps allowed list

* chore(NA): run search circular deps script over examples too

* docs(NA): adds cli description

* chore(NA): use plugin search paths to build entries to find circular deps

* chore(NA): update allowed list

* chore(NA): snapshot update for kbn optimizer test

* chore(NA): update dpdm version

* chore(NA): remove thirdParty flag

* chore(NA): update docs to include info about the new tool

* docs(NA): update to link PR instead of the issue

* chore(NA): update debug logs to always output allowedList

* fix(NA): correctly list found differences number

* chore(NA): remove quiet flag

* fix(NA): correctly fail the CI if circular deps are found

* chore(NA): complete list of found circular deps

* chore(NA): used named capturing group into the regex

* docs(NA): update typescript best practices docs and styleguide

* chore(NA): introduce quick filter option flag

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore release_note:skip Skip the PR/issue when compiling release notes Team:Operations Kibana-Operations Team v7.11.0 v8.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create tool to identify and visualize circular imports between plugins

7 participants