Skip to content

Commit 940651e

Browse files
authored
fix: simplify buildx job
1 parent 85fd36c commit 940651e

File tree

1 file changed

+42
-143
lines changed

1 file changed

+42
-143
lines changed

.github/workflows/buildx.yml

Lines changed: 42 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -14,150 +14,52 @@ jobs:
1414
strategy:
1515
fail-fast: false
1616
matrix:
17-
docker-file:
18-
- path: 3.1/18
19-
tags: "3.1-18 3.1-hydrogen"
17+
ruby-version: [3.1, 3.2, 3.3, 3.4]
18+
node-version: [18, 20, 22]
19+
variant: [default, slim, alpine]
20+
include:
21+
- variant: default
2022
platforms: linux/amd64,linux/arm64,linux/arm/v7
21-
- path: 3.1/18/slim
22-
tags: "3.1-slim-18 3.1-slim-hydrogen"
23+
- variant: slim
2324
platforms: linux/amd64,linux/arm64,linux/arm/v7
24-
- path: 3.1/18/alpine
25-
tags: "3.1-alpine-18 3.1-alpine-hydrogen"
25+
- variant: alpine
2626
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
2727

28-
- path: 3.2/18
29-
tags: "3.2-18 3.2-hydrogen"
30-
platforms: linux/amd64,linux/arm64,linux/arm/v7
31-
- path: 3.2/18/slim
32-
tags: "3.2-slim-18 3.2-slim-hydrogen"
33-
platforms: linux/amd64,linux/arm64,linux/arm/v7
34-
- path: 3.2/18/alpine
35-
tags: "3.2-alpine-18 3.2-alpine-hydrogen"
36-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
37-
38-
- path: 3.3/18
39-
tags: "3.3-18 3.3-hydrogen"
40-
platforms: linux/amd64,linux/arm64,linux/arm/v7
41-
- path: 3.3/18/slim
42-
tags: "3.3-slim-18 3.3-slim-hydrogen"
43-
platforms: linux/amd64,linux/arm64,linux/arm/v7
44-
- path: 3.3/18/alpine
45-
tags: "3.3-alpine-18 3.3-alpine-hydrogen"
46-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
47-
48-
- path: 3.4/18
49-
tags: "3.4-18 3.4-hydrogen"
50-
platforms: linux/amd64,linux/arm64,linux/arm/v7
51-
- path: 3.4/18/slim
52-
tags: "3.4-slim-18 3.4-slim-hydrogen"
53-
platforms: linux/amd64,linux/arm64,linux/arm/v7
54-
- path: 3.4/18/alpine
55-
tags: "3.4-alpine-18 3.4-alpine-hydrogen"
56-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
57-
58-
- path: 3.1/20
59-
tags: "3.1-20 3.1-iron 3.1"
60-
platforms: linux/amd64,linux/arm64,linux/arm/v7
61-
- path: 3.1/20/slim
62-
tags: "3.1-slim-20 3.1-slim-iron 3.1-slim"
63-
platforms: linux/amd64,linux/arm64,linux/arm/v7
64-
- path: 3.1/20/alpine
65-
tags: "3.1-alpine-20 3.1-alpine-iron 3.1-alpine"
66-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
67-
68-
- path: 3.2/20
69-
tags: "3.2-20 3.2-iron 3.2"
70-
platforms: linux/amd64,linux/arm64,linux/arm/v7
71-
- path: 3.2/20/slim
72-
tags: "3.2-slim-20 3.2-slim-iron 3.2-slim"
73-
platforms: linux/amd64,linux/arm64,linux/arm/v7
74-
- path: 3.2/20/alpine
75-
tags: "3.2-alpine-20 3.2-alpine-iron 3.2-alpine"
76-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
77-
78-
- path: 3.3/20
79-
tags: "3.3-20 3.3-iron 3.3 3 latest"
80-
platforms: linux/amd64,linux/arm64,linux/arm/v7
81-
- path: 3.3/20/slim
82-
tags: " 3.3-slim-20 3.3-slim-iron 3.3-slim 3-slim slim"
83-
platforms: linux/amd64,linux/arm64,linux/arm/v7
84-
- path: 3.3/20/alpine
85-
tags: "3.3-alpine-20 3.3-alpine-iron 3.3-alpine 3-alpine alpine"
86-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
87-
88-
- path: 3.4/20
89-
tags: "3.4-20 3.4-iron 3.4"
90-
platforms: linux/amd64,linux/arm64,linux/arm/v7
91-
- path: 3.4/20/slim
92-
tags: "3.4-slim-20 3.4-slim-iron 3.4-slim"
93-
platforms: linux/amd64,linux/arm64,linux/arm/v7
94-
- path: 3.4/20/alpine
95-
tags: "3.4-alpine-20 3.4-alpine-iron 3.4-alpine"
96-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
97-
98-
- path: 3.1/22
99-
tags: "3.1-22 3.1-jod"
100-
platforms: linux/amd64,linux/arm64,linux/arm/v7
101-
- path: 3.1/22/slim
102-
tags: "3.1-slim-22 3.1-slim-jod"
103-
platforms: linux/amd64,linux/arm64,linux/arm/v7
104-
- path: 3.1/22/alpine
105-
tags: "3.1-alpine-22 3.1-alpine-jod"
106-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
107-
108-
- path: 3.2/22
109-
tags: "3.2-22 3.2-jod"
110-
platforms: linux/amd64,linux/arm64,linux/arm/v7
111-
- path: 3.2/22/slim
112-
tags: "3.2-slim-22 3.2-slim-jod"
113-
platforms: linux/amd64,linux/arm64,linux/arm/v7
114-
- path: 3.2/22/alpine
115-
tags: "3.2-alpine-22 3.2-alpine-jod"
116-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
117-
118-
- path: 3.3/22
119-
tags: "3.3-22 3.3-jod"
120-
platforms: linux/amd64,linux/arm64,linux/arm/v7
121-
- path: 3.3/22/slim
122-
tags: "3.3-slim-22 3.3-slim-jod"
123-
platforms: linux/amd64,linux/arm64,linux/arm/v7
124-
- path: 3.3/22/alpine
125-
tags: "3.3-alpine-22 3.3-alpine-jod"
126-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
127-
128-
- path: 3.4/22
129-
tags: "3.4-22 3.4-jod"
130-
platforms: linux/amd64,linux/arm64,linux/arm/v7
131-
- path: 3.4/22/slim
132-
tags: "3.4-slim-22 3.4-slim-jod"
133-
platforms: linux/amd64,linux/arm64,linux/arm/v7
134-
- path: 3.4/22/alpine
135-
tags: "3.4-alpine-22 3.4-alpine-jod"
136-
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
13728
steps:
138-
- name: Checkout
139-
uses: actions/[email protected]
29+
- uses: actions/[email protected]
14030

