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

Bug 2020428: Adapt webpack 5 related code in dynamic plugin SDK #10433

Merged
merged 2 commits into from Nov 12, 2021

Conversation

vojtechszocs
Copy link
Contributor

@vojtechszocs vojtechszocs commented Nov 10, 2021

This PR addresses all TODO items and refactors plugin SDK webpack code to comply with webpack 5 APIs.

Closes #9198

Improvements

  • ConsoleAssetPlugin is now responsible for generating and/or post-processing all Console plugin assets.
  • ExtensionValidator is now executed via emit hook. Plugins that wish to avoid emitting assets entirely due to webpack error(s) should do so via optimization.emitOnErrors option.
  • ExtensionValidator can be disabled by passing CONSOLE_PLUGIN_SKIP_EXT_VALIDATOR=true env. variable to your webpack command, for example:
CONSOLE_PLUGIN_SKIP_EXT_VALIDATOR=true yarn ts-node node_modules/.bin/webpack
  • Plugins should not specify output.publicPath option. ConsoleRemotePlugin will always set its value to /api/plugins/<ConsolePluginName>/. A warning will be issued in case it's specified explicitly, for example:
<w> [ConsoleRemotePlugin] output.publicPath is defined, but will be overridden to /api/plugins/console-demo-plugin/
  • exposed module chunks have better file names, e.g. exposed-navPage-chunk.js

Shared module configuration

  • all shared modules are treated as singletons, i.e. allow only a single version of the shared module
    • ➡️ Console is responsible for providing all shared modules to all of its plugins
  • plugins won't bring their own fallback version of shared modules
    • ➡️ results in faster plugin builds and smaller plugin asset footprint
  • no version checking when initializing shared modules for the given plugin
    • ➡️ using * semver range to ensure plugins always use the Console-provided shared module version

@openshift-ci openshift-ci bot added the component/sdk Related to console-plugin-sdk label Nov 10, 2021
@vojtechszocs vojtechszocs changed the title Adapt webpack 5 related code in dynamic plugin SDK Bug 2020428: Adapt webpack 5 related code in dynamic plugin SDK Nov 10, 2021
@openshift-ci openshift-ci bot added bugzilla/severity-medium Referenced Bugzilla bug's severity is medium for the branch this PR is targeting. bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. labels Nov 10, 2021
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 10, 2021

@vojtechszocs: This pull request references Bugzilla bug 2020428, which is invalid:

  • expected the bug to target the "4.10.0" release, but it targets "---" instead

Comment /bugzilla refresh to re-evaluate validity if changes to the Bugzilla bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

Bug 2020428: Adapt webpack 5 related code in dynamic plugin SDK

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Copy link
Member

@spadgett spadgett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to revisit some of the assumptions we're making about shared modules down the road, but I think this is good for now.

expectSameValues(Object.keys(entryModule.init.mock.calls[0][0]), sharedPluginModules);
});

it('supports plugins built with an older version of plugin SDK', () => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

shared: sharedPluginModules,
}).apply(compiler);
const logger = compiler.getInfrastructureLogger(ConsoleRemotePlugin.name);
const publicPath = `/api/plugins/${this.pkg.consolePlugin.name}/`;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Console has an option for a base context root, although we don't use it for OpenShift. Would this break that?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This option means that all plugin assets will be loaded from <ConsoleOrigin>/api/plugins/<PluginName> so relative to Console application's protocol / domain / port at runtime. Not sure if that is safe enough in relation to changing base context root 😕

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, that will break context roots. We might need it for HAC as well :/

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vojtechszocs
Copy link
Contributor Author

Updated PR to also fix #9198

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 10, 2021

@vojtechszocs: This pull request references Bugzilla bug 2020428, which is invalid:

  • expected the bug to target the "4.10.0" release, but it targets "---" instead

Comment /bugzilla refresh to re-evaluate validity if changes to the Bugzilla bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

Bug 2020428: Adapt webpack 5 related code in dynamic plugin SDK

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@spadgett
Copy link
Member

/bugzilla refresh

@openshift-ci openshift-ci bot added the bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. label Nov 10, 2021
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 10, 2021

@spadgett: This pull request references Bugzilla bug 2020428, which is valid. The bug has been moved to the POST state. The bug has been updated to refer to the pull request using the external bug tracker.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target release (4.10.0) matches configured target release for branch (4.10.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, ON_DEV, POST, POST)

Requesting review from QA contact:
/cc @yapei

In response to this:

/bugzilla refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-ci openshift-ci bot removed the bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. label Nov 10, 2021
@openshift-ci openshift-ci bot requested a review from yapei November 10, 2021 20:12
Copy link
Member

@spadgett spadgett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 10, 2021
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 10, 2021

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: spadgett, vojtechszocs

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Nov 10, 2021
@openshift-bot
Copy link
Contributor

/retest-required

Please review the full test history for this PR and help us cut down flakes.

1 similar comment
@openshift-bot
Copy link
Contributor

/retest-required

Please review the full test history for this PR and help us cut down flakes.

@openshift-merge-robot openshift-merge-robot merged commit 9ab6ddd into openshift:master Nov 12, 2021
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 12, 2021

@vojtechszocs: All pull requests linked via external trackers have merged:

Bugzilla bug 2020428 has been moved to the MODIFIED state.

In response to this:

Bug 2020428: Adapt webpack 5 related code in dynamic plugin SDK

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@spadgett spadgett added this to the v4.10 milestone Dec 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. bugzilla/severity-medium Referenced Bugzilla bug's severity is medium for the branch this PR is targeting. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. component/sdk Related to console-plugin-sdk lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[dynamic-plugin-sdk] Plugin fails to load if "eval-source-map" webpack devtool is used
4 participants