3434 - cron : " 0 0 1 * *"
3535
3636jobs :
37+ # ######################################################
38+ # ########## Free-threaded Python meta-base ############
39+ # ######################################################
40+ deploy-nogil-base :
41+ name : " python-nogil-base"
42+ runs-on : ubuntu-latest
43+ env :
44+ DOCKER_BUILDKIT : " 1"
45+
46+ steps :
47+ - name : Checkout devito
48+ uses : actions/checkout@v4
49+
50+ - name : Check event name
51+ run : echo ${{ github.event_name }}
52+
53+ - name : Set up QEMU
54+ uses : docker/setup-qemu-action@v3
55+
56+ - name : Set up Docker Buildx
57+ uses : docker/setup-buildx-action@v3
58+
59+ - name : Login to DockerHub
60+ uses : docker/login-action@v3
61+ with :
62+ username : ${{ secrets.DOCKER_USERNAME }}
63+ password : ${{ secrets.DOCKER_PASSWORD }}
64+
65+ - name : Build free-threaded Python base
66+ uses : docker/build-push-action@v6
67+ if : ${{ matrix.disable-gil }}
68+ with :
69+ context : .
70+ file : " ./docker/Dockerfile.nogil"
71+ push : true
72+ tags : " devitocodes/bases:python-nogil"
73+
3774 # ######################################################
3875 # ############# Basic gcc CPU ##########################
3976 # ######################################################
4784 strategy :
4885 matrix :
4986 gcc : ["", "14"]
50- disable-gil : [false, true]
87+ include :
88+ - disable-gil : false
89+ build-args : " "
90+ suffix : " "
91+ - disable-gil : true
92+ build-args : " base=devitocodes/bases:python-nogil"
93+ suffix : " -nogil"
5194
5295 steps :
5396 - name : Checkout devito
@@ -68,14 +111,6 @@ jobs:
68111 username : ${{ secrets.DOCKER_USERNAME }}
69112 password : ${{ secrets.DOCKER_PASSWORD }}
70113
71- - name : Build free-threaded base image
72- uses : docker/build-push-action@v6
73- if : ${{ matrix.disable-gil }}
74- with :
75- context : .
76- file : " ./docker/Dockerfile.nogil"
77- tags : " ubuntu-nogil"
78-
79114 - name : GCC image
80115 uses : docker/build-push-action@v6
81116 with :
84119 push : true
85120 build-args : |
86121 gcc=${{ matrix.gcc }}
87- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
88- tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}${{ matrix.disable-gil && '-nogil' || '' }}"
122+ ${{ matrix.build-args }}
123+ tags : " devitocodes/bases:cpu-gcc${{ matrix.gcc }}${{ matrix.suffix }}"
89124
90125
91126 # ######################################################
@@ -100,7 +135,13 @@ jobs:
100135
101136 strategy :
102137 matrix :
103- disable-gil : [false, true]
138+ include :
139+ - disable-gil : false
140+ build-args : " "
141+ suffix : " "
142+ - disable-gil : true
143+ build-args : " base=devitocodes/bases:python-nogil"
144+ suffix : " -nogil"
104145
105146 steps :
106147 - name : Checkout devito
@@ -121,14 +162,6 @@ jobs:
121162 username : ${{ secrets.DOCKER_USERNAME }}
122163 password : ${{ secrets.DOCKER_PASSWORD }}
123164
124- - name : Build free-threaded base image
125- uses : docker/build-push-action@v6
126- if : ${{ matrix.disable-gil }}
127- with :
128- context : .
129- file : " ./docker/Dockerfile.nogil"
130- tags : " ubuntu-nogil"
131-
132165 - name : ICX image
133166 uses : docker/build-push-action@v6
134167 with :
@@ -138,8 +171,8 @@ jobs:
138171 target : " icx"
139172 build-args : |
140173 arch=icx
141- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
142- tags : " devitocodes/bases:cpu-icx${{ matrix.disable-gil && '-nogil' || '' }}"
174+ ${{ matrix.build-args }}
175+ tags : " devitocodes/bases:cpu-icx${{ matrix.suffix }}"
143176
144177 - name : SYCL CPU image
145178 uses : docker/build-push-action@v6
@@ -150,8 +183,8 @@ jobs:
150183 target : " cpu-sycl"
151184 build-args : |
152185 arch=cpu-sycl
153- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
154- tags : " devitocodes/bases:cpu-sycl${{ matrix.disable-gil && '-nogil' || '' }}"
186+ ${{ matrix.build-args }}
187+ tags : " devitocodes/bases:cpu-sycl${{ matrix.suffix }}"
155188
156189 - name : SYCL GPU image
157190 uses : docker/build-push-action@v6
@@ -162,8 +195,8 @@ jobs:
162195 target : " gpu-sycl"
163196 build-args : |
164197 arch=gpu-sycl
165- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
166- tags : " devitocodes/bases:gpu-sycl${{ matrix.disable-gil && '-nogil' || '' }}"
198+ ${{ matrix.build-args }}
199+ tags : " devitocodes/bases:gpu-sycl${{ matrix.suffix }}"
167200
168201 # ######################################################
169202 # ################## Nvidia nvhpc ######################
@@ -177,7 +210,13 @@ jobs:
177210
178211 strategy :
179212 matrix :
180- disable-gil : [false, true]
213+ include :
214+ - disable-gil : false
215+ build-args : " "
216+ suffix : " "
217+ - disable-gil : true
218+ build-args : " base=devitocodes/bases:python-nogil"
219+ suffix : " -nogil"
181220
182221 steps :
183222 - name : Checkout devito
@@ -198,14 +237,6 @@ jobs:
198237 username : ${{ secrets.DOCKER_USERNAME }}
199238 password : ${{ secrets.DOCKER_PASSWORD }}
200239
201- - name : Build free-threaded base image
202- uses : docker/build-push-action@v6
203- if : ${{ matrix.disable-gil }}
204- with :
205- context : .
206- file : " ./docker/Dockerfile.nogil"
207- tags : " ubuntu-nogil"
208-
209240 - name : NVC image
210241 uses : docker/build-push-action@v6
211242 with :
@@ -215,10 +246,10 @@ jobs:
215246 target : " nvc"
216247 build-args : |
217248 arch=nvc
218- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
249+ ${{ matrix.build-args }}
219250 # Label (not tag) with runner name for traceability without changing image tags
220251 labels : builder-runner=${{ runner.name }}
221- tags : " devitocodes/bases:nvidia-nvc${{ matrix.disable-gil && '-nogil' || '' }}"
252+ tags : " devitocodes/bases:nvidia-nvc${{ matrix.suffix }}"
222253
223254 - name : NVCC image
224255 uses : docker/build-push-action@v6
@@ -229,9 +260,9 @@ jobs:
229260 target : " nvcc"
230261 build-args : |
231262 arch=nvcc
232- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
263+ ${{ matrix.build-args }}
233264 labels : builder-runner=${{ runner.name }}
234- tags : " devitocodes/bases:nvidia-nvcc${{ matrix.disable-gil && '-nogil' || '' }}"
265+ tags : " devitocodes/bases:nvidia-nvcc${{ matrix.suffix }}"
235266
236267 - name : NVC host image
237268 uses : docker/build-push-action@v6
@@ -242,9 +273,9 @@ jobs:
242273 target : " nvc-host"
243274 build-args : |
244275 arch=nvc-host
245- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
276+ ${{ matrix.build-args }}
246277 labels : builder-runner=${{ runner.name }}
247- tags : " devitocodes/bases:cpu-nvc${{ matrix.disable-gil && '-nogil' || '' }}"
278+ tags : " devitocodes/bases:cpu-nvc${{ matrix.suffix }}"
248279
249280 # ######################################################
250281 # #################### AMD #############################
@@ -258,7 +289,13 @@ jobs:
258289
259290 strategy :
260291 matrix :
261- disable-gil : [false, true]
292+ include :
293+ - disable-gil : false
294+ build-args : " "
295+ suffix : " "
296+ - disable-gil : true
297+ build-args : " base=devitocodes/bases:python-nogil"
298+ suffix : " -nogil"
262299
263300 steps :
264301 - name : Checkout devito
@@ -279,14 +316,6 @@ jobs:
279316 username : ${{ secrets.DOCKER_USERNAME }}
280317 password : ${{ secrets.DOCKER_PASSWORD }}
281318
282- - name : Build free-threaded base image
283- uses : docker/build-push-action@v6
284- if : ${{ matrix.disable-gil }}
285- with :
286- context : .
287- file : " ./docker/Dockerfile.nogil"
288- tags : " ubuntu-nogil"
289-
290319 - name : AMD image
291320 uses : docker/build-push-action@v6
292321 with :
@@ -298,8 +327,8 @@ jobs:
298327 ROCM_VERSION=5.5.1
299328 UCX_BRANCH=v1.13.1
300329 OMPI_BRANCH=v4.1.4
301- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
302- tags : devitocodes/bases:amd${{ matrix.disable-gil && '-nogil' || '' }}
330+ ${{ matrix.build-args }}
331+ tags : devitocodes/bases:amd${{ matrix.suffix }}
303332
304333 - name : AMD HIP image
305334 uses : docker/build-push-action@v6
@@ -310,5 +339,5 @@ jobs:
310339 target : " hip"
311340 build-args : |
312341 ROCM_VERSION=6.3.4
313- ${{ matrix.disable-gil && 'base=ubuntu-nogil' || '' }}
314- tags : devitocodes/bases:amd-hip${{ matrix.disable-gil && '-nogil' || '' }}
342+ ${{ matrix.build-args }}
343+ tags : devitocodes/bases:amd-hip${{ matrix.suffix }}
0 commit comments