11name : Build base compilers docker images
22
3+ permissions :
4+ contents : read
5+
36concurrency :
47 group : ${{ github.workflow }}-${{ github.ref }}
58 cancel-in-progress : true
@@ -38,14 +41,22 @@ jobs:
3841 # ######################################################
3942 deploy-cpu-bases :
4043 if : inputs.cpu
41- name : " cpu-base"
42- runs-on : ubuntu-latest
44+ name : " cpu-base-${{ matrix.arch }}-gcc${{ matrix.gcc }} "
45+ runs-on : ${{ matrix.runner }}
4346 env :
4447 DOCKER_BUILDKIT : " 1"
4548
4649 strategy :
4750 matrix :
4851 gcc : ["", "14"]
52+ arch : [amd64, arm64]
53+ include :
54+ - arch : amd64
55+ platform : linux/amd64
56+ runner : ubuntu-latest
57+ - arch : arm64
58+ platform : linux/arm64
59+ runner : ubuntu-24.04-arm
4960
5061 steps :
5162 - name : Checkout devito
7283 context : .
7384 file : " ./docker/Dockerfile.cpu"
7485 push : true
86+ platforms : ${{ matrix.platform }}
7587 build-args : " gcc=${{ matrix.gcc }}"
76- tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}"
88+ tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}-${{ matrix.arch }}"
89+
90+ deploy-cpu-bases-manifest :
91+ if : inputs.cpu
92+ name : " cpu-base-manifest"
93+ runs-on : ubuntu-latest
94+ needs : deploy-cpu-bases
95+ env :
96+ DOCKER_BUILDKIT : " 1"
97+
98+ strategy :
99+ matrix :
100+ gcc : ["", "14"]
101+
102+ steps :
103+ - name : Set up Docker Buildx
104+ uses : docker/setup-buildx-action@v3
105+
106+ - name : Login to DockerHub
107+ uses : docker/login-action@v3
108+ with :
109+ username : ${{ secrets.DOCKER_USERNAME }}
110+ password : ${{ secrets.DOCKER_PASSWORD }}
111+
112+ - name : Create multi-arch manifest
113+ env :
114+ TAG_BASE : ${{ format('cpu-gcc{0}', matrix.gcc) }}
115+ run : |
116+ docker buildx imagetools create \
117+ --tag devitocodes/bases:${TAG_BASE} \
118+ devitocodes/bases:${TAG_BASE}-amd64 \
119+ devitocodes/bases:${TAG_BASE}-arm64
120+ docker buildx imagetools inspect devitocodes/bases:${TAG_BASE}
77121
78122 # ######################################################
79123 # ############# Intel OneApi CPU #######################
@@ -138,11 +182,24 @@ jobs:
138182 # ######################################################
139183 deploy-nvidia-bases :
140184 if : inputs.nvidia
141- name : " nvidia-bases"
142- runs-on : ["self-hosted", "nvidiagpu"]
185+ name : " nvidia-bases-${{ matrix.arch }} "
186+ runs-on : ${{ matrix.runner }}
143187 env :
144188 DOCKER_BUILDKIT : " 1"
145189
190+ strategy :
191+ matrix :
192+ arch : [amd64, arm64]
193+ include :
194+ - arch : amd64
195+ platform : linux/amd64
196+ runner :
197+ - self-hosted
198+ - nvidiagpu
199+ - arch : arm64
200+ platform : linux/arm64
201+ runner : ubuntu-24.04-arm
202+
146203 steps :
147204 - name : Checkout devito
148205 uses : actions/checkout@v5
@@ -169,10 +226,11 @@ jobs:
169226 file : " ./docker/Dockerfile.nvidia"
170227 push : true
171228 target : " nvc"
229+ platforms : ${{ matrix.platform }}
172230 build-args : " arch=nvc"
173231 # Label (not tag) with runner name for traceability without changing image tags
174232 labels : builder-runner=${{ runner.name }}
175- tags : " devitocodes/bases:nvidia-nvc"
233+ tags : " devitocodes/bases:nvidia-nvc-${{ matrix.arch }} "
176234
177235 - name : NVCC image
178236 uses : docker/build-push-action@v6
@@ -181,9 +239,10 @@ jobs:
181239 file : " ./docker/Dockerfile.nvidia"
182240 push : true
183241 target : " nvcc"
242+ platforms : ${{ matrix.platform }}
184243 build-args : " arch=nvcc"
185244 labels : builder-runner=${{ runner.name }}
186- tags : " devitocodes/bases:nvidia-nvcc"
245+ tags : " devitocodes/bases:nvidia-nvcc-${{ matrix.arch }} "
187246
188247 - name : NVC host image
189248 uses : docker/build-push-action@v6
@@ -192,9 +251,42 @@ jobs:
192251 file : " ./docker/Dockerfile.nvidia"
193252 push : true
194253 target : " nvc-host"
254+ platforms : ${{ matrix.platform }}
195255 build-args : " arch=nvc-host"
196256 labels : builder-runner=${{ runner.name }}
197- tags : " devitocodes/bases:cpu-nvc"
257+ tags : " devitocodes/bases:cpu-nvc-${{ matrix.arch }}"
258+
259+ deploy-nvidia-bases-manifest :
260+ if : inputs.nvidia
261+ name : " nvidia-base-manifest"
262+ runs-on : ubuntu-latest
263+ needs : deploy-nvidia-bases
264+ env :
265+ DOCKER_BUILDKIT : " 1"
266+
267+ strategy :
268+ matrix :
269+ final_tag : [nvidia-nvc, nvidia-nvcc, cpu-nvc]
270+
271+ steps :
272+ - name : Set up Docker Buildx
273+ uses : docker/setup-buildx-action@v3
274+
275+ - name : Login to DockerHub
276+ uses : docker/login-action@v3
277+ with :
278+ username : ${{ secrets.DOCKER_USERNAME }}
279+ password : ${{ secrets.DOCKER_PASSWORD }}
280+
281+ - name : Create multi-arch manifest
282+ env :
283+ FINAL_TAG : ${{ matrix.final_tag }}
284+ run : |
285+ docker buildx imagetools create \
286+ --tag devitocodes/bases:${FINAL_TAG} \
287+ devitocodes/bases:${FINAL_TAG}-amd64 \
288+ devitocodes/bases:${FINAL_TAG}-arm64
289+ docker buildx imagetools inspect devitocodes/bases:${FINAL_TAG}
198290
199291 # ######################################################
200292 # #################### AMD #############################
@@ -246,5 +338,5 @@ jobs:
246338 push : true
247339 target : " hip"
248340 build-args : |
249- ROCM_VERSION=6.3.4
341+ ROCM_VERSION=7.0.2
250342 tags : devitocodes/bases:amd-hip
0 commit comments