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" +}