Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/apache/openwhisk-runtime-nodejs
Apache OpenWhisk Runtime NodeJS supports Apache OpenWhisk functions written in JavaScript for NodeJS
https://github.com/apache/openwhisk-runtime-nodejs
apache cloud docker faas functions functions-as-a-service javascript node node-js nodejs openwhisk openwhisk-runtime serverless serverless-architectures serverless-functions
Last synced: 3 days ago
JSON representation
Apache OpenWhisk Runtime NodeJS supports Apache OpenWhisk functions written in JavaScript for NodeJS
- Host: GitHub
- URL: https://github.com/apache/openwhisk-runtime-nodejs
- Owner: apache
- License: apache-2.0
- Created: 2017-09-29T22:45:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-12-14T21:28:19.000Z (2 months ago)
- Last Synced: 2025-02-08T16:09:59.941Z (10 days ago)
- Topics: apache, cloud, docker, faas, functions, functions-as-a-service, javascript, node, node-js, nodejs, openwhisk, openwhisk-runtime, serverless, serverless-architectures, serverless-functions
- Language: JavaScript
- Homepage: https://openwhisk.apache.org/
- Size: 16.7 MB
- Stars: 63
- Watchers: 32
- Forks: 72
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Apache OpenWhisk runtimes for Node.js
[](http://www.apache.org/licenses/LICENSE-2.0)
[](https://github.com/apache/openwhisk-runtime-nodejs/actions/workflows/ci.yaml)This repository contains sources files needed to build the Node.js runtimes for Apache OpenWhisk. The build system will produce a series of docker images for each runtime version. These images are used in the platform to execute Node.js actions.
The following Node.js runtime versions (with kind & image labels) are generated by the build system:
- Node.js 18 (`nodejs:18` & `openwhisk/action-nodejs-v18`)
- Node.js 20 (`nodejs:20` & `openwhisk/action-nodejs-v20`)This README documents the build, customisation and testing of these runtime images.
**Do you want to learn more about using Node.js actions to build serverless applications?** Please see the main project documentation [here](https://github.com/apache/openwhisk/blob/master/docs/actions-nodejs.md) for that information.
## Usage
If the deployment of Apache OpenWhisk includes these images in the runtime manifest, use the `--kind` parameter to select the Node.js runtime version.
### Node.js v20
```
wsk action update myAction myAction.js --kind nodejs:20
```## Images
All the runtime images are published by the project to Docker Hub @ [https://hub.docker.com/u/openwhisk](https://hub.docker.com/u/openwhisk)
- [https://hub.docker.com/r/openwhisk/action-nodejs-v18](https://hub.docker.com/r/openwhisk/action-nodejs-v18)
- [https://hub.docker.com/r/openwhisk/action-nodejs-v20](https://hub.docker.com/r/openwhisk/action-nodejs-v20)These images can be used to execute Node.js actions on any deployment of Apache OpenWhisk, even those without those images defined the in runtime manifest, using the `--docker` action parameter.
```
wsk action update myAction myAction.js --docker openwhisk/action-nodejs-v20
```If you build a custom version of the images, pushing those an external Docker Hub repository will allow you to use those on the Apache OpenWhisk deployment.
### Runtimes Manifest
Available runtimes in Apache OpenWhisk are defined using the runtimes manifest in this file: [runtimes.json](https://github.com/apache/openwhisk/blob/master/ansible/files/runtimes.json#L16-L72)
Modify the manifest and re-deploy the platform to pick up local images changes.
## Development
Dockerfiles for runtime images are defined in the `core` directory. Each runtime version folder has a custom `Dockerfile` and `package.json`. If you need to add extra dependencies to a runtime version - modify these files.
The `core/nodejsActionBase` folder contains the Node.js app server used to implement the [action interface](https://github.com/apache/openwhisk/blob/master/docs/actions-new.md#action-interface), used by the platform to inject action code into the runtime and fire invocation requests. This common code is used in all runtime versions.
### Build
- Run the `distDocker` command to generate local Docker images for the different runtime versions.
```
./gradlew core:nodejs18Action:distDocker
./gradlew core:nodejs20Action:distDocker
```This will return the following runtime images with the following names: `action-nodejs-v18`, and `action-nodejs-v20`.
### Testing
- Install project dependencies from the top-level Apache OpenWhisk [project](https://github.com/apache/openwhisk), which ensures correct versions of dependent libraries are available in the Maven cache.
```
./gradlew install
```*This command **MUST BE** run from the directory containing the main Apache OpenWhisk [repository](https://github.com/apache/openwhisk), not this repository's directory.*
- Build the local Docker images for the runtime versions (see the instructions above).
- Build the custom Docker images used in local testing.```
./gradlew tests:dat:docker:nodejs18docker:distDocker
./gradlew tests:dat:docker:nodejs20docker:distDocker
```- Run the project tests.
```
./gradlew :tests:test
```