Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 91 commits into from
Nov 30, 2020

Conversation

mistic
Copy link
Member

@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
Member Author

mistic commented Nov 24, 2020

@elasticmachine merge upstream

@mshustov
Copy link
Contributor

@mistic ack: going to review it today

@mistic
Copy link
Member 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
Member Author

mistic commented Nov 26, 2020

@elasticmachine merge upstream

@mistic
Copy link
Member Author

mistic commented Nov 30, 2020

@elasticmachine merge upstream

@kibanamachine
Copy link
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
Member 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 Team label for 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