From 88916b5e7f607ce3a20aa9d8e94d5655e3679784 Mon Sep 17 00:00:00 2001 From: premtsd-code Date: Tue, 25 Aug 2026 07:10:57 +0530 Subject: [PATCH] Add Node.js 22 and Node.js 24 runtimes The newest runtime published by this repository is Node.js 20. Per the Node.js release schedule, Node 18 reached end of life in April 2025 and Node 20 in April 2026, leaving no supported Node.js version to target. Adds the nodejs:22 and nodejs:24 kinds, producing the action-nodejs-v22 and action-nodejs-v24 images, following the existing nodejs20Action layout. The runtime sources are not duplicated: they continue to be copied from core/nodejsActionBase by the existing Gradle copy tasks and removed again by cleanup, so the only substantive difference from nodejs20Action is the base image. - core/nodejs22Action, core/nodejs24Action - settings.gradle: register the new subprojects and test images - tests/dat/docker/nodejs22docker, nodejs24docker fixtures - NodeJs22/NodeJs24 ActionContainerTests and ConcurrentTests - ci.yaml: publish nightly and commit-tagged images for both - README: document the new kinds, images and build/test commands nodejs:20 remains the default kind, so existing actions are unaffected. Node.js versions in the resulting images: v22.23.2 and v24.19.0. --- .github/workflows/ci.yaml | 4 + README.md | 16 +++- core/nodejs22Action/.dockerignore | 13 +++ core/nodejs22Action/CHANGELOG.md | 26 ++++++ core/nodejs22Action/Dockerfile | 44 ++++++++++ core/nodejs22Action/build.gradle | 86 +++++++++++++++++++ core/nodejs24Action/.dockerignore | 13 +++ core/nodejs24Action/CHANGELOG.md | 26 ++++++ core/nodejs24Action/Dockerfile | 44 ++++++++++ core/nodejs24Action/build.gradle | 86 +++++++++++++++++++ settings.gradle | 4 + tests/dat/docker/nodejs22docker/Dockerfile | 19 ++++ tests/dat/docker/nodejs22docker/build.gradle | 19 ++++ tests/dat/docker/nodejs22docker/package.json | 8 ++ tests/dat/docker/nodejs24docker/Dockerfile | 19 ++++ tests/dat/docker/nodejs24docker/build.gradle | 19 ++++ tests/dat/docker/nodejs24docker/package.json | 8 ++ .../NodeJs22ActionContainerTests.scala | 27 ++++++ .../NodeJs22ConcurrentTests.scala | 27 ++++++ .../NodeJs24ActionContainerTests.scala | 27 ++++++ .../NodeJs24ConcurrentTests.scala | 27 ++++++ 21 files changed, 558 insertions(+), 4 deletions(-) create mode 100644 core/nodejs22Action/.dockerignore create mode 100644 core/nodejs22Action/CHANGELOG.md create mode 100644 core/nodejs22Action/Dockerfile create mode 100644 core/nodejs22Action/build.gradle create mode 100644 core/nodejs24Action/.dockerignore create mode 100644 core/nodejs24Action/CHANGELOG.md create mode 100644 core/nodejs24Action/Dockerfile create mode 100644 core/nodejs24Action/build.gradle create mode 100644 tests/dat/docker/nodejs22docker/Dockerfile create mode 100644 tests/dat/docker/nodejs22docker/build.gradle create mode 100644 tests/dat/docker/nodejs22docker/package.json create mode 100644 tests/dat/docker/nodejs24docker/Dockerfile create mode 100644 tests/dat/docker/nodejs24docker/build.gradle create mode 100644 tests/dat/docker/nodejs24docker/package.json create mode 100644 tests/src/test/scala/runtime/actionContainers/NodeJs22ActionContainerTests.scala create mode 100644 tests/src/test/scala/runtime/actionContainers/NodeJs22ConcurrentTests.scala create mode 100644 tests/src/test/scala/runtime/actionContainers/NodeJs24ActionContainerTests.scala create mode 100644 tests/src/test/scala/runtime/actionContainers/NodeJs24ConcurrentTests.scala diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 35713bd8..71b28de7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -92,6 +92,10 @@ jobs: ./gradlew :core:nodejs18Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT ./gradlew :core:nodejs20Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly ./gradlew :core:nodejs20Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT + ./gradlew :core:nodejs22Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly + ./gradlew :core:nodejs22Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT + ./gradlew :core:nodejs24Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly + ./gradlew :core:nodejs24Action:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - name: Push Release Images if: ${{ env.PUSH_RELEASE == 'true' }} working-directory: runtime diff --git a/README.md b/README.md index 515e2333..2db220a9 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ The following Node.js runtime versions (with kind & image labels) are generated - Node.js 18 (`nodejs:18` & `openwhisk/action-nodejs-v18`) - Node.js 20 (`nodejs:20` & `openwhisk/action-nodejs-v20`) +- Node.js 22 (`nodejs:22` & `openwhisk/action-nodejs-v22`) +- Node.js 24 (`nodejs:24` & `openwhisk/action-nodejs-v24`) This README documents the build, customisation and testing of these runtime images. @@ -37,10 +39,10 @@ This README documents the build, customisation and testing of these runtime imag 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 +### Node.js v24 ``` -wsk action update myAction myAction.js --kind nodejs:20 +wsk action update myAction myAction.js --kind nodejs:24 ``` ## Images @@ -49,11 +51,13 @@ All the runtime images are published by the project to Docker Hub @ [https://hub - [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) +- [https://hub.docker.com/r/openwhisk/action-nodejs-v22](https://hub.docker.com/r/openwhisk/action-nodejs-v22) +- [https://hub.docker.com/r/openwhisk/action-nodejs-v24](https://hub.docker.com/r/openwhisk/action-nodejs-v24) 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 +wsk action update myAction myAction.js --docker openwhisk/action-nodejs-v24 ``` 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. @@ -77,9 +81,11 @@ The `core/nodejsActionBase` folder contains the Node.js app server used to imple ``` ./gradlew core:nodejs18Action:distDocker ./gradlew core:nodejs20Action:distDocker +./gradlew core:nodejs22Action:distDocker +./gradlew core:nodejs24Action:distDocker ``` -This will return the following runtime images with the following names: `action-nodejs-v18`, and `action-nodejs-v20`. +This will return the following runtime images with the following names: `action-nodejs-v18`, `action-nodejs-v20`, `action-nodejs-v22`, and `action-nodejs-v24`. ### Testing @@ -97,6 +103,8 @@ This will return the following runtime images with the following names: `action- ``` ./gradlew tests:dat:docker:nodejs18docker:distDocker ./gradlew tests:dat:docker:nodejs20docker:distDocker +./gradlew tests:dat:docker:nodejs22docker:distDocker +./gradlew tests:dat:docker:nodejs24docker:distDocker ``` - Run the project tests. diff --git a/core/nodejs22Action/.dockerignore b/core/nodejs22Action/.dockerignore new file mode 100644 index 00000000..a1d03cb9 --- /dev/null +++ b/core/nodejs22Action/.dockerignore @@ -0,0 +1,13 @@ +*.*~ +*.yaml +*.tmpl +*.gradle +.dockerignore +.project +.settings +build.xml +Dockerfile +logs +node_modules +package-lock.json +test.js diff --git a/core/nodejs22Action/CHANGELOG.md b/core/nodejs22Action/CHANGELOG.md new file mode 100644 index 00000000..55004967 --- /dev/null +++ b/core/nodejs22Action/CHANGELOG.md @@ -0,0 +1,26 @@ + + +# NodeJS 22 OpenWhisk Runtime Container + +# Apache 1.24 + - Initial release with support for Node.js v22 + +Node.js version = [22.23.2](https://nodejs.org/en/blog/release/v22.23.2/) +OpenWhisk version = [OpenWhisk v3.21.8](https://www.npmjs.com/package/openwhisk) diff --git a/core/nodejs22Action/Dockerfile b/core/nodejs22Action/Dockerfile new file mode 100644 index 00000000..b2014d0e --- /dev/null +++ b/core/nodejs22Action/Dockerfile @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +FROM node:22-bullseye + +# Initial update and some basics. +# +RUN apt-get update && apt-get install -y \ + imagemagick \ + graphicsmagick \ + zip \ + unzip \ + && rm -rf /var/lib/apt/lists/* + +# Add sources and copy the package.json to root container, +# so npm packages from user functions take precedence. +# +WORKDIR /nodejsAction +ADD . /nodejsAction/ +COPY package.json / + +# Customize runtime with additional packages. +# Install package globally so user packages can override. +# +RUN cd / && npm install --no-package-lock --production \ + && npm cache clean --force + +EXPOSE 8080 + +CMD node --expose-gc app.js diff --git a/core/nodejs22Action/build.gradle b/core/nodejs22Action/build.gradle new file mode 100644 index 00000000..1e87d6ec --- /dev/null +++ b/core/nodejs22Action/build.gradle @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'eclipse' +eclipse { + project { + natures 'org.eclipse.wst.jsdt.core.jsNature' + buildCommand 'org.eclipse.wst.jsdt.core.javascriptValidator' + } +} + +ext.dockerImageName = 'action-nodejs-v22' +apply from: '../../gradle/docker.gradle' + +distDocker.dependsOn 'copyPackageJson' +distDocker.dependsOn 'copyProxy' +distDocker.dependsOn 'copyRunner' +distDocker.dependsOn 'copyService' +distDocker.dependsOn 'copyPlatform' +distDocker.dependsOn 'copyOpenWhisk' +distDocker.dependsOn 'copyKnative' +distDocker.dependsOn 'copyBuildTemplate' +distDocker.finalizedBy('cleanup') + +task copyPackageJson(type: Copy) { + from '../nodejsActionBase/package.json' + into '.' +} + +task copyProxy(type: Copy) { + from '../nodejsActionBase/app.js' + into '.' +} + +task copyRunner(type: Copy) { + from '../nodejsActionBase/runner.js' + into '.' +} + +task copyService(type: Copy) { + from '../nodejsActionBase/src/service.js' + into './src' +} + +task copyPlatform(type: Copy) { + from '../nodejsActionBase/platform/platform.js' + into './platform' +} + +task copyOpenWhisk(type: Copy) { + from '../nodejsActionBase/platform/openwhisk.js' + into './platform' +} + +task copyKnative(type: Copy) { + from '../nodejsActionBase/platform/knative.js' + into './platform' +} + +task copyBuildTemplate(type: Copy) { + from '../nodejsActionBase/buildtemplate.yaml' + into '.' +} + +task cleanup(type: Delete) { + delete 'package.json' + delete 'app.js' + delete 'runner.js' + delete 'src' + delete 'platform' + delete 'buildtemplate.yaml' +} diff --git a/core/nodejs24Action/.dockerignore b/core/nodejs24Action/.dockerignore new file mode 100644 index 00000000..a1d03cb9 --- /dev/null +++ b/core/nodejs24Action/.dockerignore @@ -0,0 +1,13 @@ +*.*~ +*.yaml +*.tmpl +*.gradle +.dockerignore +.project +.settings +build.xml +Dockerfile +logs +node_modules +package-lock.json +test.js diff --git a/core/nodejs24Action/CHANGELOG.md b/core/nodejs24Action/CHANGELOG.md new file mode 100644 index 00000000..d8fdcfb8 --- /dev/null +++ b/core/nodejs24Action/CHANGELOG.md @@ -0,0 +1,26 @@ + + +# NodeJS 24 OpenWhisk Runtime Container + +# Apache 1.24 + - Initial release with support for Node.js v24 + +Node.js version = [24.19.0](https://nodejs.org/en/blog/release/v24.19.0/) +OpenWhisk version = [OpenWhisk v3.21.8](https://www.npmjs.com/package/openwhisk) diff --git a/core/nodejs24Action/Dockerfile b/core/nodejs24Action/Dockerfile new file mode 100644 index 00000000..f309a461 --- /dev/null +++ b/core/nodejs24Action/Dockerfile @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +FROM node:24-bullseye + +# Initial update and some basics. +# +RUN apt-get update && apt-get install -y \ + imagemagick \ + graphicsmagick \ + zip \ + unzip \ + && rm -rf /var/lib/apt/lists/* + +# Add sources and copy the package.json to root container, +# so npm packages from user functions take precedence. +# +WORKDIR /nodejsAction +ADD . /nodejsAction/ +COPY package.json / + +# Customize runtime with additional packages. +# Install package globally so user packages can override. +# +RUN cd / && npm install --no-package-lock --production \ + && npm cache clean --force + +EXPOSE 8080 + +CMD node --expose-gc app.js diff --git a/core/nodejs24Action/build.gradle b/core/nodejs24Action/build.gradle new file mode 100644 index 00000000..71d79621 --- /dev/null +++ b/core/nodejs24Action/build.gradle @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'eclipse' +eclipse { + project { + natures 'org.eclipse.wst.jsdt.core.jsNature' + buildCommand 'org.eclipse.wst.jsdt.core.javascriptValidator' + } +} + +ext.dockerImageName = 'action-nodejs-v24' +apply from: '../../gradle/docker.gradle' + +distDocker.dependsOn 'copyPackageJson' +distDocker.dependsOn 'copyProxy' +distDocker.dependsOn 'copyRunner' +distDocker.dependsOn 'copyService' +distDocker.dependsOn 'copyPlatform' +distDocker.dependsOn 'copyOpenWhisk' +distDocker.dependsOn 'copyKnative' +distDocker.dependsOn 'copyBuildTemplate' +distDocker.finalizedBy('cleanup') + +task copyPackageJson(type: Copy) { + from '../nodejsActionBase/package.json' + into '.' +} + +task copyProxy(type: Copy) { + from '../nodejsActionBase/app.js' + into '.' +} + +task copyRunner(type: Copy) { + from '../nodejsActionBase/runner.js' + into '.' +} + +task copyService(type: Copy) { + from '../nodejsActionBase/src/service.js' + into './src' +} + +task copyPlatform(type: Copy) { + from '../nodejsActionBase/platform/platform.js' + into './platform' +} + +task copyOpenWhisk(type: Copy) { + from '../nodejsActionBase/platform/openwhisk.js' + into './platform' +} + +task copyKnative(type: Copy) { + from '../nodejsActionBase/platform/knative.js' + into './platform' +} + +task copyBuildTemplate(type: Copy) { + from '../nodejsActionBase/buildtemplate.yaml' + into '.' +} + +task cleanup(type: Delete) { + delete 'package.json' + delete 'app.js' + delete 'runner.js' + delete 'src' + delete 'platform' + delete 'buildtemplate.yaml' +} diff --git a/settings.gradle b/settings.gradle index 4d476cd8..9a54602b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,8 +20,12 @@ include 'tests' include 'core:nodejsActionBase' include 'core:nodejs18Action' include 'core:nodejs20Action' +include 'core:nodejs22Action' +include 'core:nodejs24Action' include 'tests:dat:docker:nodejs18docker' include 'tests:dat:docker:nodejs20docker' +include 'tests:dat:docker:nodejs22docker' +include 'tests:dat:docker:nodejs24docker' rootProject.name = 'runtime-nodejs' diff --git a/tests/dat/docker/nodejs22docker/Dockerfile b/tests/dat/docker/nodejs22docker/Dockerfile new file mode 100644 index 00000000..3ca04720 --- /dev/null +++ b/tests/dat/docker/nodejs22docker/Dockerfile @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +FROM action-nodejs-v22 +COPY package.json . +RUN npm install --production diff --git a/tests/dat/docker/nodejs22docker/build.gradle b/tests/dat/docker/nodejs22docker/build.gradle new file mode 100644 index 00000000..8022bb09 --- /dev/null +++ b/tests/dat/docker/nodejs22docker/build.gradle @@ -0,0 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +ext.dockerImageName = 'nodejs22docker' +apply from: '../../../../gradle/docker.gradle' diff --git a/tests/dat/docker/nodejs22docker/package.json b/tests/dat/docker/nodejs22docker/package.json new file mode 100644 index 00000000..6822c092 --- /dev/null +++ b/tests/dat/docker/nodejs22docker/package.json @@ -0,0 +1,8 @@ +{ + "name": "testdocker", + "version": "1.0.0", + "main": "index.js", + "dependencies": { + "openwhisk": "2.0.0" + } +} diff --git a/tests/dat/docker/nodejs24docker/Dockerfile b/tests/dat/docker/nodejs24docker/Dockerfile new file mode 100644 index 00000000..a142cf1a --- /dev/null +++ b/tests/dat/docker/nodejs24docker/Dockerfile @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +FROM action-nodejs-v24 +COPY package.json . +RUN npm install --production diff --git a/tests/dat/docker/nodejs24docker/build.gradle b/tests/dat/docker/nodejs24docker/build.gradle new file mode 100644 index 00000000..5bc24bbc --- /dev/null +++ b/tests/dat/docker/nodejs24docker/build.gradle @@ -0,0 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +ext.dockerImageName = 'nodejs24docker' +apply from: '../../../../gradle/docker.gradle' diff --git a/tests/dat/docker/nodejs24docker/package.json b/tests/dat/docker/nodejs24docker/package.json new file mode 100644 index 00000000..6822c092 --- /dev/null +++ b/tests/dat/docker/nodejs24docker/package.json @@ -0,0 +1,8 @@ +{ + "name": "testdocker", + "version": "1.0.0", + "main": "index.js", + "dependencies": { + "openwhisk": "2.0.0" + } +} diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs22ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs22ActionContainerTests.scala new file mode 100644 index 00000000..3e45f5f1 --- /dev/null +++ b/tests/src/test/scala/runtime/actionContainers/NodeJs22ActionContainerTests.scala @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package runtime.actionContainers + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +class NodeJs22ActionContainerTests extends NodeJsActionContainerTests { + override lazy val nodejsContainerImageName = "action-nodejs-v22" + override lazy val nodejsTestDockerImageName = "nodejs22docker" +} diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs22ConcurrentTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs22ConcurrentTests.scala new file mode 100644 index 00000000..264a19a3 --- /dev/null +++ b/tests/src/test/scala/runtime/actionContainers/NodeJs22ConcurrentTests.scala @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package runtime.actionContainers + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +class NodeJs22ConcurrentTests extends NodeJsConcurrentTests { + override lazy val nodejsContainerImageName = "action-nodejs-v22" + override lazy val nodejsTestDockerImageName = "nodejs22docker" +} diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs24ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs24ActionContainerTests.scala new file mode 100644 index 00000000..88d9038c --- /dev/null +++ b/tests/src/test/scala/runtime/actionContainers/NodeJs24ActionContainerTests.scala @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package runtime.actionContainers + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +class NodeJs24ActionContainerTests extends NodeJsActionContainerTests { + override lazy val nodejsContainerImageName = "action-nodejs-v24" + override lazy val nodejsTestDockerImageName = "nodejs24docker" +} diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs24ConcurrentTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs24ConcurrentTests.scala new file mode 100644 index 00000000..9970f2c7 --- /dev/null +++ b/tests/src/test/scala/runtime/actionContainers/NodeJs24ConcurrentTests.scala @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package runtime.actionContainers + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +class NodeJs24ConcurrentTests extends NodeJsConcurrentTests { + override lazy val nodejsContainerImageName = "action-nodejs-v24" + override lazy val nodejsTestDockerImageName = "nodejs24docker" +}