Skip to content

Commit 176f91c

Browse files
authored
feat: adds support for Node.js 24 (#750)
* feat: adds support for Node.js 24 * build: remove armv7 for Node.js >=24 * build: fix syntax * fix: use current Node.js from Edge for 24 (because it's not LTS yet)
1 parent a2b84bf commit 176f91c

File tree

15 files changed

+255
-7
lines changed

15 files changed

+255
-7
lines changed

.github/workflows/buildx.yml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
ruby-version: [3.2, 3.3, 3.4, 3.5]
18-
node-version: [20, 22]
18+
node-version: [20, 22, 24]
1919
variant: [default, slim, alpine]
2020
include:
2121
- variant: default
@@ -83,6 +83,26 @@ jobs:
8383
echo "path=./${{ matrix.ruby-version }}/${{ matrix.node-version }}/${{ matrix.variant }}" >> $GITHUB_OUTPUT
8484
fi
8585
86+
- name: Set platforms
87+
id: platforms
88+
shell: bash
89+
run: |
90+
# For Node >=24, remove linux/arm/v7 from the variant's platform list
91+
BASE_PLATFORMS="${{ matrix.platforms }}"
92+
NODE_MAJOR="${{ matrix['node-version'] }}"
93+
if [ "$NODE_MAJOR" -ge 24 ]; then
94+
IFS=',' read -ra arr <<< "$BASE_PLATFORMS"
95+
out=()
96+
for p in "${arr[@]}"; do
97+
if [ "$p" != "linux/arm/v7" ] && [ -n "$p" ]; then
98+
out+=("$p")
99+
fi
100+
done
101+
(IFS=','; echo "platforms=${out[*]}") >> "$GITHUB_OUTPUT"
102+
else
103+
echo "platforms=$BASE_PLATFORMS" >> "$GITHUB_OUTPUT"
104+
fi
105+
86106
- name: Docker Buildx (build)
87107
uses: docker/[email protected]
88108
if: success() && !contains(github.ref, 'master')
@@ -91,7 +111,7 @@ jobs:
91111
context: ${{ steps.buildpath.outputs.path }}
92112
file: ${{ steps.buildpath.outputs.path }}/Dockerfile
93113
build-args: REFRESHED_AT=$(date +%Y-%m-%d)
94-
platforms: ${{ matrix.platforms }}
114+
platforms: ${{ steps.platforms.outputs.platforms }}
95115
tags: ${{ steps.prepare.outputs.tags }}
96116

97117
- name: Docker Login
@@ -109,7 +129,7 @@ jobs:
109129
context: ${{ steps.buildpath.outputs.path }}
110130
file: ${{ steps.buildpath.outputs.path }}/Dockerfile
111131
build-args: REFRESHED_AT=$(date +%Y-%m-%d)
112-
platforms: ${{ matrix.platforms }}
132+
platforms: ${{ steps.platforms.outputs.platforms }}
113133
tags: ${{ steps.prepare.outputs.tags }}
114134

115135
- name: Inspect Image

.github/workflows/dockerimage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
ruby-version: [3.2, 3.3, 3.4, 3.5]
17-
node-version: [20, 22]
17+
node-version: [20, 22, 24]
1818
variant: [default, slim, alpine]
1919

2020
steps:

3.2/24/Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM ruby:3.2
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=24
7+
8+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
9+
10+
RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \
11+
&& mkdir -p /etc/apt/keyrings \
12+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
13+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
14+
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
15+
nodejs \
16+
&& apt-get upgrade -qq \
17+
&& apt-get clean \
18+
&& rm -rf /var/lib/apt/lists/*\
19+
&& npm install -g yarn@1

3.2/24/alpine/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ruby:3.2-alpine
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
7+
RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \
8+
&& echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \
9+
apk -U upgrade \
10+
&& apk add --no-cache \
11+
nodejs-current@edge \
12+
npm \
13+
yarn

3.2/24/slim/Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
FROM ruby:3.2-slim
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=24
7+
8+
# hadolint ignore=DL3009
9+
RUN apt-get update -qq && apt-get install -qq --no-install-recommends \
10+
curl \
11+
gnupg2 \
12+
libatomic1
13+
14+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
15+
16+
RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \
17+
&& mkdir -p /etc/apt/keyrings \
18+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
19+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
20+
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
21+
nodejs \
22+
&& apt-get upgrade -qq \
23+
&& apt-get clean \
24+
&& rm -rf /var/lib/apt/lists/*\
25+
&& npm install -g yarn@1

3.3/24/Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM ruby:3.3
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=24
7+
8+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
9+
10+
RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \
11+
&& mkdir -p /etc/apt/keyrings \
12+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
13+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
14+
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
15+
nodejs \
16+
&& apt-get upgrade -qq \
17+
&& apt-get clean \
18+
&& rm -rf /var/lib/apt/lists/*\
19+
&& npm install -g yarn@1

3.3/24/alpine/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ruby:3.3-alpine
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
7+
RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \
8+
&& echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \
9+
apk -U upgrade \
10+
&& apk add --no-cache \
11+
nodejs-current@edge \
12+
npm \
13+
yarn

3.3/24/slim/Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
FROM ruby:3.3-slim
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=24
7+
8+
# hadolint ignore=DL3009
9+
RUN apt-get update -qq && apt-get install -qq --no-install-recommends \
10+
curl \
11+
gnupg2 \
12+
libatomic1
13+
14+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
15+
16+
RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \
17+
&& mkdir -p /etc/apt/keyrings \
18+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
19+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
20+
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
21+
nodejs \
22+
&& apt-get upgrade -qq \
23+
&& apt-get clean \
24+
&& rm -rf /var/lib/apt/lists/*\
25+
&& npm install -g yarn@1

3.4/24/Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM ruby:3.4
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=24
7+
8+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
9+
10+
RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \
11+
&& mkdir -p /etc/apt/keyrings \
12+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
13+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
14+
&& apt-get update -qq && apt-get install -qq --no-install-recommends \
15+
nodejs \
16+
&& apt-get upgrade -qq \
17+
&& apt-get clean \
18+
&& rm -rf /var/lib/apt/lists/*\
19+
&& npm install -g yarn@1

3.4/24/alpine/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ruby:3.4-alpine
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
7+
RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \
8+
&& echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \
9+
apk -U upgrade \
10+
&& apk add --no-cache \
11+
nodejs-current@edge \
12+
npm \
13+
yarn

0 commit comments

Comments
 (0)