serverless-heaven/serverless-webpack

Google, OpenWhisk or Azure support?

Jonovono opened this issue ยท 22 comments

Wondering if support for Google Cloud Functions is on the horizon?

Since this plugin is designed to work with serverless, which supports Google Cloud functions, I think this plugin supports Google Functions.

Let us know if that is not the case, and why.

Has anyone tested this plugin with IBM OpenWhisk, Google Cloud Functions, and Azure Functions?

@alexcasalboni Do you have the opportunity to test it with a test project for one of the providers? We also use only AWS at work, so I cannot make any valid statement on the issue.

Just renamed the issue. We should gather feedback from users that tried the plugin with other providers than AWS here.

@HyperBrain I just reached out to the main vendor-plugins maintainers, so maybe we'll find out faster :)

I've been testing the OpenWhisk provider with this plugin. I can successfully deploy functions bundled with webpack. ๐Ÿ’ช

The examples I've tested from the samples folder work without modification.

There is an issue with the invoke plugin that is bound to AWS Lambda's function interface.
https://github.com/elastic-coders/serverless-webpack/blob/master/lib/run.js#L93-L104

Is it possible to just fire the native invoke plugin for the provider rather than triggering this manually?

Could we also add a section to the README highlighting support for the other providers with details on which features work? Maybe a table?

@jthomas Big ๐Ÿ‘ for the evaluation and testing. It is good to hear that at least the basic functionality works as expected.

Could we also add a section to the README highlighting support for the other providers with details on which features work? Maybe a table?

Good idea! Feel free to add a PR for the README changes (and add the OpenWhisk results there). The section could imo be named "Provider support" with a table as you proposed.

Is it possible to just fire the native invoke plugin for the provider rather than triggering this manually?

I like this idea. Maybe the plugin could just hook into serverless invoke local, so that it is provider independent and will run through all initializations done there, but adds the compile step. Then we could remove the invoke/run command completely and the user would use one well-known function, regardless if the plugin is enabled or not. The plugin should not replicate functionality that is offered by Serverless or other plugins that are specialized for these tasks.
I will create a separate issue/task for the use of serverless invoke local and the corresponding hooks and link it here.

Here's the PR for the provider table.
#149

More testing has revealed that watch works but serve doesn't.

The serve plugin also uses a provider dependent interface to execute the handler.
https://github.com/elastic-coders/serverless-webpack/blob/master/lib/serve.js#L119-L129

Serve will be abandoned and removed (see #135) in version 3.0.0 in favor of the serverless-offline plugin which works better.
If the invoke is switched to the standard implementation too, it would leave no unsupported functions at all in the compatibility table ๐Ÿ˜„

@pmuens Do you have some time to test the same things that @jthomas did with the OpenWhisk plugin? It would be great if we could fill the table added in #149 with the Google results.

The invoke local integration I mentioned above (#128 (comment)) is handled in #151 . As soon as the PR ( #153 ) is finalized we should test it with the different providers and adjust the provider support table accordingly.

@jthomas The V3 version in the v3.0.0 branch should now fully support invoke local. Can you try it with OpenWhisk and complete the provider support table again in that branch? Thank you ๐Ÿ˜ƒ

@HyperBrain invoke local works ๐Ÿ‘ but --watch does not ๐Ÿ‘Ž. It just returns after invoking the function. Is this currently working?

@jthomas Yes, --watch works for me. I tested it with the example @cwaltken-edrans mentioned in #180.
My test system was Windows 10, Git Bash and Node 6.10.x. I posted my results in the forementioned issue (see here #180 (comment)).

Technically the watch waits for file change callbacks from webpack's watch and retriggers the invoke local.

IMO there are multiple possibilities to cause the issue for you:

  • You're using a Mac and somehow we need fsevents as optional package in serverless-webpack
  • The OpenWhisk plugin somehow terminates the invoke local after running and prevents the wait to happen

However it is worth further investigation. The invoke local support (including watch) should be provider agnostic as it only uses framework and Webpack functions.

@jthomas I just released v3. Can you check with the OpenWhisk plugin again and fill the compatibility table? Thanks.

I've just checked this and all commands are now working!

That's good news ๐Ÿ‘ Thanks for testing.

Hey guys, I'm a Google Cloud Functions type of guy (https://github.com/serverless/serverless-google-cloudfunctions), and I could not get it working. After further investigation, it seems like serverless-google-cloudfunctions does not support package.individually: true. Anyone else struggling with this?

UPDATE: #199 is exactly the error I'm getting. Weird since it seems to have been resolved!

Closing this as it was only a summary to get info about other providers