141-
- name: Prepare
31+
- name: Set Node.js codename
32+
id: nodename
33+
run: |
34+
case "${{ matrix.node-version }}" in
35+
"18") echo "codename=hydrogen" >> $GITHUB_OUTPUT ;;
36+
"20") echo "codename=iron" >> $GITHUB_OUTPUT ;;
37+
"22") echo "codename=jod" >> $GITHUB_OUTPUT ;;
38+
"24") echo "codename=krypton" >> $GITHUB_OUTPUT ;;
39+
"26") echo "codename=lithium" >> $GITHUB_OUTPUT ;;
40+
"28") echo "codename=magnesium" >> $GITHUB_OUTPUT ;;
41+
esac
42+
43+
- name: Generate tags
14244
id: prepare
14345
run: |
14446
DOCKER_IMAGE=timbru31/ruby-node
145-
146-
TEMP="${{ matrix.docker-file.tags }}"
147-
TAGZ=($TEMP)
148-
VERSION=${TAGZ[0]}
149-
150-
for i in "${!TAGZ[@]}"; do
151-
if [ "$i" -eq "0" ];
152-
then
153-
TAGS="${DOCKER_IMAGE}:${TAGZ[$i]}"
154-
else
155-
TAGS="${TAGS},${DOCKER_IMAGE}:${TAGZ[$i]}"
47+
VERSION="${{ matrix.ruby-version }}"
48+
NODE_CODENAME=${{ steps.nodename.outputs.codename }}
49+
VARIANT="${{ matrix.variant != 'default' && '-${{ matrix.variant }}' || '' }}"
50+
TAGS="${DOCKER_IMAGE}:${VERSION}${VARIANT}-${{ matrix.node-version }}"
51+
TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-${NODE_CODENAME}"
52+
if [ "${{ matrix.ruby-version }}" = "3.4" ] && [ "${{ matrix.node-version }}" = "22" ]; then
53+
if [ "${{ matrix.variant }}" = "default" ]; then
54+
TAGS="${TAGS},${DOCKER_IMAGE}:3,${DOCKER_IMAGE}:latest"
55+
elif [ "${{ matrix.variant }}" = "slim" ]; then
56+
TAGS="${TAGS},${DOCKER_IMAGE}:3-slim,${DOCKER_IMAGE}:slim"
57+
elif [ "${{ matrix.variant }}" = "alpine" ]; then
58+
TAGS="${TAGS},${DOCKER_IMAGE}:3-alpine,${DOCKER_IMAGE}:alpine"
15659
fi
157-
done
158-
60+
fi
15961
echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT
160-
echo "version=${VERSION}" >> $GITHUB_OUTPUT
62+
echo "version=${VERSION}${VARIANT}-${{ matrix.node-version }}" >> $GITHUB_OUTPUT
16163
echo "tags=${TAGS}" >> $GITHUB_OUTPUT
16264
16365
- name: Set up QEMU
@@ -169,18 +71,15 @@ jobs:
16971
with:
17072
install: true
17173

