@@ -14,156 +14,54 @@ jobs:
1414 strategy :
1515 fail-fast : false
1616 matrix :
17- docker-file :
18- - path : 8/jdk/18
19- tags : " 8-jdk-18 8-jdk-hydrogen"
17+ java-version : [8, 11, 17, 21]
18+ java-type : [jdk, jre]
19+ node-version : [18, 20, 22]
20+ variant : [default, alpine]
21+ include :
22+ - variant : default
2023 platforms : linux/amd64,linux/arm64,linux/ppc64le
21-
22- - path : 8/jdk/18/alpine
23- tags : " 8-alpine-jdk-18 8-alpine-jdk-hydrogen"
24- platforms : linux/amd64
25-
26- - path : 8/jdk/20
27- tags : " 8-jdk-20 8-jdk-iron"
28- platforms : linux/amd64,linux/arm64,linux/ppc64le
29-
30- - path : 8/jdk/20/alpine
31- tags : " 8-alpine-jdk-20 8-alpine-jdk-iron"
32- platforms : linux/amd64
33-
34- - path : 8/jre/18
35- tags : " 8-jre-18 8-jre-hydrogen 8-18 8-hydrogen"
36- platforms : linux/amd64,linux/arm64,linux/ppc64le
37-
38- - path : 8/jre/18/alpine
39- tags : " 8-alpine-18 8-alpine-hydrogen 8-alpine-jre-18 8-alpine-jre-hydrogen"
24+ - variant : alpine
4025 platforms : linux/amd64
41-
42- - path : 8/jre/20
43- tags : " 8-jre-20 8-jre-iron 8-20 8-iron"
44- platforms : linux/amd64,linux/arm64,linux/ppc64le
45-
46- - path : 8/jre/20/alpine
47- tags : " 8-alpine-20 8-alpine-iron 8-alpine-jre-20 8-alpine-jre-iron"
48- platforms : linux/amd64
49-
50- - path : 11/jdk/18
51- tags : " 11-jdk-18 11-jdk-hydrogen"
26+ - java-version : 11
27+ variant : default
5228 platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
5329
54- - path : 11/jdk/18/alpine
55- tags : " 11-alpine-jdk-18 11-alpine-jdk-hydrogen"
56- platforms : linux/amd64
57-
58- - path : 11/jdk/20
59- tags : " 11-jdk-20 11-jdk-iron"
60- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
61-
62- - path : 11/jdk/20/alpine
63- tags : " 11-alpine-jdk-20 11-alpine-jdk-iron"
64- platforms : linux/amd64
65-
66- - path : 11/jre/18
67- tags : " 11-18 11-hydrogen 11-jre-18 11-jre-hydrogen"
68- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
69-
70- - path : 11/jre/18/alpine
71- tags : " 11-alpine-18 11-alpine-hydrogen 11-alpine-jre-18 11-alpine-jre-hydrogen"
72- platforms : linux/amd64
73-
74- - path : 11/jre/20
75- tags : " 11-20 11-iron 11-jre-20 11-jre-iron"
76- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
77-
78- - path : 11/jre/20/alpine
79- tags : " 11-alpine-20 11-alpine-iron 11-alpine-jre-20 11-alpine-jre-iron"
80- platforms : linux/amd64
81-
82- - path : 17/jdk/18
83- tags : " 17-jdk-18 17-jdk-hydrogen jdk-18 jdk-18-hydrogen"
84- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
85-
86- - path : 17/jdk/18/alpine
87- tags : " alpine-jdk-18 alpine-jdk-hydrogen 17-alpine-jdk-18 17-alpine-jdk-hydrogen"
88- platforms : linux/amd64
89-
90- - path : 17/jdk/20
91- tags : " 17-jdk-20 17-jdk-iron jdk-20 jdk-20-iron"
92- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
93-
94- - path : 17/jdk/20/alpine
95- tags : " 17-alpine-jdk-20 17-alpine-jdk-iron"
96- platforms : linux/amd64
97-
98- - path : 17/jre/18
99- tags : " 17-18 17-hydrogen 17-jre-18 17-jre-hydrogen"
100- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
101-
102- - path : 17/jre/18/alpine
103- tags : " 17-alpine-18 17-alpine-hydrogen 17-alpine-jre-18 17-alpine-jre-hydrogen"
104- platforms : linux/amd64
105-
106- - path : 17/jre/20
107- tags : " 17-20 17-iron 17-jre-20 17-jre-iron"
108- platforms : linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7
109-
110- - path : 17/jre/20/alpine
111- tags : " 17-alpine-20 17-alpine-iron 17-alpine-jre-20 17-alpine-jre-iron"
112- platforms : linux/amd64
113-
114- - path : 21/jdk/18
115- tags : " 21-jdk-18 21-jdk-hydrogen jdk-18 jdk-18-hydrogen"
116- platforms : linux/amd64,linux/arm64,linux/ppc64le
117-
118- - path : 21/jdk/18/alpine
119- tags : " alpine-jdk-18 alpine-jdk-hydrogen 21-alpine-jdk-18 21-alpine-jdk-hydrogen"
120- platforms : linux/amd64
121-
122- - path : 21/jdk/20
123- tags : " 21-jdk-20 21-jdk-iron jdk-20 jdk-20-iron"
124- platforms : linux/amd64,linux/arm64,linux/ppc64le
125-
126- - path : 21/jdk/20/alpine
127- tags : " alpine-jdk-20 alpine-jdk-iron 21-alpine-jdk-20 21-alpine-jdk-iron"
128- platforms : linux/amd64
129-
130- - path : 21/jre/18
131- tags : " 21-18 21-hydrogen 21-jre-18 21-jre-hydrogen"
132- platforms : linux/amd64,linux/arm64,linux/ppc64le
133-
134- - path : 21/jre/18/alpine
135- tags : " 21-alpine-18 21-alpine-hydrogen 21-alpine-jre-18 21-alpine-jre-hydrogen alpine-18 alpine-hydrogen alpine-jre-18 alpine-jre-hydrogen"
136- platforms : linux/amd64
137-
138- - path : 21/jre/20
139- tags : " 21-20 21-iron 21-jre-20 21-jre-iron"
140- platforms : linux/amd64,linux/arm64,linux/ppc64le
141-
142- - path : 21/jre/20/alpine
143- tags : " 21-alpine-20 21-alpine-iron 21-alpine-jre-20 21-alpine-jre-iron alpine-20 alpine-iron alpine-jre-20 alpine-jre-iron"
144- platforms : linux/amd64
14530 steps :
146- - name : Checkout
147- 31+ 32+
33+ - name : Set Node.js codename
34+ id : nodename
35+ run : |
36+ case "${{ matrix.node-version }}" in
37+ "18") echo "codename=hydrogen" >> $GITHUB_OUTPUT ;;
38+ "20") echo "codename=iron" >> $GITHUB_OUTPUT ;;
39+ "22") echo "codename=jod" >> $GITHUB_OUTPUT ;;
40+ "24") echo "codename=krypton" >> $GITHUB_OUTPUT ;;
41+ "26") echo "codename=lithium" >> $GITHUB_OUTPUT ;;
42+ "28") echo "codename=magnesium" >> $GITHUB_OUTPUT ;;
43+ esac
14844
14945 - name : Prepare
15046 id : prepare
15147 run : |
15248 DOCKER_IMAGE=timbru31/java-node
153-
154- TEMP="${{ matrix.docker-file.tags }}"
155- TAGZ=($TEMP)
156- VERSION=${TAGZ[0]}
157-
158- for i in "${!TAGZ[@]}"; do
159- if [ "$i" -eq "0" ];
160- then
161- TAGS="${DOCKER_IMAGE}:${TAGZ[$i]}"
162- else
163- TAGS="${TAGS},${DOCKER_IMAGE}:${TAGZ[$i]}"
164- fi
165- done
166-
49+ VERSION="${{ matrix.java-version }}"
50+ NODE_CODENAME=${{ steps.nodename.outputs.codename }}
51+ VARIANT="${{ matrix.variant == 'alpine' && '-alpine' || '' }}"
52+ TYPE="${{ matrix.java-type }}"
53+
54+ # Generate tag combinations
55+ if [ "$TYPE" = "jdk" ]; then
56+ TAGS="${DOCKER_IMAGE}:${VERSION}${VARIANT}-jdk-${{ matrix.node-version }}"
57+ TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-jdk-${NODE_CODENAME}"
58+ else
59+ TAGS="${DOCKER_IMAGE}:${VERSION}${VARIANT}-${{ matrix.node-version }}"
60+ TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-${NODE_CODENAME}"
61+ TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-jre-${{ matrix.node-version }}"
62+ TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-jre-${NODE_CODENAME}"
63+ fi
64+
16765 echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT
16866 echo "version=${VERSION}" >> $GITHUB_OUTPUT
16967 echo "tags=${TAGS}" >> $GITHUB_OUTPUT
@@ -177,18 +75,15 @@ jobs:
17775 with :
17876 install : true
17977
180- - name : Available platforms
181- run : echo ${{ steps.buildx.outputs.platforms }}
182-
18378 - name : Docker Buildx (build)
1847918580 if : success() && !contains(github.ref, 'master')
18681 with :
18782 push : false
188- context : ./${{ matrix.docker-file.path }}
189- file : ./${{ matrix.docker-file.path }}/Dockerfile
83+ context : ./${{ matrix.java-version }}/${{ matrix.java-type }}/${{ matrix.node-version }}${{ matrix.variant == 'alpine' && '/alpine' || '' }}
84+ file : ./${{ matrix.java-version }}/${{ matrix.java-type }}/${{ matrix.node-version }}${{ matrix.variant == 'alpine' && '/alpine' || '' }}/Dockerfile
19085 build-args : REFRESHED_AT=$(date +%Y-%m-%d)
191- platforms : ${{ matrix.docker-file. platforms }}
86+ platforms : ${{ matrix.platforms }}
19287 tags : ${{ steps.prepare.outputs.tags }}
19388
19489 - name : Docker Login
@@ -203,10 +98,10 @@ jobs:
20398 if : success() && github.event_name != 'pull_request' && contains(github.ref, 'master')
20499 with :
205100 push : true
206- context : ./${{ matrix.docker-file.path }}
207- file : ./${{ matrix.docker-file.path }}/Dockerfile
101+ context : ./${{ matrix.java-version }}/${{ matrix.java-type }}/${{ matrix.node-version }}${{ matrix.variant == 'alpine' && '/alpine' || '' }}
102+ file : ./${{ matrix.java-version }}/${{ matrix.java-type }}/${{ matrix.node-version }}${{ matrix.variant == 'alpine' && '/alpine' || '' }}/Dockerfile
208103 build-args : REFRESHED_AT=$(date +%Y-%m-%d)
209- platforms : ${{ matrix.docker-file. platforms }}
104+ platforms : ${{ matrix.platforms }}
210105 tags : ${{ steps.prepare.outputs.tags }}
211106
212107 - name : Inspect Image
0 commit comments