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

Support `serverless run` #269

Closed
kbrandwijk opened this Issue Nov 7, 2017 · 9 comments

Comments

Projects
None yet
2 participants
@kbrandwijk
Copy link

kbrandwijk commented Nov 7, 2017

This is a Feature Proposal

Description

For feature proposals:

I recently added the same feature to serverless-plugin-typescript (for reference):
https://github.com/graphcool/serverless-plugin-typescript/blob/master/src/index.ts#L31-L37

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 7, 2017

Hi @kbrandwijk . Great idea 🙌

This would indeed be a great addition. Having the hook implemented would be quite easy. What I'm thinking about is, if a watch option (like the one for sls-offline or sls invoke local) would be possible in the run scenario. I will dig into this a bit - as Docker support was added too recently by the possibility to enable watch polling instead of filesystem events with a switch, that might be possible.

@HyperBrain HyperBrain added this to the 4.1.0 milestone Nov 7, 2017

@HyperBrain HyperBrain added the feature label Nov 7, 2017

@kbrandwijk

This comment has been minimized.

Copy link
Author

kbrandwijk commented Nov 7, 2017

I haven't got the watching part working with serverless-plugin-typescript in combination with serverless run, so any ideas we can share would benefit both plugins.

@HyperBrain HyperBrain referenced this issue Nov 7, 2017

Merged

Support SLS run #270

7 of 7 tasks complete
@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 7, 2017

@kbrandwijk Could you check if my PR works as expected? On my Windows system I get up to where the functions are loaded into the emulator, but after that it breaks (Ubuntu shell).
There is a known issue/bug that the event gateway does not work in Windows. I have to check it on my native Ubuntu.

I think I can get the watch mode running - in a similar way as the local invoke does, but just with respawning the run command on a source change. But I have to add and check that on my Ubuntu.

@kbrandwijk

This comment has been minimized.

Copy link
Author

kbrandwijk commented Nov 7, 2017

I'm also on Windows. I have that same issue. I just start sle manually, then run sls run in a different console and it picks up the already running emulator. I'll check the PR version tomorrow.

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 8, 2017

I checked the contents of the emulator storage and they contain the compiled sources which looks ok so far. Starting sle separately did the trick, thanks.
However, the node modules are not copied -> because I did not invoke the packaging. As the event gateway is completely "external" for the sources, I have to add that to the PR.

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 8, 2017

Added it - now the needed node modules are correctly copied to the emulator.

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 8, 2017

The command seems to work for me now.

I played a bit with getting watch working. I managed to let webpack watch the directory, and it got triggered correctly, but it seems that the run command locks the directory. I have to check if I somehow can get arount the deletion of the service directory for the run command. Then it should work.... stand by, I'm working on it.

Serverless: Sources changed.

  Error --------------------------------------------------

  EBUSY: resource busy or locked, rmdir 'C:\Projects\serverless\test\babel-dynam
ically-entries\.webpack\service'

I solved that problem now and the recompile is suceesfully triggered, but as soon as it tries to register the functions again, SLS fails with:

 Serverless     Functions loading...
 Serverless     Functions loaded successfully in your current "serverless run" s
ession.

  Error --------------------------------------------------

  Failed to configure the Event Gateway. Failed to register the function babel-d
ynamically-entries-example-first due the error: Function "babel-dynamically-entr
ies-example-first" already registered.

I have to find out, how to unregister functions from the gateway or just deploy them again.

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 8, 2017

I got the watch option working correctly now and will update the PR after some cleanup!

Then you can use serverless run and serverless run --watch

PR has been updated. Could you please try with both variants?

@HyperBrain

This comment has been minimized.

Copy link
Member

HyperBrain commented Nov 21, 2017

Released with 4.1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment