Skip to content

Commit 5834539

Browse files
authored
feat: adds initial support for Node.js 22, refactor CI pipeline
1 parent ffc710d commit 5834539

File tree

17 files changed

+357
-81
lines changed

17 files changed

+357
-81
lines changed

.github/workflows/dockerimage.yml

Lines changed: 29 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -10,95 +10,43 @@ on:
1010
jobs:
1111
build:
1212
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
java-version: [8, 11, 17, 21]
16+
java-type: [jdk, jre]
17+
node-version: [18, 20, 22]
18+
variant: [default, alpine]
1319
steps:
1420
- uses: actions/[email protected]
1521

16-
- name: Build the Docker image
22+
- name: Build and test Docker image
1723
run: |
18-
printf "\n\nJDK8 with Node.js 18\n"
19-
docker run -i $(docker build -q 8/jdk/18) /bin/sh -c "java -version && node --version"
20-
printf "\n\nJDK8 alpine with Node.js 18\n"
21-
docker run -i $(docker build -q 8/jdk/18/alpine) /bin/sh -c "java -version && node --version"
22-
23-
printf "\n\nJDK8 with Node.js 20\n"
24-
docker run -i $(docker build -q 8/jdk/20) /bin/sh -c "java -version && node --version"
25-
printf "\n\nJDK8 alpine with Node.js 20\n"
26-
docker run -i $(docker build -q 8/jdk/20/alpine) /bin/sh -c "java -version && node --version"
27-
28-
printf "\n\nJRE8 with Node.js 18\n"
29-
docker run -i $(docker build -q 8/jre/18) /bin/sh -c "java -version && node --version"
30-
printf "\n\nJRE8 alpine with Node.js 18\n"
31-
docker run -i $(docker build -q 8/jre/18/alpine) /bin/sh -c "java -version && node --version"
32-
33-
printf "\n\nJRE8 with Node.js 20\n"
34-
docker run -i $(docker build -q 8/jre/20) /bin/sh -c "java -version && node --version"
35-
printf "\n\nJRE8 alpine with Node.js 20\n"
36-
docker run -i $(docker build -q 8/jre/20/alpine) /bin/sh -c "java -version && node --version"
37-
38-
printf "\n\nJDK11 with Node.js 18\n"
39-
docker run -i $(docker build -q 11/jdk/18) /bin/sh -c "java -version && node --version"
40-
printf "\n\nJDK11 alpine with Node.js 18\n"
41-
docker run -i $(docker build -q 11/jdk/18/alpine) /bin/sh -c "java -version && node --version"
42-
43-
printf "\n\nJDK11 with Node.js 20\n"
44-
docker run -i $(docker build -q 11/jdk/20) /bin/sh -c "java -version && node --version"
45-
printf "\n\nJDK11 alpine with Node.js 20\n"
46-
docker run -i $(docker build -q 11/jdk/20/alpine) /bin/sh -c "java -version && node --version"
47-
48-
printf "\n\nJRE11 with Node.js 18\n"
49-
docker run -i $(docker build -q 11/jre/18) /bin/sh -c "java -version && node --version"
50-
printf "\n\nJRE11 alpine with Node.js 18\n"
51-
docker run -i $(docker build -q 11/jre/18/alpine) /bin/sh -c "java -version && node --version"
52-
53-
printf "\n\nJRE11 with Node.js 20\n"
54-
docker run -i $(docker build -q 11/jre/20) /bin/sh -c "java -version && node --version"
55-
printf "\n\nJRE11 alpine with Node.js 20\n"
56-
docker run -i $(docker build -q 11/jre/20/alpine) /bin/sh -c "java -version && node --version"
57-
58-
printf "\n\nJDK17 with Node.js 18\n"
59-
docker run -i $(docker build -q 17/jdk/18) /bin/sh -c "java -version && node --version"
60-
printf "\n\nJDK17 alpine with Node.js 18\n"
61-
docker run -i $(docker build -q 17/jdk/18/alpine) /bin/sh -c "java -version && node --version"
62-
63-
printf "\n\nJDK17 with Node.js 20\n"
64-
docker run -i $(docker build -q 17/jdk/20) /bin/sh -c "java -version && node --version"
65-
printf "\n\nJDK17 alpine with Node.js 20\n"
66-
docker run -i $(docker build -q 17/jdk/20/alpine) /bin/sh -c "java -version && node --version"
67-
68-
printf "\n\nJRE17 with Node.js 18\n"
69-
docker run -i $(docker build -q 17/jre/18) /bin/sh -c "java -version && node --version"
70-
printf "\n\nJRE17 alpine with Node.js 18\n"
71-
docker run -i $(docker build -q 17/jre/18/alpine) /bin/sh -c "java -version && node --version"
72-
73-
printf "\n\nJRE17 with Node.js 20\n"
74-
docker run -i $(docker build -q 17/jre/20) /bin/sh -c "java -version && node --version"
75-
printf "\n\nJRE17 alpine with Node.js 20\n"
76-
docker run -i $(docker build -q 17/jre/20/alpine) /bin/sh -c "java -version && node --version"
77-
78-
printf "\n\nJDK21 with Node.js 18\n"
79-
docker run -i $(docker build -q 21/jdk/18) /bin/sh -c "java -version && node --version"
80-
printf "\n\nJDK21 alpine with Node.js 18\n"
81-
docker run -i $(docker build -q 21/jdk/18/alpine) /bin/sh -c "java -version && node --version"
82-
83-
printf "\n\nJDK21 with Node.js 20\n"
84-
docker run -i $(docker build -q 21/jdk/20) /bin/sh -c "java -version && node --version"
85-
printf "\n\nJDK21 alpine with Node.js 20\n"
86-
docker run -i $(docker build -q 21/jdk/20/alpine) /bin/sh -c "java -version && node --version"
87-
88-
printf "\n\nJRE21 with Node.js 18\n"
89-
docker run -i $(docker build -q 21/jre/18) /bin/sh -c "java -version && node --version"
90-
printf "\n\nJRE21 alpine with Node.js 18\n"
91-
docker run -i $(docker build -q 21/jre/18/alpine) /bin/sh -c "java -version && node --version"
92-
93-
printf "\n\nJRE21 with Node.js 20\n"
94-
docker run -i $(docker build -q 21/jre/20) /bin/sh -c "java -version && node --version"
95-
printf "\n\nJRE21 alpine with Node.js 20\n"
96-
docker run -i $(docker build -q 21/jre/20/alpine) /bin/sh -c "java -version && node --version"
24+
VARIANT_PATH="${{ matrix.variant == 'alpine' && '/alpine' || '' }}"
25+
IMAGE_PATH="${{ matrix.java-version }}/${{ matrix.java-type }}/${{ matrix.node-version }}${VARIANT_PATH}"
26+
27+
VARIANT_LABEL="${{ matrix.variant == 'alpine' && ' alpine' || '' }}"
28+
printf "\n\n${{ matrix.java-type | upper }}${{ matrix.java-version }} with Node.js ${{ matrix.node-version }}${VARIANT_LABEL}\n"
29+
30+
# Run container and capture version outputs
31+
VERSIONS=$(docker run -i $(docker build -q ${IMAGE_PATH}) /bin/sh -c "java -version 2>&1 && node --version")
32+
33+
# Check Java version
34+
if ! echo "$VERSIONS" | grep -q "version \"${{ matrix.java-version }}"; then
35+
echo "::error::Expected Java ${{ matrix.java-version }} but got different version"
36+
exit 1
37+
fi
38+
39+
# Check Node version
40+
if ! echo "$VERSIONS" | grep -q "v${{ matrix.node-version }}"; then
41+
echo "::error::Expected Node.js ${{ matrix.node-version }} but got different version"
42+
exit 1
43+
fi
44+
45+
echo "$VERSIONS"
9746
9847
auto-merge:
9948
runs-on: ubuntu-latest
10049
needs: build
101-
10250
permissions:
10351
pull-requests: write
10452
contents: write

