20
20
21
21
IMAGE_REGISTRY ?= quay.io/opendatahub/workbench-images
22
22
RELEASE ?= 2024b
23
+ RELEASE_PYTHON_VERSION ?= 3.11
23
24
# additional user-specified caching parameters for $(CONTAINER_ENGINE) build
24
25
CONTAINER_BUILD_CACHE_ARGS ?= --no-cache
25
26
# whether to build all dependent images or just the one specified
37
38
DATE ?= $(shell date +'% Y% m% d')
38
39
WHERE_WHICH ?= which
39
40
41
+ ifeq ($(RELEASE ) , 2025a)
42
+ RELEASE_PYTHON_VERSION = 3.12
43
+ else ifeq ($(RELEASE), 2024a)
44
+ RELEASE_PYTHON_VERSION = 3.9
45
+ endif
46
+
40
47
41
48
# linux/amd64 or darwin/arm64
42
49
OS_ARCH =$(shell go env GOOS) /$(shell go env GOARCH)
62
69
CONTAINER_ENGINE := podman
63
70
endif
64
71
65
- # Build function for the notebok image:
72
+ # Build function for the notebook image:
66
73
# ARG 1: Image tag name.
67
- # ARG 2: Path of image context we want to build.
68
- # ARG 3: Base image tag name (optional).
74
+ # ARG 2: Path of Dockerfile we want to build.
69
75
define build_image
70
76
$(eval IMAGE_NAME := $(IMAGE_REGISTRY ) :$(1 ) -$(IMAGE_TAG ) )
77
+ $(eval BUILD_ARGS :=)
78
+
71
79
$(info # Building $(IMAGE_NAME ) image...)
72
- $(if $(3 ) ,
73
- $(eval BASE_IMAGE_NAME := $(IMAGE_REGISTRY ) :$(3 ) -$(IMAGE_TAG ) )
74
- $(eval BUILD_ARGS := --build-arg BASE_IMAGE=$(BASE_IMAGE_NAME ) ) ,
75
- $(eval BUILD_ARGS :=)
76
- )
77
- $(ROOT_DIR ) /scripts/sandbox.py --dockerfile '$(2 ) /Dockerfile' -- \
78
- $(CONTAINER_ENGINE ) build $(CONTAINER_BUILD_CACHE_ARGS ) --tag $(IMAGE_NAME ) --file '$(2 ) /Dockerfile' $(BUILD_ARGS ) {}\;
80
+
81
+ $(ROOT_DIR ) /scripts/sandbox.py --dockerfile '$(2 ) ' -- \
82
+ $(CONTAINER_ENGINE ) build $(CONTAINER_BUILD_CACHE_ARGS ) --tag $(IMAGE_NAME ) --file '$(2 ) ' $(BUILD_ARGS ) {}\;
79
83
endef
80
84
81
- # Push function for the notebok image:
85
+ # Push function for the notebook image:
82
86
# ARG 1: Path of image context we want to build.
83
87
define push_image
84
88
$(eval IMAGE_NAME := $(IMAGE_REGISTRY ) :$(subst /,-,$(1 ) ) -$(IMAGE_TAG ) )
@@ -88,16 +92,16 @@ endef
88
92
89
93
# Build and push the notebook images:
90
94
# ARG 1: Image tag name.
91
- # ARG 2: Path of image context we want to build.
92
- # ARG 3: Base image tag name (optional).
95
+ # ARG 2: Path of Dockerfile we want to build.
93
96
#
94
97
# BUILD_DEPENDENT_IMAGES: only build images that were explicitly given as a goal on command line
95
98
# PUSH_IMAGES: allows skipping podman push
96
99
define image
97
- $(info #* # Image build directory: <$(2 ) > #(MACHINE-PARSED LINE) # *#...)
100
+ $(eval BUILD_DIRECTORY := $(shell echo $(2 ) | sed 's/\/Dockerfile.* //') )
101
+ $(info #* # Image build directory: <$(BUILD_DIRECTORY ) > #(MACHINE-PARSED LINE) # *#...)
98
102
99
103
$(if $(or $(BUILD_DEPENDENT_IMAGES:no= ) , $(filter $@ ,$(MAKECMDGOALS ) ) ) ,
100
- $(call build_image,$(1 ) ,$(2 ) , $( 3 ) )
104
+ $(call build_image,$(1 ) ,$(2 ) )
101
105
102
106
$(if $(PUSH_IMAGES:no= ) ,
103
107
$(call push_image,$(1 ) )
@@ -117,130 +121,82 @@ bin/buildinputs: scripts/buildinputs/buildinputs.go scripts/buildinputs/go.mod s
117
121
$(info Building a Go helper for Dockerfile dependency analysis...)
118
122
go build -C " scripts/buildinputs" -o " $( ROOT_DIR) /$@ " ./...
119
123
120
- # ###################################### Buildchain for Python 3.11 using ubi9 #####################################
121
-
122
- # Build and push base-ubi9-python-3.11 image to the registry
123
- .PHONY : base-ubi9-python-3.11
124
- base-ubi9-python-3.11 :
125
- $(call image,$@ ,base/ubi9-python-3.11)
126
-
127
- # Build and push jupyter-minimal-ubi9-python-3.11 image to the registry
128
- .PHONY : jupyter-minimal-ubi9-python-3.11
129
- jupyter-minimal-ubi9-python-3.11 : base-ubi9-python-3.11
130
- $(call image,$@ ,jupyter/minimal/ubi9-python-3.11,$< )
131
-
132
- # Build and push jupyter-datascience-ubi9-python-3.11 image to the registry
133
- .PHONY : jupyter-datascience-ubi9-python-3.11
134
- jupyter-datascience-ubi9-python-3.11 : jupyter-minimal-ubi9-python-3.11
135
- $(call image,$@ ,jupyter/datascience/ubi9-python-3.11,$< )
136
-
137
- # Build and push cuda-ubi9-python-3.11 image to the registry
138
- .PHONY : cuda-ubi9-python-3.11
139
- cuda-ubi9-python-3.11 : base-ubi9-python-3.11
140
- $(call image,$@ ,cuda/ubi9-python-3.11,$< )
141
-
142
- # Build and push cuda-jupyter-minimal-ubi9-python-3.11 image to the registry
143
- .PHONY : cuda-jupyter-minimal-ubi9-python-3.11
144
- cuda-jupyter-minimal-ubi9-python-3.11 : cuda-ubi9-python-3.11
145
- $(call image,$@ ,jupyter/minimal/ubi9-python-3.11,$< )
146
-
147
- # Build and push cuda-jupyter-datascience-ubi9-python-3.11 image to the registry
148
- .PHONY : cuda-jupyter-datascience-ubi9-python-3.11
149
- cuda-jupyter-datascience-ubi9-python-3.11 : cuda-jupyter-minimal-ubi9-python-3.11
150
- $(call image,$@ ,jupyter/datascience/ubi9-python-3.11,$< )
151
-
152
- # Build and push cuda-jupyter-tensorflow-ubi9-python-3.11 image to the registry
153
- .PHONY : cuda-jupyter-tensorflow-ubi9-python-3.11
154
- cuda-jupyter-tensorflow-ubi9-python-3.11 : cuda-jupyter-datascience-ubi9-python-3.11
155
- $(call image,$@ ,jupyter/tensorflow/ubi9-python-3.11,$< )
156
-
157
- # Build and push jupyter-pytorch-ubi9-python-3.11 image to the registry
158
- .PHONY : jupyter-pytorch-ubi9-python-3.11
159
- jupyter-pytorch-ubi9-python-3.11 : cuda-jupyter-datascience-ubi9-python-3.11
160
- $(call image,$@ ,jupyter/pytorch/ubi9-python-3.11,$< )
161
-
162
- # Build and push jupyter-trustyai-ubi9-python-3.11 image to the registry
163
- .PHONY : jupyter-trustyai-ubi9-python-3.11
164
- jupyter-trustyai-ubi9-python-3.11 : jupyter-datascience-ubi9-python-3.11
165
- $(call image,$@ ,jupyter/trustyai/ubi9-python-3.11,$< )
166
-
167
- # Build and push runtime-minimal-ubi9-python-3.11 image to the registry
168
- .PHONY : runtime-minimal-ubi9-python-3.11
169
- runtime-minimal-ubi9-python-3.11 : base-ubi9-python-3.11
170
- $(call image,$@ ,runtimes/minimal/ubi9-python-3.11,$< )
171
-
172
- # Build and push runtime-datascience-ubi9-python-3.11 image to the registry
173
- .PHONY : runtime-datascience-ubi9-python-3.11
174
- runtime-datascience-ubi9-python-3.11 : base-ubi9-python-3.11
175
- $(call image,$@ ,runtimes/datascience/ubi9-python-3.11,$< )
176
-
177
- # Build and push runtime-pytorch-ubi9-python-3.11 image to the registry
178
- .PHONY : runtime-pytorch-ubi9-python-3.11
179
- runtime-pytorch-ubi9-python-3.11 : base-ubi9-python-3.11
180
- $(call image,$@ ,runtimes/pytorch/ubi9-python-3.11,$< )
181
-
182
- # Build and push runtime-cuda-tensorflow-ubi9-python-3.11 image to the registry
183
- .PHONY : runtime-cuda-tensorflow-ubi9-python-3.11
184
- runtime-cuda-tensorflow-ubi9-python-3.11 : cuda-ubi9-python-3.11
185
- $(call image,$@ ,runtimes/tensorflow/ubi9-python-3.11,$< )
186
-
187
- .PHONY : codeserver-ubi9-python-3.11
188
- codeserver-ubi9-python-3.11 : base-ubi9-python-3.11
189
- $(call image,$@ ,codeserver/ubi9-python-3.11,$< )
190
-
191
- # ###################################### Buildchain for Python 3.11 using C9S #######################################
192
-
193
- # Build and push base-c9s-python-3.11 image to the registry
194
- .PHONY : base-c9s-python-3.11
195
- base-c9s-python-3.11 :
196
- $(call image,$@ ,base/c9s-python-3.11)
197
-
198
- .PHONY : cuda-c9s-python-3.11
199
- cuda-c9s-python-3.11 : base-c9s-python-3.11
200
- $(call image,$@ ,cuda/c9s-python-3.11,$< )
201
-
202
- .PHONY : rstudio-c9s-python-3.11
203
- rstudio-c9s-python-3.11 : base-c9s-python-3.11
204
- $(call image,$@ ,rstudio/c9s-python-3.11,$< )
205
-
206
- .PHONY : cuda-rstudio-c9s-python-3.11
207
- cuda-rstudio-c9s-python-3.11 : cuda-c9s-python-3.11
208
- $(call image,$@ ,rstudio/c9s-python-3.11,$< )
209
-
210
- # ###################################### Buildchain for AMD Python 3.11 using UBI9 #######################################
211
- .PHONY : rocm-ubi9-python-3.11
212
- rocm-ubi9-python-3.11 : base-ubi9-python-3.11
213
- $(call image,$@ ,rocm/ubi9-python-3.11,$< )
214
-
215
- # We are only using rocm-ubi9 base image here onwards
216
- .PHONY : rocm-jupyter-minimal-ubi9-python-3.11
217
- rocm-jupyter-minimal-ubi9-python-3.11 : rocm-ubi9-python-3.11
218
- $(call image,$@ ,jupyter/minimal/ubi9-python-3.11,$< )
219
-
220
- # Build and push rocm-jupyter-datascience-ubi9-python-3.11 image to the registry
221
- .PHONY : rocm-jupyter-datascience-ubi9-python-3.11
222
- rocm-jupyter-datascience-ubi9-python-3.11 : rocm-jupyter-minimal-ubi9-python-3.11
223
- $(call image,$@ ,jupyter/datascience/ubi9-python-3.11,$< )
224
-
225
- # Build and push rocm-jupyter-tensorflow-ubi9-python-3.11 image to the registry
226
- .PHONY : rocm-jupyter-tensorflow-ubi9-python-3.11
227
- rocm-jupyter-tensorflow-ubi9-python-3.11 : rocm-jupyter-datascience-ubi9-python-3.11
228
- $(call image,$@ ,jupyter/rocm/tensorflow/ubi9-python-3.11,$< )
229
-
230
- # Build and push rocm-jupyter-pytorch-ubi9-python-3.11 image to the registry
231
- .PHONY : rocm-jupyter-pytorch-ubi9-python-3.11
232
- rocm-jupyter-pytorch-ubi9-python-3.11 : rocm-jupyter-datascience-ubi9-python-3.11
233
- $(call image,$@ ,jupyter/rocm/pytorch/ubi9-python-3.11,$< )
234
-
235
- # Build and push rocm-jupyter-runtime-pytorch-ubi9-python-3.11 image to the registry
236
- .PHONY : rocm-runtime-pytorch-ubi9-python-3.11
237
- rocm-runtime-pytorch-ubi9-python-3.11 : rocm-ubi9-python-3.11
238
- $(call image,$@ ,runtimes/rocm-pytorch/ubi9-python-3.11,$< )
239
-
240
- # Build and push rocm-jupyter-runtime-tensorflow-ubi9-python-3.11 image to the registry
241
- .PHONY : rocm-runtime-tensorflow-ubi9-python-3.11
242
- rocm-runtime-tensorflow-ubi9-python-3.11 : rocm-ubi9-python-3.11
243
- $(call image,$@ ,runtimes/rocm-tensorflow/ubi9-python-3.11,$< )
124
+ # ###################################### Buildchain for Python using ubi9 #####################################
125
+
126
+ .PHONY : jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION )
127
+ jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
128
+ $(call image,$@ ,jupyter/minimal/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
129
+
130
+ .PHONY : jupyter-datascience-ubi9-python-$(RELEASE_PYTHON_VERSION )
131
+ jupyter-datascience-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
132
+ $(call image,$@ ,jupyter/datascience/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
133
+
134
+ .PHONY : cuda-jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION )
135
+ cuda-jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
136
+ $(call image,$@ ,jupyter/minimal/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
137
+
138
+ .PHONY : cuda-jupyter-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION )
139
+ cuda-jupyter-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
140
+ $(call image,$@ ,jupyter/tensorflow/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
141
+
142
+ .PHONY : cuda-jupyter-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION )
143
+ cuda-jupyter-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
144
+ $(call image,$@ ,jupyter/pytorch/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
145
+
146
+ .PHONY : jupyter-trustyai-ubi9-python-$(RELEASE_PYTHON_VERSION )
147
+ jupyter-trustyai-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
148
+ $(call image,$@ ,jupyter/trustyai/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
149
+
150
+ .PHONY : runtime-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION )
151
+ runtime-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
152
+ $(call image,$@ ,runtimes/minimal/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
153
+
154
+ .PHONY : runtime-datascience-ubi9-python-$(RELEASE_PYTHON_VERSION )
155
+ runtime-datascience-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
156
+ $(call image,$@ ,runtimes/datascience/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
157
+
158
+ .PHONY : runtime-cuda-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION )
159
+ runtime-cuda-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
160
+ $(call image,$@ ,runtimes/pytorch/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
161
+
162
+ .PHONY : runtime-cuda-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION )
163
+ runtime-cuda-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
164
+ $(call image,$@ ,runtimes/tensorflow/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
165
+
166
+ .PHONY : codeserver-ubi9-python-$(RELEASE_PYTHON_VERSION )
167
+ codeserver-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
168
+ $(call image,$@ ,codeserver/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
169
+
170
+ # ###################################### Buildchain for Python using C9S #######################################
171
+
172
+ .PHONY : rstudio-c9s-python-$(RELEASE_PYTHON_VERSION )
173
+ rstudio-c9s-python-$(RELEASE_PYTHON_VERSION ) :
174
+ $(call image,$@ ,rstudio/c9s-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cpu)
175
+
176
+ .PHONY : cuda-rstudio-c9s-python-$(RELEASE_PYTHON_VERSION )
177
+ cuda-rstudio-c9s-python-$(RELEASE_PYTHON_VERSION ) :
178
+ $(call image,$@ ,rstudio/c9s-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.cuda)
179
+
180
+ # ###################################### Buildchain for AMD Python using UBI9 #######################################
181
+ .PHONY : rocm-jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION )
182
+ rocm-jupyter-minimal-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
183
+ $(call image,$@ ,jupyter/minimal/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.rocm)
184
+
185
+ .PHONY : rocm-jupyter-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION )
186
+ rocm-jupyter-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
187
+ $(call image,$@ ,jupyter/rocm/tensorflow/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.rocm)
188
+
189
+ .PHONY : rocm-jupyter-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION )
190
+ rocm-jupyter-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
191
+ $(call image,$@ ,jupyter/rocm/pytorch/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.rocm)
192
+
193
+ .PHONY : rocm-runtime-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION )
194
+ rocm-runtime-pytorch-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
195
+ $(call image,$@ ,runtimes/rocm-pytorch/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.rocm)
196
+
197
+ .PHONY : rocm-runtime-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION )
198
+ rocm-runtime-tensorflow-ubi9-python-$(RELEASE_PYTHON_VERSION ) :
199
+ $(call image,$@ ,runtimes/rocm-tensorflow/ubi9-python-$(RELEASE_PYTHON_VERSION ) /Dockerfile.rocm)
244
200
245
201
# ###################################### Deployments #######################################
246
202
0 commit comments