Skip to content

Commit 3c584e8

Browse files
authored
Update prep for 4.0.0 beta (#407)
* Prep for 4.0.0 beta Update NodeJS versions * Update action versions * Bump package.json version * Ensure default node version is correct * Update build actions * Remove NodeJS 22 for now * Remove last s390 reference
1 parent e18550a commit 3c584e8

File tree

12 files changed

+116
-133
lines changed

12 files changed

+116
-133
lines changed

.docker/Dockerfile.alpine

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG NODE_VERSION=16
1+
ARG NODE_VERSION=20
22
ARG OS=alpine
33

44
#### Stage BASE ########################################################################################################

.docker/Dockerfile.debian

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG NODE_VERSION=16
1+
ARG NODE_VERSION=20
22
ARG OS=buster-slim
33

44
#### Stage BASE ########################################################################################################

.docker/healthcheck.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

.docker/healthcheck.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../docker-custom/healthcheck.js

.github/workflows/main.yml

Lines changed: 12 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ jobs:
2020
alpine:
2121
env:
2222
# Setting the defaults up front
23-
LATEST_NODE: 16
23+
LATEST_NODE: 20
2424
DEFAULT_IMAGE: nodered/node-red
2525
DEV_IMAGE: nodered/node-red-dev
2626
runs-on: ubuntu-latest
2727

2828
strategy:
2929
matrix:
30-
node: [14, 16, 18]
30+
node: [18, 20]
3131
suffix: ["", "-minimal"]
3232

3333
# Steps represent a sequence of tasks that will be executed as part of the job
@@ -40,7 +40,7 @@ jobs:
4040
-
4141
name: Docker Metadata
4242
id: meta
43-
uses: docker/metadata-action@v3
43+
uses: docker/metadata-action@v5
4444
with:
4545
flavor: |
4646
latest=false
@@ -53,10 +53,10 @@ jobs:
5353
5454
-
5555
name: Setup QEMU
56-
uses: docker/setup-qemu-action@v1
56+
uses: docker/setup-qemu-action@v3
5757
-
5858
name: Setup Docker buildx
59-
uses: docker/setup-buildx-action@v1
59+
uses: docker/setup-buildx-action@v3
6060
- name: Get Date
6161
id: date
6262
run: echo "::set-output name=date::$(date +'%Y-%m-%dT%H:%M:%SZ')"
@@ -132,14 +132,14 @@ jobs:
132132
# echo "::set-output name=buildVersion::$VERSION"
133133
-
134134
name: Login to DockerHub
135-
uses: docker/login-action@v1
135+
uses: docker/login-action@v3
136136
with:
137137
username: ${{ secrets.DOCKERHUB_USERNAME }}
138138
password: ${{ secrets.DOCKERHUB_TOKEN }}
139139
-
140140
name: Build and push
141141
id: build-push
142-
uses: docker/build-push-action@v2
142+
uses: docker/build-push-action@v5
143143
continue-on-error: true
144144
with:
145145
context: .
@@ -159,7 +159,7 @@ jobs:
159159
debian:
160160
env:
161161
# Setting the defaults up front
162-
LATEST_NODE: 16
162+
LATEST_NODE: 20
163163
DEFAULT_IMAGE: nodered/node-red
164164
DEV_IMAGE: nodered/node-red-dev
165165
runs-on: ubuntu-latest
@@ -168,9 +168,9 @@ jobs:
168168
- name: Checkout
169169
uses: actions/checkout@v3
170170
- name: Setup QEMU
171-
uses: docker/setup-qemu-action@v1
171+
uses: docker/setup-qemu-action@v3
172172
- name: Setup Docker buildx
173-
uses: docker/setup-buildx-action@v1
173+
uses: docker/setup-buildx-action@v3
174174
- name: Login to DockerHub
175175
uses: docker/login-action@v1
176176
with:
@@ -181,7 +181,7 @@ jobs:
181181
run: echo "::set-output name=date::$(date +'%Y-%m-%dT%H:%M:%SZ')"
182182
- name: Docker Metadata
183183
id: meta
184-
uses: docker/metadata-action@v4
184+
uses: docker/metadata-action@v5
185185
with:
186186
flavor: |
187187
latest=false
@@ -237,7 +237,7 @@ jobs:
237237
238238
- name: Build and push
239239
id: build-push
240-
uses: docker/build-push-action@v2
240+
uses: docker/build-push-action@v5
241241
with:
242242
context: .
243243
platforms: linux/amd64, linux/arm64, linux/arm/v7
@@ -252,26 +252,4 @@ jobs:
252252
BUILD_VERSION=${{ steps.nrVersion.outputs.buildVersion }}
253253
tags: ${{ steps.nrVersion.outputs.tags }}
254254

255-
# -
256-
# name: Sign Image
257-
# run: |
258-
# echo "Digest ${{ steps.build-push.outputs.digest }}"
259-
# for TAG in $(echo "${{ steps.nrVersion.outputs.tags }}" | sed "s/,/ /g"); do
260-
# if [[ "$TAG" == "${{ env.DEFAULT_IMAGE }}:latest" ]]; then
261-
# export DOCKER_CONTENT_TRUST=1
262-
# SIGNER_KEY_NAME="8b08f4d8315a5d6443a4f59eaab60a49dacbc105c13d25f167cdb5cc9fa8f9ed.key"
263-
# PATH_KEYS=$HOME/.docker/trust/private
264-
# mkdir -p $PATH_KEYS
265-
# cp .docker/$SIGNER_KEY_NAME $PATH_KEYS
266-
# chmod 600 $PATH_KEYS/$SIGNER_KEY_NAME
267-
# export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE=${{ secrets.DOCKER_SIGNING_PASSWORD }}
268-
# docker trust key load $PATH_KEYS/$SIGNER_KEY_NAME
269-
# # docker trust sign $TAG
270-
# # docker trust inspect --pretty $TAG
271-
# echo "Siging tag $TAG"
272-
# else
273-
# echo "Not signing $TAG"
274-
# fi
275-
# done
276-
277255

README.md

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ Let's dissect that command:
2626
-p 1880:1880 - connect local port 1880 to the exposed internal port 1880
2727
-v node_red_data:/data - mount the host node_red_data directory to the container /data directory so any changes made to flows are persisted
2828
--name mynodered - give this machine a friendly local name
29-
nodered/node-red - the image to base it on - currently Node-RED v3.1.3
29+
nodered/node-red - the image to base it on - currently Node-RED v4.0.0
3030

3131

3232
Running that command should give a terminal window with a running instance of Node-RED.
3333

3434
Welcome to Node-RED
3535
===================
3636

37-
10 Oct 12:57:10 - [info] Node-RED version: v3.1.3
38-
10 Oct 12:57:10 - [info] Node.js version: v16.14.1
39-
10 Oct 12:57:10 - [info] Linux 4.19.76-linuxkit x64 LE
37+
10 Oct 12:57:10 - [info] Node-RED version: v4.0.0
38+
10 Oct 12:57:10 - [info] Node.js version: v18.19.0
39+
10 Oct 12:57:10 - [info] Linux 6.6.13-100.fc38.x86_64 x64 LE
4040
10 Oct 12:57:11 - [info] Loading palette nodes
4141
10 Oct 12:57:16 - [info] Settings file : /data/settings.js
4242
10 Oct 12:57:16 - [info] Context store : 'default' [module=memory]
@@ -60,7 +60,7 @@ Running that command should give a terminal window with a running instance of No
6060

6161
10 Oct 12:57:17 - [info] Starting flows
6262
10 Oct 12:57:17 - [info] Started flows
63-
10 Oct 12:57:17 - [info] Server now running at http://127.0.0.1:1880/
63+
10 Oct 12:57:17 - [info] Server now running at http://localhost:1880/
6464

6565
[...]
6666

@@ -114,51 +114,51 @@ The following table shows the variety of provided Node-RED images.
114114

115115
| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
116116
|----------------------------|--------|----------|------------|-------|----------------------------|
117-
| 3.1.3-14 | 14 | amd64 | 2.x 3.x | yes | amd64/node:14-alpine |
118-
| | 14 | arm32v6 | 2.x 3.x | yes | arm32v6/node:14-alpine |
119-
| | 14 | arm32v7 | 2.x 3.x | yes | arm32v7/node:14-alpine |
120-
| | 14 | arm64v8 | 2.x 3.x | yes | arm64v8/node:14-alpine |
121-
| | 14 | s390x | 2.x 3.x | yes | s390x/node:14-alpine |
122-
| | 14 | i386 | 2.x 3.x | yes | i386/node:14-alpine |
117+
| 4.0.0-18 | 18 | amd64 | 3.x | yes | amd64/node:18-alpine |
118+
| | 18 | arm32v6 | 3.x | yes | arm32v6/node:18-alpine |
119+
| | 18 | arm32v7 | 3.x | yes | arm32v7/node:18-alpine |
120+
| | 18 | arm64v8 | 3.x | yes | arm64v8/node:18-alpine |
121+
| | 18 | i386 | 3.x | yes | i386/node:18-alpine |
123122
| | | | | | |
124-
| 3.1.3-14-minimal | 14 | amd64 | no | no | amd64/node:14-alpine |
125-
| | 14 | arm32v6 | no | no | arm32v6/node:14-alpine |
126-
| | 14 | arm32v7 | no | no | arm32v7/node:14-alpine |
127-
| | 14 | arm64v8 | no | no | arm64v8/node:14-alpine |
128-
| | 14 | s390x | no | no | s390x/node:14-alpine |
129-
| | 14 | i386 | no | no | i386/node:14-alpine |
123+
| 4.0.0-18-minimal | 18 | amd64 | no | no | amd64/node:18-alpine |
124+
| | 18 | arm32v6 | no | no | arm32v6/node:18-alpine |
125+
| | 18 | arm32v7 | no | no | arm32v7/node:18-alpine |
126+
| | 18 | arm64v8 | no | no | arm64v8/node:18-alpine |
127+
| | 18 | i386 | no | no | i386/node:18-alpine |
130128

131129
| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
132130
|----------------------------|--------|----------|------------|-------|----------------------------|
133-
| 3.1.3-16 | 16 | amd64 | 2.x 3.x | yes | amd64/node:16-alpine |
134-
| | 16 | arm32v6 | 2.x 3.x | yes | arm32v6/node:16-alpine |
135-
| | 16 | arm32v7 | 2.x 3.x | yes | arm32v7/node:16-alpine |
136-
| | 16 | arm64v8 | 2.x 3.x | yes | arm64v8/node:16-alpine |
137-
| | 16 | s390x | 2.x 3.x | yes | s390x/node:16-alpine |
138-
| | 16 | i386 | 2.x 3.x | yes | i386/node:16-alpine |
131+
| 4.0.0-20 | 20 | amd64 | 3.x | yes | amd64/node:20-alpine |
132+
| | 20 | arm32v6 | 3.x | yes | arm32v6/node:20-alpine |
133+
| | 20 | arm32v7 | 3.x | yes | arm32v7/node:20-alpine |
134+
| | 20 | arm64v8 | 3.x | yes | arm64v8/node:20-alpine |
135+
| | 20 | i386 | 3.x | yes | i386/node:20-alpine |
139136
| | | | | | |
140-
| 3.1.3-16-minimal | 16 | amd64 | no | no | amd64/node:16-alpine |
141-
| | 16 | arm32v6 | no | no | arm32v6/node:16-alpine |
142-
| | 16 | arm32v7 | no | no | arm32v7/node:16-alpine |
143-
| | 16 | arm64v8 | no | no | arm64v8/node:16-alpine |
144-
| | 16 | s390x | no | no | s390x/node:16-alpine |
145-
| | 16 | i386 | no | no | i386/node:16-alpine |
137+
| 4.0.0-20-minimal | 20 | amd64 | no | no | amd64/node:20-alpine |
138+
| | 20 | arm32v6 | no | no | arm32v6/node:20-alpine |
139+
| | 20 | arm32v7 | no | no | arm32v7/node:20-alpine |
140+
| | 20 | arm64v8 | no | no | arm64v8/node:20-alpine |
141+
| | 20 | i386 | no | no | i386/node:20-alpine |
142+
| | | | | | |
143+
| 4.0.0-debian | 20 | amd64 | 3.x | yes | amd64/node:20-buster-slim |
144+
| | 20 | arm32v7 | 3.x | yes | amd64/node:20-buster-slim |
145+
| | 20 | arm64v8 | 3.x | yes | amd64/node:20-buster-slim |
146+
147+
Coming when NodeJS v22 is released
146148

147149
| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
148150
|----------------------------|--------|----------|------------|-------|----------------------------|
149-
| 3.1.3-18 | 18 | amd64 | 2.x 3.x | yes | amd64/node:18-alpine |
150-
| | 18 | arm32v6 | 2.x 3.x | yes | arm32v6/node:18-alpine |
151-
| | 18 | arm32v7 | 2.x 3.x | yes | arm32v7/node:18-alpine |
152-
| | 18 | arm64v8 | 2.x 3.x | yes | arm64v8/node:18-alpine |
153-
| | 18 | s390x | 2.x 3.x | yes | s390x/node:18-alpine |
154-
| | 18 | i386 | 2.x 3.x | yes | i386/node:18-alpine |
151+
| 4.0.0-22 | 22 | amd64 | 3.x | yes | amd64/node:22-alpine |
152+
| | 22 | arm32v6 | 3.x | yes | arm32v6/node:22-alpine |
153+
| | 22 | arm32v7 | 3.x | yes | arm32v7/node:22-alpine |
154+
| | 22 | arm64v8 | 3.x | yes | arm64v8/node:22-alpine |
155+
| | 22 | i386 | 3.x | yes | i386/node:22-alpine |
155156
| | | | | | |
156-
| 3.1.3-18-minimal | 18 | amd64 | no | no | amd64/node:18-alpine |
157-
| | 18 | arm32v6 | no | no | arm32v6/node:18-alpine |
158-
| | 18 | arm32v7 | no | no | arm32v7/node:18-alpine |
159-
| | 18 | arm64v8 | no | no | arm64v8/node:18-alpine |
160-
| | 18 | s390x | no | no | s390x/node:18-alpine |
161-
| | 18 | i386 | no | no | i386/node:18-alpine |
157+
| 4.0.0-22-minimal | 22 | amd64 | no | no | amd64/node:22-alpine |
158+
| | 22 | arm32v6 | no | no | arm32v6/node:22-alpine |
159+
| | 22 | arm32v7 | no | no | arm32v7/node:22-alpine |
160+
| | 22 | arm64v8 | no | no | arm64v8/node:22-alpine |
161+
| | 22 | i386 | no | no | i386/node:22-alpine |
162162

163163
- All images have bash, tzdata, nano, curl, git, openssl and openssh-client pre-installed to support Node-RED's Projects feature.
164164

@@ -167,40 +167,42 @@ The following table shows the provided Manifest Lists.
167167

168168
| **Tag** | **Node-RED Base Image** |
169169
|----------------------------------------|--------------------------------------------|
170-
| latest, 3.1.3, | nodered/node-red:3.1.3-16 |
171-
| latest-16, 3.1.3-16 | |
170+
| latest, 4.0.0, | nodered/node-red:4.0.0-20 |
171+
| latest-20, 4.0.0-20 | |
172172
| | |
173173
| | |
174-
| latest-minimal, 3.1.3-minimal, | nodered/node-red:3.1.3-16-minimal |
175-
| latest-16-minimal, 3.1.3-16-minimal | |
174+
| latest-minimal, 4.0.0-minimal, | nodered/node-red:4.0.0-20-minimal |
175+
| latest-20-minimal, 4.0.0-20-minimal | |
176+
| | |
177+
| latest-debian | nodered/node-red:latest-debian |
176178

177179

178180
| **Tag** | **Node-RED Base Image** |
179181
|----------------------------------------|--------------------------------------------|
180-
| latest-14, 3.1.3-14 | nodered/node-red:3.1.3-14 |
182+
| latest-18, 4.0.0-18 | nodered/node-red:4.0.0-18 |
181183
| | |
182-
| latest-14-minimal, 3.1.3-14-minimal | nodered/node-red:3.1.3-14-minimal |
184+
| latest-18-minimal, 4.0.0-18-minimal | nodered/node-red:4.0.0-18-minimal |
185+
186+
Coming when NodeJS v22 released
183187

184188
| **Tag** | **Node-RED Base Image** |
185189
|----------------------------------------|--------------------------------------------|
186-
| latest-18, 3.1.3-18 | nodered/node-red:3.1.3-18 |
190+
| latest-18, 4.0.0-22 | nodered/node-red:4.0.0-22 |
187191
| | |
188-
| latest-18-minimal, 3.1.3-18-minimal | nodered/node-red:3.1.3-18-minimal
192+
| latest-22-minimal, 4.0.0-22-minimal | nodered/node-red:4.0.0-22-minimal
189193

190194

191195
With the support of Docker manifest list, there is no need to explicitly add the tag for the architecture to use.
192196
When a docker run command or docker service command or docker stack command is executed, docker checks which architecture is required and verifies if it is available in the docker repository. If it does, docker pulls the matching image for it.
193197

194198
Therefore all tags regarding Raspberry PI's are dropped.
195199

196-
For example: suppose you are running on a Raspberry PI 3B, which has `arm32v7` as architecture. Then just run the following command to pull the image (tagged by `3.1.3-16`), and run the container.
200+
For example: suppose you are running on a Raspberry PI 3B, which has `arm32v7` as architecture. Then just run the following command to pull the image (tagged by `4.0.0-20`), and run the container.
197201

198202
```
199203
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red:latest
200204
```
201205

202-
The same command can be used for running on an amd64 system, since docker discovers its running on a amd64 host and pulls the image with the matching tag (`3.1.3-16-amd64`).
203-
204206
This gives the advantage that you don't need to know/specify which architecture you are running on and makes docker run commands and docker compose files more flexible and exchangeable across systems.
205207

206208

@@ -334,7 +336,7 @@ Docker build process, the dependencies are installed under `/usr/src/node-red`.
334336
The main sections to modify are
335337

336338
"dependencies": {
337-
"node-red": "^3.1.3", <-- set the version of Node-RED here
339+
"node-red": "^4.0.0", <-- set the version of Node-RED here
338340
"node-red-dashboard": "*" <-- add any extra npm packages here
339341
},
340342

0 commit comments

Comments
 (0)