172-
- name: Available platforms
173-
run: echo ${{ steps.buildx.outputs.platforms }}
174-
17574
- name: Docker Buildx (build)
17675
uses: docker/[email protected]
17776
if: success() && !contains(github.ref, 'master')
17877
with:
17978
push: false
180-
context: ./${{ matrix.docker-file.path }}
181-
file: ./${{ matrix.docker-file.path }}/Dockerfile
79+
context: ./${{ matrix.ruby-version }}/${{ matrix.node-version }}${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}
80+
file: ./${{ matrix.ruby-version }}/${{ matrix.node-version }}${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}/Dockerfile
18281
build-args: REFRESHED_AT=$(date +%Y-%m-%d)
183-
platforms: ${{ matrix.docker-file.platforms }}
82+
platforms: ${{ matrix.platforms }}
18483
tags: ${{ steps.prepare.outputs.tags }}
18584

18685
- name: Docker Login
@@ -195,16 +94,16 @@ jobs:
19594
if: success() && github.event_name != 'pull_request' && contains(github.ref, 'master')
19695
with:
19796
push: true
198-
context: ./${{ matrix.docker-file.path }}
199-
file: ./${{ matrix.docker-file.path }}/Dockerfile
97+
context: ./${{ matrix.ruby-version }}/${{ matrix.node-version }}${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}
98+
file: ./${{ matrix.ruby-version }}/${{ matrix.node-version }}${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}/Dockerfile
20099
build-args: REFRESHED_AT=$(date +%Y-%m-%d)
201-
platforms: ${{ matrix.docker-file.platforms }}
100+
platforms: ${{ matrix.platforms }}
202101
tags: ${{ steps.prepare.outputs.tags }}
203102

204103
- name: Inspect Image
205104
if: always() && github.event_name != 'pull_request' && contains(github.ref, 'master')
206105
run: |
207-
docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
106+
docker buildx imagetools inspect $(echo "${{ steps.prepare.outputs.tags }}" | cut -d',' -f1)
208107
209108
- name: Clear
210109
if: always() && github.event_name != 'pull_request'

0 commit comments

Comments
 (0)