{"id":14987851,"url":"https://github.com/apache/openwhisk-runtime-nodejs","last_synced_at":"2025-10-11T10:46:12.838Z","repository":{"id":40252564,"uuid":"105323132","full_name":"apache/openwhisk-runtime-nodejs","owner":"apache","description":"Apache OpenWhisk Runtime NodeJS supports Apache OpenWhisk functions written in JavaScript for NodeJS","archived":false,"fork":false,"pushed_at":"2024-12-14T21:28:19.000Z","size":17527,"stargazers_count":64,"open_issues_count":7,"forks_count":71,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-10-06T00:36:53.929Z","etag":null,"topics":["apache","cloud","docker","faas","functions","functions-as-a-service","javascript","node","node-js","nodejs","openwhisk","openwhisk-runtime","serverless","serverless-architectures","serverless-functions"],"latest_commit_sha":null,"homepage":"https://openwhisk.apache.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-29T22:45:07.000Z","updated_at":"2025-07-17T15:29:04.000Z","dependencies_parsed_at":"2025-02-15T17:37:40.842Z","dependency_job_id":null,"html_url":"https://github.com/apache/openwhisk-runtime-nodejs","commit_stats":null,"previous_names":[],"tags_count":73,"template":false,"template_full_name":null,"purl":"pkg:github/apache/openwhisk-runtime-nodejs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fopenwhisk-runtime-nodejs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fopenwhisk-runtime-nodejs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fopenwhisk-runtime-nodejs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fopenwhisk-runtime-nodejs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/openwhisk-runtime-nodejs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fopenwhisk-runtime-nodejs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006866,"owners_count":26084208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache","cloud","docker","faas","functions","functions-as-a-service","javascript","node","node-js","nodejs","openwhisk","openwhisk-runtime","serverless","serverless-architectures","serverless-functions"],"created_at":"2024-09-24T14:15:34.504Z","updated_at":"2025-10-11T10:46:12.798Z","avatar_url":"https://github.com/apache.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n--\u003e\n\n# Apache OpenWhisk runtimes for Node.js\n\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n[![Continuous Integration](https://github.com/apache/openwhisk-runtime-nodejs/actions/workflows/ci.yaml/badge.svg)](https://github.com/apache/openwhisk-runtime-nodejs/actions/workflows/ci.yaml)\n\nThis 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.\n\nThe following Node.js runtime versions (with kind \u0026 image labels) are generated by the build system:\n\n- Node.js 18 (`nodejs:18` \u0026 `openwhisk/action-nodejs-v18`)\n- Node.js 20 (`nodejs:20` \u0026 `openwhisk/action-nodejs-v20`)\n\nThis README documents the build, customisation and testing of these runtime images.\n\n**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.\n\n## Usage\n\nIf the deployment of Apache OpenWhisk includes these images in the runtime manifest, use the `--kind` parameter to select the Node.js runtime version.\n\n### Node.js v20\n\n```\nwsk action update myAction myAction.js --kind nodejs:20\n```\n\n## Images\n\nAll the runtime images are published by the project to Docker Hub @ [https://hub.docker.com/u/openwhisk](https://hub.docker.com/u/openwhisk)\n\n- [https://hub.docker.com/r/openwhisk/action-nodejs-v18](https://hub.docker.com/r/openwhisk/action-nodejs-v18)\n- [https://hub.docker.com/r/openwhisk/action-nodejs-v20](https://hub.docker.com/r/openwhisk/action-nodejs-v20)\n\nThese 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.\n\n```\nwsk action update myAction myAction.js --docker openwhisk/action-nodejs-v20\n```\n\nIf 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.\n\n### Runtimes Manifest\n\nAvailable 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)\n\nModify the manifest and re-deploy the platform to pick up local images changes.\n\n## Development\n\nDockerfiles 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.\n\nThe `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.\n\n### Build\n\n- Run the `distDocker` command to generate local Docker images for the different runtime versions.\n\n```\n./gradlew core:nodejs18Action:distDocker\n./gradlew core:nodejs20Action:distDocker\n```\n\nThis will return the following runtime images with the following names: `action-nodejs-v18`, and `action-nodejs-v20`.\n\n### Testing\n\n- 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.\n\n```\n./gradlew install\n```\n\n*This command **MUST BE** run from the directory containing the main Apache OpenWhisk [repository](https://github.com/apache/openwhisk), not this repository's directory.*\n\n- Build the local Docker images for the runtime versions (see the instructions above).\n- Build the custom Docker images used in local testing.\n\n```\n./gradlew tests:dat:docker:nodejs18docker:distDocker\n./gradlew tests:dat:docker:nodejs20docker:distDocker\n```\n\n- Run the project tests.\n\n```\n./gradlew :tests:test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fopenwhisk-runtime-nodejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fopenwhisk-runtime-nodejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fopenwhisk-runtime-nodejs/lists"}