@@ -38,14 +38,22 @@ jobs:
3838 # ######################################################
3939 deploy-cpu-bases :
4040 if : inputs.cpu
41- name : " cpu-base"
42- runs-on : ubuntu-latest
41+ name : " cpu-base-${{ matrix.arch }}-gcc${{ matrix.gcc }} "
42+ runs-on : ${{ matrix.runner }}
4343 env :
4444 DOCKER_BUILDKIT : " 1"
4545
4646 strategy :
4747 matrix :
4848 gcc : ["", "14"]
49+ arch : [amd64, arm64]
50+ include :
51+ - arch : amd64
52+ platform : linux/amd64
53+ runner : ubuntu-latest
54+ - arch : arm64
55+ platform : linux/arm64
56+ runner : ubuntu-24.04-arm
4957
5058 steps :
5159 - name : Checkout devito
7280 context : .
7381 file : " ./docker/Dockerfile.cpu"
7482 push : true
83+ platforms : ${{ matrix.platform }}
7584 build-args : " gcc=${{ matrix.gcc }}"
76- tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}"
85+ tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}-${{ matrix.arch }}"
86+
87+ deploy-cpu-bases-manifest :
88+ if : inputs.cpu
89+ name : " cpu-base-manifest"
90+ runs-on : ubuntu-latest
91+ needs : deploy-cpu-bases
92+ env :
93+ DOCKER_BUILDKIT : " 1"
94+
95+ strategy :
96+ matrix :
97+ gcc : ["", "14"]
98+
99+ steps :
100+ - name : Set up Docker Buildx
101+ uses : docker/setup-buildx-action@v3
102+
103+ - name : Login to DockerHub
104+ uses : docker/login-action@v3
105+ with :
106+ username : ${{ secrets.DOCKER_USERNAME }}
107+ password : ${{ secrets.DOCKER_PASSWORD }}
108+
109+ - name : Create multi-arch manifest
110+ env :
111+ TAG_BASE : ${{ format('cpu-gcc{0}', matrix.gcc) }}
112+ run : |
113+ docker buildx imagetools create \
114+ --tag devitocodes/bases:${TAG_BASE} \
115+ devitocodes/bases:${TAG_BASE}-amd64 \
116+ devitocodes/bases:${TAG_BASE}-arm64
117+ docker buildx imagetools inspect devitocodes/bases:${TAG_BASE}
77118
78119 # ######################################################
79120 # ############# Intel OneApi CPU #######################
@@ -138,11 +179,24 @@ jobs:
138179 # ######################################################
139180 deploy-nvidia-bases :
140181 if : inputs.nvidia
141- name : " nvidia-bases"
142- runs-on : ["self-hosted", "nvidiagpu"]
182+ name : " nvidia-bases-${{ matrix.arch }} "
183+ runs-on : ${{ matrix.runner }}
143184 env :
144185 DOCKER_BUILDKIT : " 1"
145186
187+ strategy :
188+ matrix :
189+ arch : [amd64, arm64]
190+ include :
191+ - arch : amd64
192+ platform : linux/amd64
193+ runner :
194+ - self-hosted
195+ - nvidiagpu
196+ - arch : arm64
197+ platform : linux/arm64
198+ runner : ubuntu-24.04-arm
199+
146200 steps :
147201 - name : Checkout devito
148202 uses : actions/checkout@v5
@@ -169,10 +223,11 @@ jobs:
169223 file : " ./docker/Dockerfile.nvidia"
170224 push : true
171225 target : " nvc"
226+ platforms : ${{ matrix.platform }}
172227 build-args : " arch=nvc"
173228 # Label (not tag) with runner name for traceability without changing image tags
174229 labels : builder-runner=${{ runner.name }}
175- tags : " devitocodes/bases:nvidia-nvc"
230+ tags : " devitocodes/bases:nvidia-nvc-${{ matrix.arch }} "
176231
177232 - name : NVCC image
178233 uses : docker/build-push-action@v6
@@ -181,9 +236,10 @@ jobs:
181236 file : " ./docker/Dockerfile.nvidia"
182237 push : true
183238 target : " nvcc"
239+ platforms : ${{ matrix.platform }}
184240 build-args : " arch=nvcc"
185241 labels : builder-runner=${{ runner.name }}
186- tags : " devitocodes/bases:nvidia-nvcc"
242+ tags : " devitocodes/bases:nvidia-nvcc-${{ matrix.arch }} "
187243
188244 - name : NVC host image
189245 uses : docker/build-push-action@v6
@@ -192,9 +248,42 @@ jobs:
192248 file : " ./docker/Dockerfile.nvidia"
193249 push : true
194250 target : " nvc-host"
251+ platforms : ${{ matrix.platform }}
195252 build-args : " arch=nvc-host"
196253 labels : builder-runner=${{ runner.name }}
197- tags : " devitocodes/bases:cpu-nvc"
254+ tags : " devitocodes/bases:cpu-nvc-${{ matrix.arch }}"
255+
256+ deploy-nvidia-bases-manifest :
257+ if : inputs.nvidia
258+ name : " nvidia-base-manifest"
259+ runs-on : ubuntu-latest
260+ needs : deploy-nvidia-bases
261+ env :
262+ DOCKER_BUILDKIT : " 1"
263+
264+ strategy :
265+ matrix :
266+ final_tag : [nvidia-nvc, nvidia-nvcc, cpu-nvc]
267+
268+ steps :
269+ - name : Set up Docker Buildx
270+ uses : docker/setup-buildx-action@v3
271+
272+ - name : Login to DockerHub
273+ uses : docker/login-action@v3
274+ with :
275+ username : ${{ secrets.DOCKER_USERNAME }}
276+ password : ${{ secrets.DOCKER_PASSWORD }}
277+
278+ - name : Create multi-arch manifest
279+ env :
280+ FINAL_TAG : ${{ matrix.final_tag }}
281+ run : |
282+ docker buildx imagetools create \
283+ --tag devitocodes/bases:${FINAL_TAG} \
284+ devitocodes/bases:${FINAL_TAG}-amd64 \
285+ devitocodes/bases:${FINAL_TAG}-arm64
286+ docker buildx imagetools inspect devitocodes/bases:${FINAL_TAG}
198287
199288 # ######################################################
200289 # #################### AMD #############################
0 commit comments