11/jdk/22/Dockerfile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM eclipse-temurin:11-jdk
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=22
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+
&& apt-get update -qq \
13+
&& apt-get install -qq --no-install-recommends \
14+
gpg \
15+
gpg-agent \
16+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
17+
&& 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 \
18+
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
19+
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
20+
&& apt-get update -qq \
21+
&& apt-get install -qq --no-install-recommends \
22+
nodejs \
23+
yarn \
24+
git \
25+
&& apt-get upgrade -qq \
26+
&& rm -rf /var/lib/apt/lists/*

11/jdk/22/alpine/Dockerfile

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

11/jre/22/Dockerfile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM eclipse-temurin:11-jre
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=22
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+
&& apt-get update -qq \
13+
&& apt-get install -qq --no-install-recommends \
14+
gpg \
15+
gpg-agent \
16+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
17+
&& 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 \
18+
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
19+
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
20+
&& apt-get update -qq \
21+
&& apt-get install -qq --no-install-recommends \
22+
nodejs \
23+
yarn \
24+
git \
25+
&& apt-get upgrade -qq \
26+
&& rm -rf /var/lib/apt/lists/*

11/jre/22/alpine/Dockerfile

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

17/jdk/22/Dockerfile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM eclipse-temurin:17-jdk
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=22
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+
&& apt-get update -qq \
13+
&& apt-get install -qq --no-install-recommends \
14+
gpg \
15+
gpg-agent \
16+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
17+
&& 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 \
18+
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
19+
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
20+
&& apt-get update -qq \
21+
&& apt-get install -qq --no-install-recommends \
22+
nodejs \
23+
yarn \
24+
git \
25+
&& apt-get upgrade -qq \
26+
&& rm -rf /var/lib/apt/lists/*

17/jdk/22/alpine/Dockerfile

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

17/jre/22/Dockerfile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM eclipse-temurin:17-jre
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=22
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+
&& apt-get update -qq \
13+
&& apt-get install -qq --no-install-recommends \
14+
gpg \
15+
gpg-agent \
16+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
17+
&& 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 \
18+
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
19+
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
20+
&& apt-get update -qq \
21+
&& apt-get install -qq --no-install-recommends \
22+
nodejs \
23+
yarn \
24+
git \
25+
&& apt-get upgrade -qq \
26+
&& rm -rf /var/lib/apt/lists/*

17/jre/22/alpine/Dockerfile

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

21/jdk/22/Dockerfile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM eclipse-temurin:21-jdk
2+
LABEL maintainer "Tim Brust <[email protected]>"
3+
4+
ARG REFRESHED_AT
5+
ENV REFRESHED_AT $REFRESHED_AT
6+
ARG NODE_MAJOR=22
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+
&& apt-get update -qq \
13+
&& apt-get install -qq --no-install-recommends \
14+
gpg \
15+
gpg-agent \
16+
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
17+
&& 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 \
18+
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
19+
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
20+
&& apt-get update -qq \
21+
&& apt-get install -qq --no-install-recommends \
22+
nodejs \
23+
yarn \
24+
git \
25+
&& apt-get upgrade -qq \
26+
&& rm -rf /var/lib/apt/lists/*

0 commit comments

Comments
 (0)