From aae0a609d47efdc18d21a2d869bf7ea8d182dcb5 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Wed, 3 Sep 2025 19:20:11 +0200 Subject: [PATCH 01/47] Add multiarch-push-pipeline config --- .tekton/multiarch-push-pipeline.yaml | 640 ++++++++++++++++++ .../odh-base-image-cuda-py311-c9s-push.yaml | 2 +- .../odh-base-image-cuda-py312-c9s-push.yaml | 2 +- .../odh-base-image-cuda-py312-ubi9-push.yaml | 2 +- 4 files changed, 643 insertions(+), 3 deletions(-) create mode 100644 .tekton/multiarch-push-pipeline.yaml diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml new file mode 100644 index 0000000000..6dc7302646 --- /dev/null +++ b/.tekton/multiarch-push-pipeline.yaml @@ -0,0 +1,640 @@ +apiVersion: tekton.dev/v1 +kind: Pipeline +metadata: + labels: + appstudio.openshift.io/application: opendatahub-release + pipelines.appstudio.openshift.io/type: build + name: multiarch-push-pipeline + namespace: open-data-hub-tenant +spec: + description: | + This pipeline is ideal for building container images from a Containerfile while maintaining trust after pipeline customization. + + _Uses `buildah` to create a container image leveraging [trusted artifacts](https://konflux-ci.dev/architecture/ADR/0036-trusted-artifacts.html). It also optionally creates a source image and runs some build-time tests. Information is shared between tasks using OCI artifacts instead of PVCs. EC will pass the [`trusted_task.trusted`](https://enterprisecontract.dev/docs/ec-policies/release_policy.html#trusted_task__trusted) policy as long as all data used to build the artifact is generated from trusted tasks. + This pipeline is pushed as a Tekton bundle to [quay.io](https://quay.io/repository/konflux-ci/tekton-catalog/pipeline-docker-build-oci-ta?tab=tags)_ + finally: + - name: show-sbom + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + taskRef: + params: + - name: name + value: show-sbom + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 + - name: kind + value: task + resolver: bundles + - name: send-slack-notification + params: + - name: message + value: "$(tasks.rhoai-init.results.slack-message-failure-text)" + - name: secret-name + value: slack-secret + - name: key-name + value: slack-webhook + taskRef: + params: + - name: name + value: slack-webhook-notification + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:4e68fe2225debc256d403b828ed358345bb56d03327b46d55cb6c42911375750 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.status) + operator: in + values: + - "Failed" + params: + - description: Source Repository URL + name: git-url + type: string + - default: "" + description: Revision of the Source Repository + name: revision + type: string + - description: Fully Qualified Output Image + name: output-image + type: string + - default: . + description: Path to the source code of an application's component from where to build image. + name: path-context + type: string + - default: Dockerfile + description: Path to the Dockerfile inside the context specified by parameter path-context + name: dockerfile + type: string + - default: "true" + description: Force rebuild image + name: rebuild + type: string + - default: "false" + description: Skip checks against built image + name: skip-checks + type: string + - default: "false" + description: Execute the build with network isolation + name: hermetic + type: string + - default: "" + description: Build dependencies to be prefetched by Cachi2 + name: prefetch-input + type: string + - default: "" + description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. + name: image-expires-after + - default: "false" + description: Build a source image. + name: build-source-image + type: string + - default: "false" + description: Add built image into an OCI image index + name: build-image-index + type: string + - default: [] + description: Array of --build-arg values ("arg=value" strings) for buildah + name: build-args + type: array + - default: "" + description: Path to a file with build arguments for buildah, see https://www.mankier.com/1/buildah-build#--build-arg-file + name: build-args-file + type: string + - default: "false" + description: Whether to enable privileged mode, should be used only with remote VMs + name: privileged-nested + type: string + - default: + - linux/x86_64 + description: List of platforms to build the container images on. The available + set of values is determined by the configuration of the multi-platform-controller. + name: build-platforms + type: array + results: + - description: "" + name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - description: "" + name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - description: "" + name: CHAINS-GIT_URL + value: $(tasks.clone-repository.results.url) + - description: "" + name: CHAINS-GIT_COMMIT + value: $(tasks.clone-repository.results.commit) + tasks: + - name: rhoai-init + params: + - name: pipelinerun-name + value: "$(context.pipelineRun.name)" + taskSpec: + results: + - description: Notification text to be posted to slack + name: slack-message-failure-text + steps: + - image: quay.io/rhoai-konflux/alpine:latest + name: rhoai-init + env: + - name: slack_message + valueFrom: + secretKeyRef: + name: slack-secret + key: slack-component-failure-notification + script: | + pipelinerun_name=$(params.pipelinerun-name) + echo "pipelinerun-name = $pipelinerun_name" + application_name=opendatahub-release + echo "application-name = $application_name" + + component_name=${pipelinerun_name/-on-*/} + echo "component-name = $component_name" + + KONFLUX_SERVER="https://konflux-ui.apps.stone-prd-rh01.pg1f.p1.openshiftapps.com" + build_url="${KONFLUX_SERVER}/ns/open-data-hub-tenant/applications/${application_name}/pipelineruns/${pipelinerun_name}/logs" + + build_time="$(date +%Y-%m-%dT%H:%M:%S)" + + slack_message=${slack_message/__BUILD__URL__/$build_url} + slack_message=${slack_message/__PIPELINERUN__NAME__/$pipelinerun_name} + slack_message=${slack_message/__BUILD__TIME__/$build_time} + + echo -en "${slack_message}" > "$(results.slack-message-failure-text.path)" + - name: init + params: + - name: image-url + value: $(params.output-image) + - name: rebuild + value: $(params.rebuild) + - name: skip-checks + value: $(params.skip-checks) + taskRef: + params: + - name: name + value: init + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 + - name: kind + value: task + resolver: bundles + runAfter: + - rhoai-init + - name: clone-repository + params: + - name: url + value: $(params.git-url) + - name: revision + value: $(params.revision) + - name: ociStorage + value: $(params.output-image).git + - name: ociArtifactExpiresAfter + value: $(params.image-expires-after) + runAfter: + - init + taskRef: + params: + - name: name + value: git-clone-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:be82c55346e8810bd1edc5547f864064da6945979baccca7dfc99990b392a02b + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + workspaces: + - name: basic-auth + workspace: git-auth + - name: prefetch-dependencies + params: + - name: input + value: $(params.prefetch-input) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + - name: ociStorage + value: $(params.output-image).prefetch + - name: ociArtifactExpiresAfter + value: $(params.image-expires-after) + runAfter: + - clone-repository + taskRef: + params: + - name: name + value: prefetch-dependencies-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:ca036c7232f63199824bc1a65126faad834bc3af030e5b8210cb057f4ae97d99 + - name: kind + value: task + resolver: bundles + workspaces: + - name: git-basic-auth + workspace: git-auth + - name: netrc + workspace: netrc + - name: build-container + params: + - name: IMAGE + value: $(params.output-image) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + - name: HERMETIC + value: $(params.hermetic) + - name: PREFETCH_INPUT + value: $(params.prefetch-input) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: BUILD_ARGS + value: + - $(params.build-args[*]) + - name: BUILD_ARGS_FILE + value: $(params.build-args-file) + - name: PRIVILEGED_NESTED + value: $(params.privileged-nested) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + runAfter: + - prefetch-dependencies + taskRef: + params: + - name: name + value: buildah-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:f91db5817f403628dbd268fea69503ba910443ef8d71c86f093776f45f57adb9 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - name: build-image-index + params: + - name: IMAGE + value: $(params.output-image) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: ALWAYS_BUILD_INDEX + value: $(params.build-image-index) + - name: IMAGES + value: + - $(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST) + runAfter: + - build-container + taskRef: + params: + - name: name + value: build-image-index + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - name: build-source-image + params: + - name: BINARY_IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: source-build-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:bfec1fabb0ed7c191e6c85d75e6cc577a04cabe9e6b35f9476529e8e5b3c0c82 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - input: $(params.build-source-image) + operator: in + values: + - "true" + - name: deprecated-base-image-check + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: deprecated-image-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1d07d16810c26713f3d875083924d93697900147364360587ccb5a63f2c31012 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: clair-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clair-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:893ffa3ce26b061e21bb4d8db9ef7ed4ddd4044fe7aa5451ef391034da3ff759 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: ecosystem-cert-preflight-checks + params: + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: ecosystem-cert-preflight-checks + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-snyk-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sast-snyk-check-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:fe5e5ba3a72632cd505910de2eacd62c9d11ed570c325173188f8d568ac60771 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: clamav-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clamav-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-coverity-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE + value: $(params.output-image) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + - name: HERMETIC + value: $(params.hermetic) + - name: PREFETCH_INPUT + value: $(params.prefetch-input) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: BUILD_ARGS + value: + - $(params.build-args[*]) + - name: BUILD_ARGS_FILE + value: $(params.build-args-file) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + runAfter: + - coverity-availability-check + taskRef: + params: + - name: name + value: sast-coverity-check-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:0819ec70412034b7bb7ad2bf0d42b5c0f6904fee66599e03489c33350340c0cb + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - input: $(tasks.coverity-availability-check.results.STATUS) + operator: in + values: + - success + - name: coverity-availability-check + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: coverity-availability-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-coverity-availability-check:0.2@sha256:db2b267dc15e4ed17f704ee91b8e9b38068e1a35b1018a328fdca621819d74c6 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-shell-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sast-shell-check-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:bf7bdde00b7212f730c1356672290af6f38d070da2c8a316987b5c32fd49e0b9 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-unicode-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + - name: CACHI2_ARTIFACT + value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sast-unicode-check-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.3@sha256:a2bde66f6b4164620298c7d709b8f08515409404000fa1dc2260d2508b135651 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: apply-tags + params: + - name: ADDITIONAL_TAGS + value: + - $(params.additional-tags[*]) + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: apply-tags + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 + - name: kind + value: task + resolver: bundles + - name: push-dockerfile + params: + - name: IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: push-dockerfile-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:972990bea93c13f8afd279c0e0d4bd8c2665b48bbb3369b2c43acf194b851f5c + - name: kind + value: task + resolver: bundles + - name: rpms-signature-scan + params: + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: rpms-signature-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1b6c20ab3dbfb0972803d3ebcb2fa72642e59400c77bd66dfd82028bdd09e120 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + workspaces: + - name: git-auth + optional: true + - name: netrc + optional: true diff --git a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml index 22d22ecd14..543a5be67d 100644 --- a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml @@ -36,7 +36,7 @@ spec: - '{{target_branch}}-{{revision}}' - v12.6 pipelineRef: - name: multiarch-pull-request-pipeline + name: multiarch-push-pipeline taskRunTemplate: serviceAccountName: build-pipeline-odh-base-image-cuda-py311-c9s-poc workspaces: diff --git a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml index e9a83838d2..ab0e7f6074 100644 --- a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml @@ -37,7 +37,7 @@ spec: - '{{target_branch}}-{{revision}}' - v12.6 pipelineRef: - name: multiarch-pull-request-pipeline + name: multiarch-push-pipeline taskRunTemplate: serviceAccountName: build-pipeline-odh-base-image-cuda-py312-c9s-poc workspaces: diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index ada2080f24..126909be8e 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -37,7 +37,7 @@ spec: - '{{target_branch}}-{{revision}}' - v12.6 pipelineRef: - name: multiarch-pull-request-pipeline + name: multiarch-push-pipeline taskRunTemplate: serviceAccountName: build-pipeline-odh-base-image-cuda-py312-ubi9-poc workspaces: From 52cee92c24a9c5864941082e598b408df80832ad Mon Sep 17 00:00:00 2001 From: atheo89 Date: Mon, 1 Sep 2025 17:08:02 +0200 Subject: [PATCH 02/47] Update minimal cpu, cuda and rocm flavors to use args --- Makefile | 15 +- cuda/NGC-DL-CONTAINER-LICENSE | 230 ------------------ cuda/cuda.repo-amd64 | 6 - cuda/cuda.repo-arm64 | 6 - .../minimal/ubi9-python-3.12/Dockerfile.cpu | 9 +- .../minimal/ubi9-python-3.12/Dockerfile.cuda | 106 +------- .../minimal/ubi9-python-3.12/Dockerfile.rocm | 41 +--- .../ubi9-python-3.12/build-args/cpu.conf | 1 + .../ubi9-python-3.12/build-args/cuda.conf | 1 + .../ubi9-python-3.12/build-args/rocm.conf | 1 + 10 files changed, 32 insertions(+), 384 deletions(-) delete mode 100644 cuda/NGC-DL-CONTAINER-LICENSE delete mode 100644 cuda/cuda.repo-amd64 delete mode 100644 cuda/cuda.repo-arm64 create mode 100644 jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf create mode 100644 jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf create mode 100644 jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf diff --git a/Makefile b/Makefile index ad3d428d59..07538b1112 100644 --- a/Makefile +++ b/Makefile @@ -67,9 +67,20 @@ endif # ARG 2: Path of Dockerfile we want to build. define build_image $(eval IMAGE_NAME := $(IMAGE_REGISTRY):$(1)-$(IMAGE_TAG)) - $(eval BUILD_ARGS :=) - $(info # Building $(IMAGE_NAME) image...) + # Checks if there’s a build-args/*.conf matching the Dockerfile + $(eval BUILD_DIR := $(dir $(2))) + $(eval DOCKERFILE_NAME := $(notdir $(2))) + $(eval CONF_FILE := $(BUILD_DIR)build-args/$(shell echo $(DOCKERFILE_NAME) | cut -d. -f2).conf) + + # if the conf file exists, transform it into --build-arg KEY=VALUE flags + $(eval BUILD_ARGS := $(shell if [ -f $(CONF_FILE) ]; then \ + while IFS='=' read -r k v; do \ + [ -n "$$k" ] && printf -- "--build-arg %s=%s " "$$k" "$$v"; \ + done < $(CONF_FILE); \ + fi)) + + $(info # Building $(IMAGE_NAME) using $(DOCKERFILE_NAME) with $(CONF_FILE) and $(BUILD_ARGS)...) $(ROOT_DIR)/scripts/sandbox.py --dockerfile '$(2)' --platform '$(BUILD_ARCH)' -- \ $(CONTAINER_ENGINE) build $(CONTAINER_BUILD_CACHE_ARGS) --platform=$(BUILD_ARCH) --label release=$(RELEASE) --tag $(IMAGE_NAME) --file '$(2)' $(BUILD_ARGS) {}\; diff --git a/cuda/NGC-DL-CONTAINER-LICENSE b/cuda/NGC-DL-CONTAINER-LICENSE deleted file mode 100644 index be9eb7558b..0000000000 --- a/cuda/NGC-DL-CONTAINER-LICENSE +++ /dev/null @@ -1,230 +0,0 @@ -NVIDIA DEEP LEARNING CONTAINER LICENSE - -This license is a legal agreement between you and NVIDIA Corporation ("NVIDIA") and governs the use -of the NVIDIA container and all its contents (“CONTAINER”). - -This license can be accepted only by an adult of legal age of majority in the country in which the -CONTAINER is used. If you are under the legal age of majority, you must ask your parent or legal -guardian to consent to this license. If you are entering this license on behalf of a company or -other legal entity, you represent that you have legal authority and “you” will mean the entity you -represent. - -By using the CONTAINER, you affirm that you have reached the legal age of majority, you accept the -terms of this license, and you take legal and financial responsibility for the actions of your -permitted users. - -You agree to use the CONTAINER only for purposes that are permitted by (a) this license, and (b) any -applicable law, regulation or generally accepted practices or guidelines in the relevant -jurisdictions. - -1. LICENSE. Subject to the terms of this license, NVIDIA hereby grants you a non-exclusive, -non-transferable license, without the right to sublicense (except as expressly provided in this -license) to: - -a. Install and use copies of the CONTAINER, and modify and create derivative works of samples or -example source code delivered in the CONTAINER (if applicable), to develop and test services and -applications, - -b. Deploy the CONTAINER on infrastructure you own or lease to offer a service to third parties, -without distributing the CONTAINER or exposing the NVIDIA APIs in the CONTAINER directly to such -service users, and - -c. Develop and extend the CONTAINER to create a Compatible (as defined below) derived CONTAINER that -includes the entire CONTAINER plus other software with primary functionality, to develop and compile -applications, and distribute such derived CONTAINER to run applications, subject to the distribution -requirements indicated in this license. As used in this section, “Compatible” means that extensions -to the CONTAINER must not adversely affect the functionality of the other components in the -CONTAINER. - -2. DISTRIBUTION REQUIREMENTS. For purposes of this Section 2, the term “distribution” also means the -deployment of CONTAINERS in a service or an application for third parties to access over the -internet. These are the distribution requirements for you to exercise the grants above: - -a. A service or an application must have material additional functionality, beyond the included -portions of the CONTAINER. - -b. The following notice shall be included in modifications and derivative works of source code -distributed: “This software contains source code provided by NVIDIA Corporation.” - -c. You agree to distribute the CONTAINER subject to the terms at least as protective as the terms of -this license, including (without limitation) terms relating to the license grant, license -restrictions and protection of NVIDIA’s intellectual property rights. Additionally, you agree that -you will protect the privacy, security and legal rights of your application users. - -d. You agree to notify NVIDIA in writing of any known or suspected distribution or use of the -CONTAINER not in compliance with the requirements of this license, and to enforce the terms of your -agreements with respect to the distributed CONTAINER. - -3. AUTHORIZED USERS. You may allow employees and contractors of your entity or of your -subsidiary(ies) to access and use the CONTAINER from your secure network to perform work on your -behalf. If you are an academic institution you may allow users enrolled or employed by the academic -institution to access and use the CONTAINER from your secure network. You are responsible for the -compliance with the terms of this license by your authorized users. - -4. LIMITATIONS. Your license to use the CONTAINER is restricted as follows: - -a. The CONTAINER is licensed for you to develop services and applications only for their use in -systems with NVIDIA GPUs. - -b. You may not reverse engineer, decompile or disassemble, or remove copyright or other proprietary -notices from any portion of the CONTAINER or copies of the CONTAINER. - -c. Except as expressly provided in this license, you may not copy, sell, rent, sublicense, transfer, -distribute, modify, or create derivative works of any portion of the CONTAINER. For clarity, you may -not distribute or sublicense the CONTAINER as a stand-alone product. - -d. Unless you have an agreement with NVIDIA for this purpose, you may not indicate that a service or -an application created with the CONTAINER is sponsored or endorsed by NVIDIA. - -e. You may not bypass, disable, or circumvent any technical limitation, encryption, security, -digital rights management or authentication mechanism in the CONTAINER. - -f. You may not replace any NVIDIA software components in the CONTAINER that are governed by this -license with other software that implements NVIDIA APIs. - -g. You may not use the CONTAINER in any manner that would cause it to become subject to an open -source software license. As examples, licenses that require as a condition of use, modification, -and/or distribution that the CONTAINER be: (i) disclosed or distributed in source code form; (ii) -licensed for the purpose of making derivative works; or (iii) redistributable at no charge. - -h. Unless you have an agreement with NVIDIA for this purpose, you may not use the CONTAINER with any -system or application where the use or failure of the system or application can reasonably be -expected to threaten or result in personal injury, death, or catastrophic loss. Examples include use -in avionics, navigation, military, medical, life support or other life critical applications. NVIDIA -does not design, test or manufacture the CONTAINER for these critical uses and NVIDIA shall not be -liable to you or any third party, in whole or in part, for any claims or damages arising from such -uses. - -i. You agree to defend, indemnify and hold harmless NVIDIA and its affiliates, and their respective -employees, contractors, agents, officers and directors, from and against any and all claims, -damages, obligations, losses, liabilities, costs or debt, fines, restitutions and expenses -(including but not limited to attorney’s fees and costs incident to establishing the right of -indemnification) arising out of or related to your use of the CONTAINER outside of the scope of this -license, or not in compliance with its terms. - -5. UPDATES. NVIDIA may, at its option, make available patches, workarounds or other updates to this -CONTAINER. Unless the updates are provided with their separate governing terms, they are deemed part -of the CONTAINER licensed to you as provided in this license. You agree that the form and content of -the CONTAINER that NVIDIA provides may change without prior notice to you. While NVIDIA generally -maintains compatibility between versions, NVIDIA may in some cases make changes that introduce -incompatibilities in future versions of the CONTAINER. - -6. PRE-RELEASE VERSIONS. CONTAINER versions identified as alpha, beta, preview, early access or -otherwise as pre-release may not be fully functional, may contain errors or design flaws, and may -have reduced or different security, privacy, availability, and reliability standards relative to -commercial versions of NVIDIA software and materials. You may use a pre-release CONTAINER version at -your own risk, understanding that these versions are not intended for use in production or -business-critical systems. NVIDIA may choose not to make available a commercial version of any -pre-release CONTAINER. NVIDIA may also choose to abandon development and terminate the availability -of a pre-release CONTAINER at any time without liability. - -7. THIRD-PARTY COMPONENTS. The CONTAINER may include third-party components with separate legal -notices or terms as may be described in proprietary notices accompanying the CONTAINER. If and to -the extent there is a conflict between the terms in this license and the third-party license terms, -the third-party terms control only to the extent necessary to resolve the conflict. - -You acknowledge and agree that it is your sole responsibility to obtain any additional third-party -licenses required to make, have made, use, have used, sell, import, and offer for sale your products -or services that include or incorporate any third-party software and content relating to audio -and/or video encoders and decoders from, including but not limited to, Microsoft, Thomson, -Fraunhofer IIS, Sisvel S.p.A., MPEG-LA, and Coding Technologies. NVIDIA does not grant to you under -this license any necessary patent or other rights with respect to any audio and/or video encoders -and decoders. - -Subject to the other terms of this license, you may use the CONTAINER to develop and test -applications released under Open Source Initiative (OSI) approved open source software licenses. - -8. OWNERSHIP. - -8.1 NVIDIA reserves all rights, title and interest in and to the CONTAINER not expressly granted to -you under this license. NVIDIA and its suppliers hold all rights, title and interest in and to the -CONTAINER, including their respective intellectual property rights. The CONTAINER is copyrighted and -protected by the laws of the United States and other countries, and international treaty provisions. - -8.2 Subject to the rights of NVIDIA and its suppliers in the CONTAINER, you hold all rights, title -and interest in and to your services, applications and your derivative works of the sample source -code delivered in the CONTAINER including their respective intellectual property rights. - -9. FEEDBACK. You may, but are not obligated to, provide to NVIDIA suggestions, fixes, modifications, -feature requests or other feedback regarding the CONTAINER (“Feedback”). Feedback, even if -designated as confidential by you, shall not create any confidentiality obligation for NVIDIA. -NVIDIA and its designees have a perpetual, non-exclusive, worldwide, irrevocable license to use, -reproduce, publicly display, modify, create derivative works of, license, sublicense, and otherwise -distribute and exploit Feedback as NVIDIA sees fit without payment and without obligation or -restriction of any kind on account of intellectual property rights or otherwise. - -10. NO WARRANTIES. THE CONTAINER IS PROVIDED AS-IS. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE -LAW NVIDIA AND ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND OR NATURE, WHETHER -EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, -NON-INFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. NVIDIA DOES NOT WARRANT THAT THE CONTAINER -WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION THEREOF WILL BE UNINTERRUPTED OR ERROR-FREE, OR -THAT ALL ERRORS WILL BE CORRECTED. - -11. LIMITATIONS OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW NVIDIA AND ITS -AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR -FOR ANY LOST PROFITS, PROJECT DELAYS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF -PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS LICENSE OR THE USE OR -PERFORMANCE OF THE CONTAINER, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH OF -CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF -ACTION OR THEORY OF LIABILITY, EVEN IF NVIDIA HAS PREVIOUSLY BEEN ADVISED OF, OR COULD REASONABLY -HAVE FORESEEN, THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES TOTAL -CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS LICENSE EXCEED US$10.00. THE NATURE OF THE -LIABILITY OR THE NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS LIMIT. - -12. TERMINATION. Your rights under this license will terminate automatically without notice from -NVIDIA if you fail to comply with any term and condition of this license or if you commence or -participate in any legal proceeding against NVIDIA with respect to the CONTAINER. NVIDIA may -terminate this license with advance written notice to you, if NVIDIA decides to no longer provide -the CONTAINER in a country or, in NVIDIA’s sole discretion, the continued use of it is no longer -commercially viable. Upon any termination of this license, you agree to promptly discontinue use of -the CONTAINER and destroy all copies in your possession or control. Your prior distributions in -accordance with this license are not affected by the termination of this license. All provisions of -this license will survive termination, except for the license granted to you. - -13. APPLICABLE LAW. This license will be governed in all respects by the laws of the United States -and of the State of Delaware, without regard to the conflicts of laws principles. The United Nations -Convention on Contracts for the International Sale of Goods is specifically disclaimed. You agree to -all terms of this license in the English language. The state or federal courts residing in Santa -Clara County, California shall have exclusive jurisdiction over any dispute or claim arising out of -this license. Notwithstanding this, you agree that NVIDIA shall still be allowed to apply for -injunctive remedies or urgent legal relief in any jurisdiction. - -14. NO ASSIGNMENT. This license and your rights and obligations thereunder may not be assigned by -you by any means or operation of law without NVIDIA’s permission. Any attempted assignment not -approved by NVIDIA in writing shall be void and of no effect. NVIDIA may assign, delegate or -transfer this license and its rights and obligations, and if to a non-affiliate you will be -notified. - -15. EXPORT. The CONTAINER is subject to United States export laws and regulations. You agree to -comply with all applicable - -U.S. and international export laws, including the Export Administration Regulations (EAR) -administered by the U.S. Department of Commerce and economic sanctions administered by the U.S. -Department of Treasury’s Office of Foreign Assets Control (OFAC). These laws include restrictions on -destinations, end-users and end-use. By accepting this license, you confirm that you are not -currently residing in a country or region currently embargoed by the U.S. and that you are not -otherwise prohibited from receiving the CONTAINER. - -16. GOVERNMENT USE. The CONTAINER is, and shall be treated as being, “Commercial Items” as that term -is defined at 48 CFR § 2.101, consisting of “commercial computer software” and “commercial computer -software documentation”, respectively, as such terms are used in, respectively, 48 CFR § 12.212 and -48 CFR §§ 227.7202 & 252.227-7014(a)(1). Use, duplication or disclosure by the U.S. Government or a -U.S. Government subcontractor is subject to the restrictions in this license pursuant to 48 CFR § -12.212 or 48 CFR § 227.7202. In no event shall the US Government user acquire rights in the -CONTAINER beyond those specified in 48 C.F.R. 52.227-19(b)(1)-(2). - -17. NOTICES. Please direct your legal notices or other correspondence to NVIDIA Corporation, 2788 -San Tomas Expressway, Santa Clara, California 95051, United States of America, Attention: Legal -Department. - -18. ENTIRE AGREEMENT. This license is the final, complete and exclusive agreement between the -parties relating to the subject matter of this license and supersedes all prior or contemporaneous -understandings and agreements relating to this subject matter, whether oral or written. If any court -of competent jurisdiction determines that any provision of this license is illegal, invalid or -unenforceable, the remaining provisions will remain in full force and effect. Any amendment or -waiver under this license shall be in writing and signed by representatives of both parties. - -19. LICENSING. If the distribution terms in this license are not suitable for your organization, or -for any questions regarding this license, please contact NVIDIA at nvidia-compute-license-questions@nvidia.com. - -(v. December 4, 2020) diff --git a/cuda/cuda.repo-amd64 b/cuda/cuda.repo-amd64 deleted file mode 100644 index f7fb7a4f8b..0000000000 --- a/cuda/cuda.repo-amd64 +++ /dev/null @@ -1,6 +0,0 @@ -[cuda] -name=cuda -baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64 -enabled=1 -gpgcheck=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA diff --git a/cuda/cuda.repo-arm64 b/cuda/cuda.repo-arm64 deleted file mode 100644 index b17064ff09..0000000000 --- a/cuda/cuda.repo-arm64 +++ /dev/null @@ -1,6 +0,0 @@ -[cuda] -name=cuda-sbsa -baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel9/sbsa -enabled=1 -gpgcheck=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu index c8166a216c..3004dc926f 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,10 @@ #################### -# base # +# cpu-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -33,7 +36,7 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc #################### # jupyter-minimal # #################### -FROM base AS jupyter-minimal +FROM cpu-base AS jupyter-minimal ARG JUPYTER_REUSABLE_UTILS=jupyter/utils ARG MINIMAL_SOURCE_CODE=jupyter/minimal/ubi9-python-3.12 diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda index 419c030bf0..c8280f9a80 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,10 @@ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,105 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-jupyter-minimal # ######################### diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm index f7e13511f1..a810369ad2 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm @@ -1,7 +1,10 @@ #################### -# base # +# rocm-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS rocm-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,40 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -######################## -# rocm-base # -######################## -FROM base AS rocm-base - -USER 0 -WORKDIR /opt/app-root/bin - -# Please keep in sync with ROCm/python3.12 dependent images -ARG ROCM_VERSION=6.2.4 -ARG AMDGPU_VERSION=6.2.4 - -# Install the ROCm rpms -# ref: https://github.com/ROCm/ROCm-docker/blob/master/dev/Dockerfile-centos-7-complete -# Note: Based on 6.2 above new package mivisionx is a pre-requistes, which bring in more dependent packages -# so we are only installing meta packages of rocm -# ref: https://rocm.docs.amd.com/projects/install-on-linux/en/develop/reference/package-manager-integration.html#packages-in-rocm-programming-models -RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ - echo "name=ROCm" >> /etc/yum.repos.d/rocm.repo && \ - echo "baseurl=https://repo.radeon.com/rocm/rhel9/$ROCM_VERSION/main" >> /etc/yum.repos.d/rocm.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/rocm.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/rocm.repo && \ - echo "[amdgpu]" > /etc/yum.repos.d/amdgpu.repo && \ - echo "name=amdgpu" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - dnf clean all && rm -rf /var/cache/yum - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################## # rocm-jupyter-minimal # ######################## diff --git a/jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf b/jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest diff --git a/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf b/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 diff --git a/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf b/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf new file mode 100644 index 0000000000..d706d2d972 --- /dev/null +++ b/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf @@ -0,0 +1 @@ +BASE_IMAGE=#TODO From 80a5cbb84a70d61249ed824fa193db01d6966dfd Mon Sep 17 00:00:00 2001 From: atheo89 Date: Mon, 1 Sep 2025 17:24:07 +0200 Subject: [PATCH 03/47] Update runtime minimal Dockefile to use ARG --- runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu | 9 ++++++--- runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf diff --git a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu index 4931a57b7f..5f854886db 100644 --- a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,10 @@ #################### -# base # +# cpu-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -40,7 +43,7 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc #################### # runtime-minimal # #################### -FROM base AS runtime-minimal +FROM cpu-base AS runtime-minimal ARG MINIMAL_SOURCE_CODE=runtimes/minimal/ubi9-python-3.12 diff --git a/runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf b/runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest From d73e65c47e79fc37cdcfdc244f3c9aab6d7be296 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Mon, 1 Sep 2025 17:34:36 +0200 Subject: [PATCH 04/47] Update pipelines to consume build-args file --- .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml | 4 +++- .../odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml | 4 +++- .../odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml | 4 +++- .../odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml index fbf45b01af..0564ba2278 100644 --- a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/minimal/ubi9-python-3.12/**".pathChanged() || ".tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/minimal/ubi9-python-3.12/**".pathChanged() || "runtimes/minimal/build-args/cpu.conf".pathChanged() || ".tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-push.yaml".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-minimal-cpu-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: runtimes/minimal/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml index c93e9e8b27..99df0af1c9 100644 --- a/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-minimal-cpu-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml index 74b17e7904..86b7b37de7 100644 --- a/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-minimal-cuda-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml index 6559ade658..b95c42970e 100644 --- a/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +29,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-minimal-rocm-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf - name: path-context value: . - name: additional-tags From 03f1dd76005d2be320501810733624f882b4fd41 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Mon, 1 Sep 2025 18:21:15 +0200 Subject: [PATCH 05/47] Update Datascience and its runtime to use arg base_image as well as update its push pipelines --- ...ine-runtime-datascience-cpu-py312-ubi9-push.yaml | 4 +++- ...nch-jupyter-datascience-cpu-py312-ubi9-push.yaml | 4 +++- jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu | 13 ++++++++----- .../ubi9-python-3.12/build-args/cpu.conf | 1 + .../datascience/ubi9-python-3.12/Dockerfile.cpu | 9 ++++++--- .../ubi9-python-3.12/build-args/cpu.conf | 1 + 6 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf create mode 100644 runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf diff --git a/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml index 3b855a22fb..1174871ff3 100644 --- a/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/datascience/ubi9-python-3.12/**".pathChanged() || ".tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/datascience/ubi9-python-3.12/**".pathChanged() || "runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() || ".tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-push.yaml".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-datascience-cpu-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml index 1e831c5ae1..f577411114 100644 --- a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-datascience-cpu-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu index a6f7341aae..8ea46093f9 100644 --- a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -11,10 +11,13 @@ RUN unzip ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ -######################## -# base # -######################## -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +#################### +# cpu-base # +#################### +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -46,7 +49,7 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc #################### # jupyter-minimal # #################### -FROM base AS jupyter-minimal +FROM cpu-base AS jupyter-minimal ARG JUPYTER_REUSABLE_UTILS=jupyter/utils ARG MINIMAL_SOURCE_CODE=jupyter/minimal/ubi9-python-3.12 diff --git a/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf b/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest diff --git a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu index ef9f3fa05f..02f6c373b2 100644 --- a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,10 @@ #################### -# base # +# cpu-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -33,7 +36,7 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc ####################### # runtime-datascience # ####################### -FROM base AS runtime-datascience +FROM cpu-base AS runtime-datascience ARG DATASCIENCE_SOURCE_CODE=runtimes/datascience/ubi9-python-3.12 diff --git a/runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf b/runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest From a801c39f6e459597ae40ea7c1033b5fb5d1bc55f Mon Sep 17 00:00:00 2001 From: atheo89 Date: Mon, 1 Sep 2025 18:34:13 +0200 Subject: [PATCH 06/47] Update pytorch cuda and its runtime as well as its tekton pipelines --- ...-runtime-pytorch-cuda-py312-ubi9-push.yaml | 5 +- ...-jupyter-pytorch-cuda-py312-ubi9-push.yaml | 4 +- .../pytorch/ubi9-python-3.12/Dockerfile.cuda | 108 +----------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + .../pytorch/ubi9-python-3.12/Dockerfile.cuda | 106 +---------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + 6 files changed, 19 insertions(+), 206 deletions(-) create mode 100644 jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf create mode 100644 runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf diff --git a/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml index 0cb8b296c6..e2785d9fe0 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml @@ -1,6 +1,5 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} @@ -9,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/pytorch/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/pytorch/ubi9-python-3.12/**".pathChanged() || "runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +28,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-pytorch-cuda-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml index f6bc718416..c21e22b6df 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/pytorch/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/pytorch/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-pytorch-cuda-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda index cc8eabc295..a45180b88c 100644 --- a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -12,9 +12,12 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -43,105 +46,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-jupyter-minimal # ######################### @@ -203,7 +107,7 @@ COPY ${DATASCIENCE_SOURCE_CODE}/setup-elyra.sh ${DATASCIENCE_SOURCE_CODE}/utils WORKDIR /opt/app-root/src ############################# -# cuda-jupyter-pytorch # +# cuda-jupyter-pytorch # ############################# FROM cuda-jupyter-datascience AS cuda-jupyter-pytorch diff --git a/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf b/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 diff --git a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda index bd77972cf6..e15110cf0d 100644 --- a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,10 @@ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,105 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-runtime-pytorch # ######################### diff --git a/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf b/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 From 6027bcfac9330c520fcec3e9636bc36f1e26bdd0 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 11:14:12 +0200 Subject: [PATCH 07/47] Update pytorch_llmcompressor and its runtime as well as the tekton pipilines --- ...ch-llmcompressor-cuda-py312-ubi9-push.yaml | 5 +- ...ch-llmcompressor-cuda-py312-ubi9-push.yaml | 4 +- .../ubi9-python-3.12/Dockerfile.cuda | 106 +----------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + .../ubi9-python-3.12/Dockerfile.cuda | 106 +----------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + 6 files changed, 18 insertions(+), 205 deletions(-) create mode 100644 jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf create mode 100644 runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf diff --git a/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml index 8448978fac..bf465fcc8e 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml @@ -1,6 +1,5 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} @@ -9,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +28,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml index 56ce28ab06..5577205350 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index 87003950f3..a17940e4fc 100644 --- a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -12,9 +12,12 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -43,105 +46,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-jupyter-minimal # ######################### diff --git a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 diff --git a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index 57bfec60e8..36e6d8fbc9 100644 --- a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,10 @@ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,105 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-runtime-pytorch # ######################### diff --git a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 From dbb5ee55615350195c6787a660955ea95585ff51 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 11:51:39 +0200 Subject: [PATCH 08/47] Update pytorch rocm and its runtime as well as the tekton pipelines --- ...-runtime-pytorch-rocm-py312-ubi9-push.yaml | 4 +- ...-jupyter-pytorch-rocm-py312-ubi9-push.yaml | 4 +- .../pytorch/ubi9-python-3.12/Dockerfile.rocm | 42 +++---------------- .../ubi9-python-3.12/build-args/rocm.conf | 1 + .../ubi9-python-3.12/Dockerfile.rocm | 41 +++--------------- .../ubi9-python-3.12/build-args/rocm.conf | 1 + 6 files changed, 18 insertions(+), 75 deletions(-) create mode 100644 jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf create mode 100644 runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf diff --git a/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml index 442113108c..efcfe50778 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml".pathChanged() || "runtimes/rocm-pytorch/ubi9-python-3.12/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml".pathChanged() || "runtimes/rocm-pytorch/ubi9-python-3.12/**".pathChanged() || "runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -28,6 +28,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-pytorch-rocm-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm + - name: build-args-file + value: runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml index 0f83df3646..d6a34d7d36 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/rocm/pytorch/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/rocm/pytorch/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-pytorch-rocm-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm + - name: build-args-file + value: jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm index d3671c29af..6a8268c9c3 100644 --- a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -12,9 +12,12 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ #################### -# base # +# rocm-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS rocm-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -43,40 +46,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -######################## -# rocm-base # -######################## -FROM base AS rocm-base - -USER 0 -WORKDIR /opt/app-root/bin - -# Please keep in sync with ROCm/python3.12 dependent images -ARG ROCM_VERSION=6.2.4 -ARG AMDGPU_VERSION=6.2.4 - -# Install the ROCm rpms -# ref: https://github.com/ROCm/ROCm-docker/blob/master/dev/Dockerfile-centos-7-complete -# Note: Based on 6.2 above new package mivisionx is a pre-requistes, which bring in more dependent packages -# so we are only installing meta packages of rocm -# ref: https://rocm.docs.amd.com/projects/install-on-linux/en/develop/reference/package-manager-integration.html#packages-in-rocm-programming-models -RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ - echo "name=ROCm" >> /etc/yum.repos.d/rocm.repo && \ - echo "baseurl=https://repo.radeon.com/rocm/rhel9/$ROCM_VERSION/main" >> /etc/yum.repos.d/rocm.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/rocm.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/rocm.repo && \ - echo "[amdgpu]" > /etc/yum.repos.d/amdgpu.repo && \ - echo "name=amdgpu" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - dnf clean all && rm -rf /var/cache/yum - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################## # rocm-jupyter-minimal # ######################## @@ -137,7 +106,6 @@ COPY ${DATASCIENCE_SOURCE_CODE}/setup-elyra.sh ${DATASCIENCE_SOURCE_CODE}/utils WORKDIR /opt/app-root/src - ######################## # rocm-jupyter-pytorch # ######################## diff --git a/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf b/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf new file mode 100644 index 0000000000..d706d2d972 --- /dev/null +++ b/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf @@ -0,0 +1 @@ +BASE_IMAGE=#TODO diff --git a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm index 1c998aa6ac..de81de6dfd 100644 --- a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -1,7 +1,10 @@ #################### -# base # +# rocm-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS rocm-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,40 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -############# -# rocm-base # -############# -FROM base AS rocm-base - -USER 0 -WORKDIR /opt/app-root/bin - -# Please keep in sync with ROCm/python3.12 dependent images -ARG ROCM_VERSION=6.2.4 -ARG AMDGPU_VERSION=6.2.4 - -# Install the ROCm rpms -# ref: https://github.com/ROCm/ROCm-docker/blob/master/dev/Dockerfile-centos-7-complete -# Note: Based on 6.2 above new package mivisionx is a pre-requistes, which bring in more dependent packages -# so we are only installing meta packages of rocm -# ref: https://rocm.docs.amd.com/projects/install-on-linux/en/develop/reference/package-manager-integration.html#packages-in-rocm-programming-models -RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ - echo "name=ROCm" >> /etc/yum.repos.d/rocm.repo && \ - echo "baseurl=https://repo.radeon.com/rocm/rhel9/$ROCM_VERSION/main" >> /etc/yum.repos.d/rocm.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/rocm.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/rocm.repo && \ - echo "[amdgpu]" > /etc/yum.repos.d/amdgpu.repo && \ - echo "name=amdgpu" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - dnf clean all && rm -rf /var/cache/yum - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################## # rocm-runtime-pytorch # ######################## diff --git a/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf b/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf new file mode 100644 index 0000000000..d706d2d972 --- /dev/null +++ b/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf @@ -0,0 +1 @@ +BASE_IMAGE=#TODO From 23b1046856ed5801b3a0dc61d174176c10bbb036 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 12:16:54 +0200 Subject: [PATCH 09/47] Update tensorflow-rocm and its runtime as well as the tekton pipilines --- ...ntime-tensorflow-rocm-py312-ubi9-push.yaml | 4 +- ...pyter-tensorflow-rocm-py312-ubi9-push.yaml | 4 +- .../ubi9-python-3.12/Dockerfile.rocm | 53 ++----------------- .../ubi9-python-3.12/build-args/rocm.conf | 1 + .../ubi9-python-3.12/Dockerfile.rocm | 41 ++------------ .../ubi9-python-3.12/build-args/rocm.conf | 1 + 6 files changed, 18 insertions(+), 86 deletions(-) create mode 100644 jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf create mode 100644 runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf diff --git a/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml index 00e585f062..6b32228a4f 100644 --- a/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml".pathChanged() || "runtimes/rocm-tensorflow/ubi9-python-3.12/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-push.yaml".pathChanged() || "runtimes/rocm-tensorflow/ubi9-python-3.12/**".pathChanged() || "runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +29,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm + - name: build-args-file + value: runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml index 9aae567de8..322e3ac2c9 100644 --- a/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/rocm/tensorflow/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-push.yaml".pathChanged() || "jupyter/rocm/tensorflow/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -28,6 +28,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm + - name: build-args-file + value: jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm index 8dfee5343c..ca0859167d 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm @@ -12,9 +12,12 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ #################### -# base # +# rocm-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS rocm-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -43,51 +46,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -############# -# rocm-base # -############# -FROM base AS rocm-base - -USER 0 -WORKDIR /opt/app-root/bin - -# Please keep in sync with ROCm/python3.12 dependent images -ARG ROCM_VERSION=6.4.3 -ARG AMDGPU_VERSION=6.4.3 - -# Install the ROCm rpms -# ref: https://github.com/ROCm/ROCm-docker/blob/master/dev/Dockerfile-centos-7-complete -# docs: https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/install-methods/package-manager/package-manager-rhel.html#registering-rocm-repositories -# Note: Based on 6.4 above new package mivisionx is a pre-requistes, which bring in more dependent packages -# so we are only installing meta packages of rocm -# ref: https://rocm.docs.amd.com/projects/install-on-linux/en/develop/reference/package-manager-integration.html#packages-in-rocm-programming-models -RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ - echo "name=ROCm" >> /etc/yum.repos.d/rocm.repo && \ - echo "baseurl=https://repo.radeon.com/rocm/el9/${ROCM_VERSION}/main" >> /etc/yum.repos.d/rocm.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/rocm.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/rocm.repo && \ - echo "[amdgpu]" > /etc/yum.repos.d/amdgpu.repo && \ - echo "name=amdgpu" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "baseurl=https://repo.radeon.com/amdgpu/${AMDGPU_VERSION}/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - dnf install -y 'https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm' && \ - dnf clean all && dnf makecache && \ - dnf install -y rocm-developer-tools rocm-ml-sdk rocm-openmp-sdk rocm-utils && \ - dnf clean all && rm -rf /var/cache/dnf - -# https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/post-install.html#configure-rocm-shared-objects -RUN tee --append /etc/ld.so.conf.d/rocm.conf < /etc/yum.repos.d/rocm.repo && \ - echo "name=ROCm" >> /etc/yum.repos.d/rocm.repo && \ - echo "baseurl=https://repo.radeon.com/rocm/rhel9/$ROCM_VERSION/main" >> /etc/yum.repos.d/rocm.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/rocm.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/rocm.repo && \ - echo "[amdgpu]" > /etc/yum.repos.d/amdgpu.repo && \ - echo "name=amdgpu" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ - echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - dnf clean all && rm -rf /var/cache/yum - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ########################### # rocm-runtime-tensorflow # ########################### diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf b/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf new file mode 100644 index 0000000000..d706d2d972 --- /dev/null +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf @@ -0,0 +1 @@ +BASE_IMAGE=#TODO From f22448276938535be66e5fab697eb721c88ee362 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 12:24:50 +0200 Subject: [PATCH 10/47] Update tensorflow and its runtime as well as the tekton pipelines --- ...ntime-tensorflow-cuda-py312-ubi9-push.yaml | 4 +- ...pyter-tensorflow-cuda-py312-ubi9-push.yaml | 4 +- .../ubi9-python-3.12/Dockerfile.cuda | 106 +---------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + .../ubi9-python-3.12/Dockerfile.cuda | 111 +----------------- .../ubi9-python-3.12/build-args/cuda.conf | 1 + 6 files changed, 18 insertions(+), 209 deletions(-) create mode 100644 jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf create mode 100644 runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf diff --git a/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml b/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml index 3b6d30c41e..959e59f7f0 100644 --- a/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/tensorflow/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-push.yaml".pathChanged() || "runtimes/tensorflow/ubi9-python-3.12/**".pathChanged() || "runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +29,8 @@ spec: value: quay.io/opendatahub/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9:{{revision}} - name: dockerfile value: runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml index cd7e650d6f..354bf0bda7 100644 --- a/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/tensorflow/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-push.yaml".pathChanged() || "jupyter/tensorflow/ubi9-python-3.12/**".pathChanged() || "jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda + - name: build-args-file + value: jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda index 2b420f98d4..56b7761b2b 100644 --- a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda @@ -12,9 +12,12 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -43,105 +46,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ######################### # cuda-jupyter-minimal # ######################### diff --git a/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf b/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 diff --git a/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda b/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda index 288bfbca76..e7c6ab0d28 100644 --- a/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,10 @@ #################### -# base # +# cuda-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -30,110 +33,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# hdf5 is needed for h5py -RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ - dnf install -y hdf5-devel && \ - dnf clean all - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ############################ # cuda-runtime-tensorflow # ############################ diff --git a/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf b/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf new file mode 100644 index 0000000000..11ae221e69 --- /dev/null +++ b/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 From e06b68ce31345d4713b8c0cf1b8f2b7231c27b83 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 12:28:54 +0200 Subject: [PATCH 11/47] Update trusty and its tekton pipeline --- ...orkbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml | 4 +++- jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu | 11 ++++++----- jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf diff --git a/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml index e545b20b5b..7c0c70eb37 100644 --- a/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/trustyai/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/trustyai/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -28,6 +28,8 @@ spec: value: quay.io/opendatahub/odh-workbench-jupyter-trustyai-cpu-py312-ubi9:{{revision}} - name: dockerfile value: jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu b/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu index 246f6e2172..b20378932a 100644 --- a/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu @@ -11,10 +11,11 @@ RUN unzip ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ -######################## -# base # -######################## -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +#################### +# cpu-base # +#################### +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin @@ -46,7 +47,7 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc #################### # jupyter-minimal # #################### -FROM base AS jupyter-minimal +FROM cpu-base AS jupyter-minimal ARG JUPYTER_REUSABLE_UTILS=jupyter/utils ARG MINIMAL_SOURCE_CODE=jupyter/minimal/ubi9-python-3.12 diff --git a/jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf b/jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest From 2270a472ed93963d28fa8ba62a6e10b2bc972c12 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 12:33:29 +0200 Subject: [PATCH 12/47] Update codeserver as well as its pipeline --- ...kbench-codeserver-datascience-cpu-py312-ubi9-push.yaml | 4 +++- codeserver/ubi9-python-3.12/Dockerfile.cpu | 8 ++++---- codeserver/ubi9-python-3.12/build-args/cpu.conf | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 codeserver/ubi9-python-3.12/build-args/cpu.conf diff --git a/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml b/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml index 590068ff74..b34bb43b72 100644 --- a/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "codeserver/ubi9-python-3.12/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "codeserver/ubi9-python-3.12/**".pathChanged() || "codeserver/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -26,6 +26,8 @@ spec: value: quay.io/opendatahub/odh-workbench-codeserver-datascience-cpu-py312-ubi9:{{revision}} - name: dockerfile value: codeserver/ubi9-python-3.12/Dockerfile.cpu + - name: build-args-file + value: codeserver/ubi9-python-3.12/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/codeserver/ubi9-python-3.12/Dockerfile.cpu b/codeserver/ubi9-python-3.12/Dockerfile.cpu index 9141f8064e..261f38c2c2 100644 --- a/codeserver/ubi9-python-3.12/Dockerfile.cpu +++ b/codeserver/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,8 @@ #################### -# base # +# cpu-base # #################### -FROM registry.access.redhat.com/ubi9/python-312:latest AS base +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin @@ -30,11 +31,10 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end - #################### # codeserver # #################### -FROM base AS codeserver +FROM cpu-base AS codeserver ARG TARGETOS TARGETARCH diff --git a/codeserver/ubi9-python-3.12/build-args/cpu.conf b/codeserver/ubi9-python-3.12/build-args/cpu.conf new file mode 100644 index 0000000000..cc7c73581a --- /dev/null +++ b/codeserver/ubi9-python-3.12/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest From f71bc1881d8bd3634f72fb84bd4042fce59781ae Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 14:17:03 +0200 Subject: [PATCH 13/47] Update RStudio c9s flavos and its pipelines --- ...ch-rstudio-minimal-cpu-py311-c9s-push.yaml | 4 +- ...h-rstudio-minimal-cuda-py311-c9s-push.yaml | 4 +- rstudio/c9s-python-3.11/Dockerfile.cpu | 11 +- rstudio/c9s-python-3.11/Dockerfile.cuda | 114 ++---------------- rstudio/c9s-python-3.11/build-args/cpu.conf | 1 + rstudio/c9s-python-3.11/build-args/cuda.conf | 1 + 6 files changed, 21 insertions(+), 114 deletions(-) create mode 100644 rstudio/c9s-python-3.11/build-args/cpu.conf create mode 100644 rstudio/c9s-python-3.11/build-args/cuda.conf diff --git a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml index eaff72e6ed..9261eee99f 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +29,8 @@ spec: value: quay.io/opendatahub/odh-workbench-rstudio-minimal-cpu-py311-c9s:{{revision}} - name: dockerfile value: rstudio/c9s-python-3.11/Dockerfile.cpu + - name: build-args-file + value: rstudio/c9s-python-3.11/build-args/cpu.conf - name: path-context value: . - name: additional-tags diff --git a/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml b/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml index 73e984e44a..65336cd13f 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || "rstudio/c9s-python-3.11/build-args/cuda.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release @@ -29,6 +29,8 @@ spec: value: quay.io/opendatahub/odh-workbench-rstudio-minimal-cuda-py311-c9s:{{revision}} - name: dockerfile value: rstudio/c9s-python-3.11/Dockerfile.cuda + - name: build-args-file + value: rstudio/c9s-python-3.11/build-args/cuda.conf - name: path-context value: . - name: additional-tags diff --git a/rstudio/c9s-python-3.11/Dockerfile.cpu b/rstudio/c9s-python-3.11/Dockerfile.cpu index cf0a8a395e..279828f28a 100644 --- a/rstudio/c9s-python-3.11/Dockerfile.cpu +++ b/rstudio/c9s-python-3.11/Dockerfile.cpu @@ -1,7 +1,8 @@ -##################### -# base # -##################### -FROM quay.io/sclorg/python-311-c9s:c9s AS base +#################### +# cpu-base # +#################### +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin @@ -35,7 +36,7 @@ WORKDIR /opt/app-root/src ##################### # rstudio # ##################### -FROM base AS rstudio +FROM cpu-base AS rstudio ARG RSTUDIO_SOURCE_CODE=rstudio/c9s-python-3.11 diff --git a/rstudio/c9s-python-3.11/Dockerfile.cuda b/rstudio/c9s-python-3.11/Dockerfile.cuda index 5d7cab0306..1a24b8a4a9 100644 --- a/rstudio/c9s-python-3.11/Dockerfile.cuda +++ b/rstudio/c9s-python-3.11/Dockerfile.cuda @@ -1,7 +1,10 @@ -##################### -# base # -##################### -FROM quay.io/sclorg/python-311-c9s:c9s AS base +#################### +# cuda-base # +#################### +ARG BASE_IMAGE +FROM ${BASE_IMAGE} AS cuda-base + +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -32,109 +35,6 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc WORKDIR /opt/app-root/src -#################### -# cuda-base # -#################### -FROM base AS cuda-base-amd64 -ENV NVARCH=x86_64 - -FROM base AS cuda-base-arm64 -ENV NVARCH=sbsa - -FROM cuda-base-${TARGETARCH} AS cuda-base - -ARG TARGETARCH - -ARG CUDA_SOURCE_CODE=cuda - -# Install CUDA base from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/base/Dockerfile -USER 0 -WORKDIR /opt/app-root/bin - -ENV NVIDIA_REQUIRE_CUDA="cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551" -ENV NV_CUDA_CUDART_VERSION=12.6.77-1 - -COPY ${CUDA_SOURCE_CODE}/cuda.repo-${TARGETARCH} /etc/yum.repos.d/cuda.repo -COPY ${CUDA_SOURCE_CODE}/NGC-DL-CONTAINER-LICENSE / - -RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \ - curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \ - echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - - -ENV CUDA_VERSION=12.6.3 - -# For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN dnf upgrade -y && dnf install -y \ - cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ - cuda-compat-12-6 \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# nvidia-docker 1.0 -RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ - echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf - -ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 - -# nvidia-container-runtime -ENV NVIDIA_VISIBLE_DEVICES=all -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility - -# Install CUDA runtime from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/Dockerfile -ENV NV_CUDA_LIB_VERSION=12.6.3-1 -ENV NV_NVTX_VERSION=12.6.77-1 -ENV NV_LIBNPP_VERSION=12.3.1.54-1 -ENV NV_LIBNPP_PACKAGE=libnpp-12-6-${NV_LIBNPP_VERSION} -ENV NV_LIBCUBLAS_VERSION=12.6.4.1-1 -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl -ENV NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1 -ENV NV_LIBNCCL_VERSION=2.23.4 -ENV NCCL_VERSION=2.23.4 -ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 - -RUN dnf install -y \ - cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ - cuda-nvtx-12-6-${NV_NVTX_VERSION} \ - ${NV_LIBNPP_PACKAGE} \ - libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ - ${NV_LIBNCCL_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install devel tools - -RUN dnf install -y \ - make \ - findutils \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Install CUDA cudnn9 from: -# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.6.3/ubi9/runtime/cudnn/Dockerfile -ENV NV_CUDNN_VERSION=9.5.1.17-1 -ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} - -LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" - -RUN dnf install -y \ - ${NV_CUDNN_PACKAGE} \ - && dnf clean all \ - && rm -rf /var/cache/yum/* - -# Set this flag so that libraries can find the location of CUDA -ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda - -# Install CUDA toolkit 12.6 -RUN dnf -y install cuda-toolkit-12-6 && \ - dnf -y clean all --enablerepo="*" - -# Restore notebook user workspace -USER 1001 -WORKDIR /opt/app-root/src - ##################### # rstudio # ##################### diff --git a/rstudio/c9s-python-3.11/build-args/cpu.conf b/rstudio/c9s-python-3.11/build-args/cpu.conf new file mode 100644 index 0000000000..12f863debb --- /dev/null +++ b/rstudio/c9s-python-3.11/build-args/cpu.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/sclorg/python-311-c9s:c9s diff --git a/rstudio/c9s-python-3.11/build-args/cuda.conf b/rstudio/c9s-python-3.11/build-args/cuda.conf new file mode 100644 index 0000000000..60398753a0 --- /dev/null +++ b/rstudio/c9s-python-3.11/build-args/cuda.conf @@ -0,0 +1 @@ +BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py311-c9s:v12.6 #TO BE UPDATED From d31d42348593b0bf5c31ec642438577346d482a0 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Tue, 2 Sep 2025 14:36:54 +0200 Subject: [PATCH 14/47] Update the generate_pull_request_pipelineruns.py to track the build-args-file option and run it to update them all --- ...tascience-cpu-py312-ubi9-pull-request.yaml | 8 ++-- ...e-minimal-cpu-py312-ubi9-pull-request.yaml | 8 ++-- ...-pytorch-cuda-py312-ubi9-pull-request.yaml | 9 ++-- ...mpressor-cuda-py312-ubi9-pull-request.yaml | 4 +- ...-pytorch-rocm-py312-ubi9-pull-request.yaml | 8 ++-- ...nsorflow-cuda-py312-ubi9-pull-request.yaml | 9 ++-- ...nsorflow-rocm-py312-ubi9-pull-request.yaml | 8 ++-- ...tascience-cpu-py312-ubi9-pull-request.yaml | 8 ++-- ...tascience-cpu-py312-ubi9-pull-request.yaml | 10 ++-- ...r-minimal-cpu-py312-ubi9-pull-request.yaml | 9 ++-- ...-minimal-cuda-py312-ubi9-pull-request.yaml | 10 ++-- ...-minimal-rocm-py312-ubi9-pull-request.yaml | 9 ++-- ...-pytorch-cuda-py312-ubi9-pull-request.yaml | 14 ++---- ...mpressor-cuda-py312-ubi9-pull-request.yaml | 4 +- ...-pytorch-rocm-py312-ubi9-pull-request.yaml | 13 ++---- ...nsorflow-cuda-py312-ubi9-pull-request.yaml | 14 ++---- ...nsorflow-rocm-py312-ubi9-pull-request.yaml | 13 ++---- ...-trustyai-cpu-py312-ubi9-pull-request.yaml | 13 ++---- ...io-minimal-cpu-py311-c9s-pull-request.yaml | 8 ++-- ...o-minimal-cuda-py311-c9s-pull-request.yaml | 8 ++-- scripts/generate_pull_request_pipelineruns.py | 46 +++++++++++-------- 21 files changed, 88 insertions(+), 145 deletions(-) diff --git a/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml index 2284e5d73a..22a48583b9 100644 --- a/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-datascience\-cpu\-py312\-ubi9|runtimes/datascience/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( "runtimes/datascience/ubi9-python-3.12/**".pathChanged() || - ".tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/datascience/ubi9-python-3.12/**".pathChanged() || "runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() || ".tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: runtimes/datascience/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml index 21f245ee20..7d45975838 100644 --- a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-minimal\-cpu\-py312\-ubi9|runtimes/minimal/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( "runtimes/minimal/ubi9-python-3.12/**".pathChanged() || - ".tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( "runtimes/minimal/ubi9-python-3.12/**".pathChanged() || "runtimes/minimal/build-args/cpu.conf".pathChanged() || ".tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -46,6 +42,8 @@ spec: value: runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: runtimes/minimal/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml index 9ce66beb63..969cb5fcf9 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml @@ -13,12 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-pytorch\-cuda\-py312\-ubi9|runtimes/pytorch/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml".pathChanged() || - "runtimes/pytorch/ubi9-python-3.12/**".pathChanged() || - "cuda/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/pytorch/ubi9-python-3.12/**".pathChanged() || "runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -45,6 +40,8 @@ spec: value: runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml index 4bbcb5df85..e1bbf722b2 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml @@ -13,7 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-pytorch\-llmcompressor\-cuda\-py312\-ubi9|runtimes/pytorch\+llmcompressor/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -40,6 +40,8 @@ spec: value: runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml index 7c736f18ff..af8f99ea9f 100644 --- a/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-pytorch\-rocm\-py312\-ubi9|runtimes/rocm\-pytorch/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && (".tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml".pathChanged() || - "runtimes/rocm-pytorch/ubi9-python-3.12/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/rocm-pytorch/ubi9-python-3.12/**".pathChanged() || "runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm - name: path-context value: . + - name: build-args-file + value: runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml index c88b27286c..bac94bb45b 100644 --- a/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml @@ -13,12 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-tensorflow\-cuda\-py312\-ubi9|runtimes/tensorflow/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && (".tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml".pathChanged() || - "runtimes/tensorflow/ubi9-python-3.12/**".pathChanged() || - "cuda/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && (".tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/tensorflow/ubi9-python-3.12/**".pathChanged() || "runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -45,6 +40,8 @@ spec: value: runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml index 3f45429922..464038ff3f 100644 --- a/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-pipeline\-runtime\-tensorflow\-rocm\-py312\-ubi9|runtimes/rocm\-tensorflow/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml".pathChanged() || - "runtimes/rocm-tensorflow/ubi9-python-3.12/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml".pathChanged() || "runtimes/rocm-tensorflow/ubi9-python-3.12/**".pathChanged() || "runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm - name: path-context value: . + - name: build-args-file + value: runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml index 7c45ef6729..2ce609a4e4 100644 --- a/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-codeserver\-datascience\-cpu\-py312\-ubi9|codeserver/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || - "codeserver/ubi9-python-3.12/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "codeserver/ubi9-python-3.12/**".pathChanged() || "codeserver/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: codeserver/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: codeserver/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml index cb11edc1c4..d94888a0ca 100644 --- a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml @@ -13,13 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-datascience\-cpu\-py312\-ubi9|jupyter/datascience/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -46,6 +40,8 @@ spec: value: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml index 1162343cc5..23e85a2bf2 100644 --- a/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml @@ -13,12 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-minimal\-cpu\-py312\-ubi9|jupyter/minimal/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -45,6 +40,8 @@ spec: value: jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml index 4f7a1a3a3a..33744914fb 100644 --- a/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml @@ -13,13 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-minimal\-cuda\-py312\-ubi9|jupyter/minimal/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || - "cuda/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -46,6 +40,8 @@ spec: value: jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml index 1ee9281075..846b6f1ff8 100644 --- a/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml @@ -13,12 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-minimal\-rocm\-py312\-ubi9|jupyter/minimal/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -45,6 +40,8 @@ spec: value: jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm - name: path-context value: . + - name: build-args-file + value: jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml index 9e64a0fe48..d4b2c0b249 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml @@ -13,17 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-pytorch\-cuda\-py312\-ubi9|jupyter/pytorch/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/pytorch/ubi9-python-3.12/**".pathChanged() || - "cuda/**".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/pytorch/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -50,6 +40,8 @@ spec: value: jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml index 55be3bcbc0..ae2af40f36 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml @@ -13,7 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-pytorch\-llmcompressor\-cuda\-py312\-ubi9|jupyter/pytorch\+llmcompressor/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "cuda/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/**".pathChanged() || "jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -40,6 +40,8 @@ spec: value: jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml index ecf62859db..9339bb1572 100644 --- a/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml @@ -13,16 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-pytorch\-rocm\-py312\-ubi9|jupyter/rocm/pytorch/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/rocm/pytorch/ubi9-python-3.12/**".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/rocm/pytorch/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -49,6 +40,8 @@ spec: value: jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm - name: path-context value: . + - name: build-args-file + value: jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml index 5ca643f554..07e9989026 100644 --- a/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml @@ -13,17 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-tensorflow\-cuda\-py312\-ubi9|jupyter/tensorflow/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/tensorflow/ubi9-python-3.12/**".pathChanged() || - "cuda/**".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/tensorflow/ubi9-python-3.12/**".pathChanged() || "jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -50,6 +40,8 @@ spec: value: jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml index 0c5efd6ea7..8639e39e36 100644 --- a/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml @@ -13,16 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-tensorflow\-rocm\-py312\-ubi9|jupyter/rocm/tensorflow/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/rocm/tensorflow/ubi9-python-3.12/**".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/rocm/tensorflow/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -49,6 +40,8 @@ spec: value: jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm - name: path-context value: . + - name: build-args-file + value: jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml index 8a0a4f5a74..2ada4cafd1 100644 --- a/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml @@ -13,16 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-trustyai\-cpu\-py312\-ubi9|jupyter/trustyai/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml".pathChanged() || - "jupyter/trustyai/ubi9-python-3.12/**".pathChanged() || - "jupyter/utils/**".pathChanged() || - "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || - "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/trustyai/ubi9-python-3.12/**".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mongodb-org-6.0.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/mssql-2022.repo-x86_64/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/setup-elyra.sh".pathChanged() || "jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -49,6 +40,8 @@ spec: value: jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: jupyter/trustyai/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml index b6608299a5..0ae1b44b45 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-rstudio\-minimal\-cpu\-py311\-c9s|rstudio/c9s\-python\-3\.11) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml".pathChanged() || - "rstudio/c9s-python-3.11/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: rstudio/c9s-python-3.11/Dockerfile.cpu - name: path-context value: . + - name: build-args-file + value: rstudio/c9s-python-3.11/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml b/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml index 27a5375125..8d2d5c39e4 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml @@ -13,11 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-rstudio\-minimal\-cuda\-py311\-c9s|rstudio/c9s\-python\-3\.11) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch - == "main" - && !("manifests/base/params-latest.env".pathChanged()) - && ( ".tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml".pathChanged() || - "rstudio/c9s-python-3.11/**".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cuda-py311-c9s-pull-request.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || "rstudio/c9s-python-3.11/build-args/cuda.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release @@ -44,6 +40,8 @@ spec: value: rstudio/c9s-python-3.11/Dockerfile.cuda - name: path-context value: . + - name: build-args-file + value: rstudio/c9s-python-3.11/build-args/cuda.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: diff --git a/scripts/generate_pull_request_pipelineruns.py b/scripts/generate_pull_request_pipelineruns.py index f45b20bf9e..ce43b12054 100644 --- a/scripts/generate_pull_request_pipelineruns.py +++ b/scripts/generate_pull_request_pipelineruns.py @@ -49,6 +49,7 @@ def pull_request_pipelinerun_template( component: str, dockerfile: pathlib.Path, build_platforms: list[Literal["linux/x86_64", "linux/arm64", "linux/ppc64le", "linux/s390x"]], + params: list[dict[str, Any]], ) -> dict[str, Any]: """https://docs.redhat.com/en/documentation/red_hat_openshift_pipelines/1.19/html/pipelines_as_code/creating-pipeline-runs-pac#creating-pipeline-runs-pac""" @@ -81,21 +82,7 @@ def pull_request_pipelinerun_template( "timeouts": { "pipeline": "3h", }, - "params": [ - {"name": "git-url", "value": "{{source_url}}"}, - {"name": "revision", "value": "{{revision}}"}, - {"name": "output-image", "value": f"quay.io/opendatahub/{component}:on-pr-{{{{revision}}}}"}, - {"name": "image-expires-after", "value": "5d"}, - { - "name": "build-platforms", - "value": build_platforms, - }, - {"name": "dockerfile", "value": str(dockerfile)}, - { - "name": "path-context", - "value": ".", - }, - ], + "params": params, "pipelineRef": { "name": "multiarch-pull-request-pipeline", }, @@ -147,13 +134,36 @@ def transform_build_pipeline_to_pr_pipeline(push_pipeline_path: pathlib.Path): build_platforms = ["linux/x86_64"] if component in ["odh-pipeline-runtime-minimal-cpu-py311-ubi9", "odh-pipeline-runtime-minimal-cpu-py312-ubi9"]: build_platforms.extend(["linux/arm64", "linux/s390x"]) + + # Collect params + dockerfile = pathlib.Path( + next(param for param in push_pipeline["spec"]["params"] if param["name"] == "dockerfile")["value"] + ) + + pr_params = [ + {"name": "git-url", "value": "{{source_url}}"}, + {"name": "revision", "value": "{{revision}}"}, + {"name": "output-image", "value": f"quay.io/opendatahub/{component}:on-pr-{{{{revision}}}}"}, + {"name": "image-expires-after", "value": "5d"}, + {"name": "build-platforms", "value": build_platforms}, + {"name": "dockerfile", "value": str(dockerfile)}, + {"name": "path-context", "value": "."}, + ] + + existing_param_names = {p["name"] for p in pr_params} + # skip copying these no need of additional-tags on pull-request + skip_params = {"additional-tags"} + + for p in push_pipeline["spec"]["params"]: + if p["name"] not in existing_param_names and p["name"] not in skip_params: + pr_params.append(p) + pr_pipeline = pull_request_pipelinerun_template( on_cel_expression=LiteralScalarString(pr_on_cel_expression + "\n"), component=component, - dockerfile=pathlib.Path( - next(param for param in push_pipeline["spec"]["params"] if param["name"] == "dockerfile")["value"] - ), + dockerfile=dockerfile, build_platforms=build_platforms, + params=pr_params, ) # Generate the new filename and write the file From a742c568b49cbcc9fcc3ce6393b6eef909043b41 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Wed, 3 Sep 2025 10:41:16 +0200 Subject: [PATCH 15/47] clean up from unused commands --- jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu | 3 --- jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu | 2 -- jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda | 2 -- jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm | 2 -- jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda | 2 -- jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda | 2 -- jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm | 2 -- jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm | 2 -- jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda | 2 -- rstudio/c9s-python-3.11/Dockerfile.cuda | 2 -- runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu | 2 -- runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu | 2 -- .../pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda | 2 -- runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda | 2 -- runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm | 2 -- runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm | 2 -- 16 files changed, 33 deletions(-) diff --git a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu index 8ea46093f9..e0bbf2fc71 100644 --- a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root @@ -72,7 +70,6 @@ WORKDIR /opt/app-root/src ENTRYPOINT ["start-notebook.sh"] - ######################## # jupytyer-datascience # ######################## diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu index 3004dc926f..496e1cdab7 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda index c8280f9a80..4d93a127fa 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm index a810369ad2..5bbd4de948 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index a17940e4fc..e06e83c41e 100644 --- a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda index a45180b88c..8ee3db7bd3 100644 --- a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm index 6a8268c9c3..c1be1becb8 100644 --- a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm index ca0859167d..1dfd263b47 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda index 56b7761b2b..43d43e4a57 100644 --- a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda @@ -17,8 +17,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/rstudio/c9s-python-3.11/Dockerfile.cuda b/rstudio/c9s-python-3.11/Dockerfile.cuda index 1a24b8a4a9..170dd3bec4 100644 --- a/rstudio/c9s-python-3.11/Dockerfile.cuda +++ b/rstudio/c9s-python-3.11/Dockerfile.cuda @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # Install micropipenv and uv to deploy packages from requirements.txt begin diff --git a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu index 02f6c373b2..ffdcbe4b97 100644 --- a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu index 5f854886db..7c3ba0f02c 100644 --- a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index 36e6d8fbc9..95f5f2f2a2 100644 --- a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda index e15110cf0d..9bdf2320f1 100644 --- a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm index de81de6dfd..dad4de7377 100644 --- a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm b/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm index e31e511043..8926d036c8 100644 --- a/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm @@ -4,8 +4,6 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base -ARG TARGETARCH - WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root From 8134f76af8c117c06bdb2ffc38ca8127fa51ff42 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Wed, 3 Sep 2025 12:16:09 +0200 Subject: [PATCH 16/47] configuration ARGs should be on the top level on the Dockerfile --- codeserver/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm | 6 +++++- .../pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm | 6 +++++- jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm | 6 +++++- jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- rstudio/c9s-python-3.11/Dockerfile.cpu | 6 +++++- rstudio/c9s-python-3.11/Dockerfile.cuda | 6 +++++- runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu | 6 +++++- .../pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm | 6 +++++- runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm | 6 +++++- runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda | 6 +++++- 20 files changed, 100 insertions(+), 20 deletions(-) diff --git a/codeserver/ubi9-python-3.12/Dockerfile.cpu b/codeserver/ubi9-python-3.12/Dockerfile.cpu index 261f38c2c2..bff6619588 100644 --- a/codeserver/ubi9-python-3.12/Dockerfile.cpu +++ b/codeserver/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu index e0bbf2fc71..0427003779 100644 --- a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu index 496e1cdab7..ef1ebf8057 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda index 4d93a127fa..4c0c480d1f 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm index 5bbd4de948..4a6f2f32bf 100644 --- a/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/minimal/ubi9-python-3.12/Dockerfile.rocm @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # rocm-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base WORKDIR /opt/app-root/bin diff --git a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index e06e83c41e..9e92f08889 100644 --- a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda index 8ee3db7bd3..ce9c1df811 100644 --- a/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm index c1be1becb8..0c9541c7d5 100644 --- a/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # rocm-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base WORKDIR /opt/app-root/bin diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm index 1dfd263b47..83e7ab09b9 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/Dockerfile.rocm @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # rocm-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base WORKDIR /opt/app-root/bin diff --git a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda index 43d43e4a57..c7b4a03f40 100644 --- a/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda +++ b/jupyter/tensorflow/ubi9-python-3.12/Dockerfile.cuda @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu b/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu index b20378932a..f39e2cd07d 100644 --- a/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu @@ -1,3 +1,8 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + ###################################################### # mongocli-builder (build stage only, not published) # ###################################################### @@ -14,7 +19,6 @@ RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/rstudio/c9s-python-3.11/Dockerfile.cpu b/rstudio/c9s-python-3.11/Dockerfile.cpu index 279828f28a..f291c74720 100644 --- a/rstudio/c9s-python-3.11/Dockerfile.cpu +++ b/rstudio/c9s-python-3.11/Dockerfile.cpu @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/rstudio/c9s-python-3.11/Dockerfile.cuda b/rstudio/c9s-python-3.11/Dockerfile.cuda index 170dd3bec4..46541b5f9f 100644 --- a/rstudio/c9s-python-3.11/Dockerfile.cuda +++ b/rstudio/c9s-python-3.11/Dockerfile.cuda @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu index ffdcbe4b97..7365485d4a 100644 --- a/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu index 7c3ba0f02c..19ce17d9e2 100644 --- a/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu +++ b/runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cpu-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cpu-base WORKDIR /opt/app-root/bin diff --git a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda index 95f5f2f2a2..b611f1c646 100644 --- a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda index 9bdf2320f1..24bd09e79e 100644 --- a/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/pytorch/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base WORKDIR /opt/app-root/bin diff --git a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm index dad4de7377..254bf795ef 100644 --- a/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm +++ b/runtimes/rocm-pytorch/ubi9-python-3.12/Dockerfile.rocm @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # rocm-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base WORKDIR /opt/app-root/bin diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm b/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm index 8926d036c8..c40eff0845 100644 --- a/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/Dockerfile.rocm @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # rocm-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS rocm-base WORKDIR /opt/app-root/bin diff --git a/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda b/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda index e7c6ab0d28..4cfcc11987 100644 --- a/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda +++ b/runtimes/tensorflow/ubi9-python-3.12/Dockerfile.cuda @@ -1,7 +1,11 @@ +######################### +# configuration args # +######################### +ARG BASE_IMAGE + #################### # cuda-base # #################### -ARG BASE_IMAGE FROM ${BASE_IMAGE} AS cuda-base ARG TARGETARCH From d0fccc222e90ee25e7d798b3888ce0db0a8d070f Mon Sep 17 00:00:00 2001 From: atheo89 Date: Wed, 3 Sep 2025 17:33:09 +0200 Subject: [PATCH 17/47] Update base images with the real odh base images --- jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf | 2 +- jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf | 2 +- .../pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf | 2 +- jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf | 2 +- jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf | 2 +- jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf | 2 +- jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf | 2 +- rstudio/c9s-python-3.11/build-args/cuda.conf | 2 +- .../pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf | 2 +- runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf | 2 +- runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf | 2 +- runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf | 2 +- runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf b/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf +++ b/jupyter/minimal/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf b/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf index d706d2d972..6682af4d77 100644 --- a/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf +++ b/jupyter/minimal/ubi9-python-3.12/build-args/rocm.conf @@ -1 +1 @@ -BASE_IMAGE=#TODO +BASE_IMAGE=quay.io/opendatahub/odh-base-image-rocm-py312-ubi9:v6.2 diff --git a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf +++ b/jupyter/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf b/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf +++ b/jupyter/pytorch/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf b/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf index d706d2d972..6682af4d77 100644 --- a/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf +++ b/jupyter/rocm/pytorch/ubi9-python-3.12/build-args/rocm.conf @@ -1 +1 @@ -BASE_IMAGE=#TODO +BASE_IMAGE=quay.io/opendatahub/odh-base-image-rocm-py312-ubi9:v6.2 diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf b/jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf index d706d2d972..6682af4d77 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/build-args/rocm.conf @@ -1 +1 @@ -BASE_IMAGE=#TODO +BASE_IMAGE=quay.io/opendatahub/odh-base-image-rocm-py312-ubi9:v6.2 diff --git a/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf b/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf +++ b/jupyter/tensorflow/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/rstudio/c9s-python-3.11/build-args/cuda.conf b/rstudio/c9s-python-3.11/build-args/cuda.conf index 60398753a0..2a5529fdcc 100644 --- a/rstudio/c9s-python-3.11/build-args/cuda.conf +++ b/rstudio/c9s-python-3.11/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py311-c9s:v12.6 #TO BE UPDATED +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py311-c9s:v12.6 diff --git a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf +++ b/runtimes/pytorch+llmcompressor/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf b/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf +++ b/runtimes/pytorch/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 diff --git a/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf b/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf index d706d2d972..6682af4d77 100644 --- a/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf +++ b/runtimes/rocm-pytorch/ubi9-python-3.12/build-args/rocm.conf @@ -1 +1 @@ -BASE_IMAGE=#TODO +BASE_IMAGE=quay.io/opendatahub/odh-base-image-rocm-py312-ubi9:v6.2 diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf b/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf index d706d2d972..6682af4d77 100644 --- a/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/build-args/rocm.conf @@ -1 +1 @@ -BASE_IMAGE=#TODO +BASE_IMAGE=quay.io/opendatahub/odh-base-image-rocm-py312-ubi9:v6.2 diff --git a/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf b/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf index 11ae221e69..7525e99151 100644 --- a/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf +++ b/runtimes/tensorflow/ubi9-python-3.12/build-args/cuda.conf @@ -1 +1 @@ -BASE_IMAGE=quay.io/rh_ee_atheodor/base-image-cuda-py312-ubi9:v12.6 +BASE_IMAGE=quay.io/opendatahub/odh-base-image-cuda-py312-ubi9:v12.6 From 904bf230fecfcec4907d5ad020c8d8ab97764597 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Thu, 4 Sep 2025 10:13:54 +0200 Subject: [PATCH 18/47] Fix path on runtime minimal conf file --- ...dh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml index 7d45975838..9cb99ff7b4 100644 --- a/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml @@ -43,7 +43,7 @@ spec: - name: path-context value: . - name: build-args-file - value: runtimes/minimal/build-args/cpu.conf + value: runtimes/minimal/ubi9-python-3.12/build-args/cpu.conf pipelineRef: name: multiarch-pull-request-pipeline taskRunTemplate: From a7b8f66df05461258e8c6db0fb993ff87c41711e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Thu, 4 Sep 2025 10:41:49 +0200 Subject: [PATCH 19/47] RHAIENG-308, #2242: tests(make): enforce version parity validation between imagestreams (#2260) --- tests/test_main.py | 167 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 133 insertions(+), 34 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index 5a399ee6e6..c976e02f3a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,13 +1,16 @@ from __future__ import annotations +import dataclasses import json import logging import os import pathlib +import pprint import re import shutil import subprocess import tomllib +from collections import defaultdict from typing import TYPE_CHECKING import packaging.requirements @@ -64,42 +67,14 @@ def test_image_pyprojects(subtests: pytest_subtests.plugin.SubTests): ) with subtests.test(msg="checking imagestream manifest consistency with pylock.toml", pyproject=file): - # TODO(jdanek): missing manifests - if is_suffix(directory.parts, pathlib.Path("runtimes/rocm-tensorflow/ubi9-python-3.12").parts): - pytest.skip(f"Manifest not implemented {directory.parts}") - if is_suffix(directory.parts, pathlib.Path("jupyter/rocm/tensorflow/ubi9-python-3.12").parts): - pytest.skip(f"Manifest not implemented {directory.parts}") - - metadata = manifests.extract_metadata_from_path(directory) - manifest_file = manifests.get_source_of_truth_filepath( - root_repo_directory=PROJECT_ROOT, - metadata=metadata, - ) - if not manifest_file.is_file(): - raise FileNotFoundError( - f"Unable to determine imagestream manifest for '{directory}'. " - f"Computed filepath '{manifest_file}' does not exist." - ) - - imagestream = yaml.safe_load(manifest_file.read_text()) - recommended_tags = [ - tag - for tag in imagestream["spec"]["tags"] - if tag["annotations"].get("opendatahub.io/workbench-image-recommended", None) == "true" - ] - assert len(recommended_tags) <= 1, "at most one tag may be recommended at a time" - assert recommended_tags or len(imagestream["spec"]["tags"]) == 1, ( - "Either there has to be recommended image, or there can be only one tag" - ) - current_tag = recommended_tags[0] if recommended_tags else imagestream["spec"]["tags"][0] + _skip_unimplemented_manifests(directory) - sw = json.loads(current_tag["annotations"]["opendatahub.io/notebook-software"]) - dep = json.loads(current_tag["annotations"]["opendatahub.io/notebook-python-dependencies"]) + manifest = load_manifests_file_for(directory) with subtests.test(msg="checking the `notebook-software` array", pyproject=file): # TODO(jdanek) pytest.skip("checking the `notebook-software` array not yet implemented") - for s in sw: + for s in manifest.sw: if s.get("name") == "Python": assert s.get("version") == f"v{python}", ( "Python version in imagestream does not match Pipfile" @@ -108,7 +83,7 @@ def test_image_pyprojects(subtests: pytest_subtests.plugin.SubTests): pytest.fail(f"unexpected {s=}") with subtests.test(msg="checking the `notebook-python-dependencies` array", pyproject=file): - for d in dep: + for d in manifest.dep: workbench_only_packages = [ "Kfp", "JupyterLab", @@ -155,11 +130,11 @@ def test_image_pyprojects(subtests: pytest_subtests.plugin.SubTests): } name = d["name"] - if name in workbench_only_packages and metadata.type == manifests.NotebookType.RUNTIME: + if name in workbench_only_packages and manifest.metadata.type == manifests.NotebookType.RUNTIME: continue # TODO(jdanek): intentional? - if metadata.scope == "pytorch+llmcompressor" and name == "Codeflare-SDK": + if manifest.metadata.scope == "pytorch+llmcompressor" and name == "Codeflare-SDK": continue if name == "ROCm-PyTorch": @@ -197,6 +172,70 @@ def test_image_pyprojects(subtests: pytest_subtests.plugin.SubTests): ), f"{name}: manifest declares {manifest_version}, but pylock.toml pins {locked_version}" +def test_image_manifests_version_alignment(subtests: pytest_subtests.plugin.SubTests): + collected_manifests = [] + for file in PROJECT_ROOT.glob("**/pyproject.toml"): + logging.info(file) + directory = file.parent # "ubi9-python-3.11" + try: + _ubi, _lang, _python = directory.name.split("-") + except ValueError: + logging.debug(f"skipping {directory.name}/pyproject.toml as it is not an image directory") + continue + + if _skip_unimplemented_manifests(directory, call_skip=False): + continue + + manifest = load_manifests_file_for(directory) + collected_manifests.append(manifest) + + @dataclasses.dataclass + class VersionData: + manifest: Manifest + version: str + + packages: dict[str, list[VersionData]] = defaultdict(list) + for manifest in collected_manifests: + for dep in manifest.dep: + name = dep["name"] + version = dep["version"] + packages[name].append(VersionData(manifest=manifest, version=version)) + + # TODO(jdanek): review these, if any are unwarranted + ignored_exceptions: tuple[tuple[str, tuple[str, ...]], ...] = ( + # ("package name", ("allowed version 1", "allowed version 2", ...)) + ("Codeflare-SDK", ("0.30", "0.29")), + ("Scikit-learn", ("1.7", "1.6")), + ("Pandas", ("2.2", "1.5")), + ("Numpy", ("2.2", "1.26")), + ("Tensorboard", ("2.19", "2.18")), + ) + + for name, data in packages.items(): + versions = [d.version for d in data] + + # if there is only a single version, all is good + if len(set(versions)) == 1: + continue + + mapping = {str(d.manifest.filename.relative_to(PROJECT_ROOT)): d.version for d in data} + with subtests.test(msg=f"checking versions for {name} across the latest tags in all imagestreams"): + exception = next((it for it in ignored_exceptions if it[0] == name), None) + if exception: + # exception may save us from failing + if set(versions) == set(exception[1]): + continue + else: + pytest.fail( + f"{name} is allowed to have {exception} but actually has more versions: {pprint.pformat(mapping)}" + ) + # all hope is lost, the check has failed + pytest.fail(f"{name} has multiple versions: {pprint.pformat(mapping)}") + + +# TODO(jdanek): ^^^ should also check pyproject.tomls, in fact checking there is more useful than in manifests + + def test_files_that_should_be_same_are_same(subtests: pytest_subtests.plugin.SubTests): file_groups = { "ROCm de-vendor script": [ @@ -239,3 +278,63 @@ def is_suffix[T](main_sequence: Sequence[T], suffix_sequence: Sequence[T]): if suffix_len > len(main_sequence): return False return main_sequence[-suffix_len:] == suffix_sequence + + +def _skip_unimplemented_manifests(directory: pathlib.Path, call_skip=True) -> bool: + # TODO(jdanek): missing manifests + dirs = ( + "runtimes/rocm-tensorflow/ubi9-python-3.12", + "jupyter/rocm/tensorflow/ubi9-python-3.12", + ) + for d in dirs: + if is_suffix(directory.parts, pathlib.Path(d).parts): + if call_skip: + pytest.skip(f"Manifest not implemented {directory.parts}") + else: + return True + return False + + +@dataclasses.dataclass +class Manifest: + filename: pathlib.Path + imagestream: dict[str, Any] + metadata: manifests.NotebookMetadata + sw: list[dict[str, Any]] + dep: list[dict[str, Any]] + + +def load_manifests_file_for(directory: pathlib.Path) -> Manifest: + metadata = manifests.extract_metadata_from_path(directory) + manifest_file = manifests.get_source_of_truth_filepath( + root_repo_directory=PROJECT_ROOT, + metadata=metadata, + ) + if not manifest_file.is_file(): + raise FileNotFoundError( + f"Unable to determine imagestream manifest for '{directory}'. " + f"Computed filepath '{manifest_file}' does not exist." + ) + + imagestream = yaml.safe_load(manifest_file.read_text()) + recommended_tags = [ + tag + for tag in imagestream["spec"]["tags"] + if tag["annotations"].get("opendatahub.io/workbench-image-recommended", None) == "true" + ] + assert len(recommended_tags) <= 1, "at most one tag may be recommended at a time" + assert recommended_tags or len(imagestream["spec"]["tags"]) == 1, ( + "Either there has to be recommended image, or there can be only one tag" + ) + current_tag = recommended_tags[0] if recommended_tags else imagestream["spec"]["tags"][0] + + sw = json.loads(current_tag["annotations"]["opendatahub.io/notebook-software"]) + dep = json.loads(current_tag["annotations"]["opendatahub.io/notebook-python-dependencies"]) + + return Manifest( + filename=manifest_file, + imagestream=imagestream, + metadata=metadata, + sw=sw, + dep=dep, + ) From 798bfe234f0d5a5c361655e8ac31081163b3c61e Mon Sep 17 00:00:00 2001 From: atheo89 Date: Thu, 4 Sep 2025 11:15:36 +0200 Subject: [PATCH 20/47] Recomented fixes noted by code rabit --- ...rkbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml | 2 +- .../odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml | 2 +- ...dh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml | 2 +- .tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml index d94888a0ca..5bab564db9 100644 --- a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml +++ b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml @@ -13,7 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-jupyter\-datascience\-cpu\-py312\-ubi9|jupyter/datascience/ubi9\-python\-3\.12) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release diff --git a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml index f577411114..0234ed9750 100644 --- a/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml +++ b/.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml @@ -8,7 +8,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/**".pathChanged() || "jupyter/minimal/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-push.yaml".pathChanged() || "jupyter/utils/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/**".pathChanged() || "jupyter/datascience/ubi9-python-3.12/start-notebook.sh".pathChanged() || "jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release diff --git a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml index 0ae1b44b45..26d217e61f 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml @@ -13,7 +13,7 @@ metadata: pipelinesascode.tekton.dev/max-keep-runs: '3' pipelinesascode.tekton.dev/on-comment: ^/kfbuild\s+(all|odh\-workbench\-rstudio\-minimal\-cpu\-py311\-c9s|rstudio/c9s\-python\-3\.11) pipelinesascode.tekton.dev/on-cel-expression: | - event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) + event == "pull_request" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-pull-request.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) && body.repository.full_name == "opendatahub-io/notebooks" labels: appstudio.openshift.io/application: opendatahub-release diff --git a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml index 9261eee99f..ba6314e0eb 100644 --- a/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml +++ b/.tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/cancel-in-progress: "false" pipelinesascode.tekton.dev/max-keep-runs: "3" build.appstudio.openshift.io/build-nudge-files: "manifests/base/params-latest.env" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" && !("manifests/base/params-latest.env".pathChanged()) && ( ".tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml".pathChanged() || "rstudio/c9s-python-3.11/**".pathChanged() || "rstudio/c9s-python-3.11/build-args/cpu.conf".pathChanged() ) creationTimestamp: labels: appstudio.openshift.io/application: opendatahub-release From 00d9f61a5a7a5e09881826f98f694b616d048056 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Thu, 4 Sep 2025 12:23:02 +0200 Subject: [PATCH 21/47] Replace yum with dnf to have better consistency among the Dockerfiles --- .../cuda/12.6/c9s-python-3.11/Dockerfile.cuda | 20 +++++++++---------- .../cuda/12.6/c9s-python-3.12/Dockerfile.cuda | 20 +++++++++---------- .../12.6/ubi9-python-3.12/Dockerfile.cuda | 16 +++++++-------- .../rocm/6.2/c9s-python-3.12/Dockerfile.rocm | 4 ++-- .../rocm/6.2/ubi9-python-3.12/Dockerfile.rocm | 4 ++-- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/base-images/cuda/12.6/c9s-python-3.11/Dockerfile.cuda b/base-images/cuda/12.6/c9s-python-3.11/Dockerfile.cuda index 9b656f9127..647b6a10f5 100644 --- a/base-images/cuda/12.6/c9s-python-3.11/Dockerfile.cuda +++ b/base-images/cuda/12.6/c9s-python-3.11/Dockerfile.cuda @@ -37,10 +37,10 @@ RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3 ENV CUDA_VERSION=12.6.3 # For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN yum upgrade -y && yum install -y \ +RUN dnf upgrade -y && dnf install -y \ cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ cuda-compat-12-6 \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # nvidia-docker 1.0 @@ -67,20 +67,20 @@ ENV NV_LIBNCCL_VERSION=2.23.4 ENV NCCL_VERSION=2.23.4 ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 -RUN yum install -y \ +RUN dnf install -y \ cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ cuda-nvtx-12-6-${NV_NVTX_VERSION} \ ${NV_LIBNPP_PACKAGE} \ libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ ${NV_LIBNCCL_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install devel tools -RUN yum install -y \ +RUN dnf install -y \ make \ findutils \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install CUDA cudnn9 from: @@ -90,17 +90,17 @@ ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" -RUN yum install -y \ +RUN dnf install -y \ ${NV_CUDNN_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Set this flag so that libraries can find the location of CUDA ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda # Install CUDA toolkit 12.6 -RUN yum -y install cuda-toolkit-12-6 && \ - yum -y clean all --enablerepo="*" +RUN dnf -y install cuda-toolkit-12-6 && \ + dnf -y clean all --enablerepo="*" # Restore user workspace USER 1001 diff --git a/base-images/cuda/12.6/c9s-python-3.12/Dockerfile.cuda b/base-images/cuda/12.6/c9s-python-3.12/Dockerfile.cuda index 3a7bcd2ac4..7f58cb17d3 100644 --- a/base-images/cuda/12.6/c9s-python-3.12/Dockerfile.cuda +++ b/base-images/cuda/12.6/c9s-python-3.12/Dockerfile.cuda @@ -37,10 +37,10 @@ RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3 ENV CUDA_VERSION=12.6.3 # For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN yum upgrade -y && yum install -y \ +RUN dnf upgrade -y && dnf install -y \ cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ cuda-compat-12-6 \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # nvidia-docker 1.0 @@ -67,20 +67,20 @@ ENV NV_LIBNCCL_VERSION=2.23.4 ENV NCCL_VERSION=2.23.4 ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 -RUN yum install -y \ +RUN dnf install -y \ cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ cuda-nvtx-12-6-${NV_NVTX_VERSION} \ ${NV_LIBNPP_PACKAGE} \ libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ ${NV_LIBNCCL_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install devel tools -RUN yum install -y \ +RUN dnf install -y \ make \ findutils \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install CUDA cudnn9 from: @@ -90,17 +90,17 @@ ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" -RUN yum install -y \ +RUN dnf install -y \ ${NV_CUDNN_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Set this flag so that libraries can find the location of CUDA ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda # Install CUDA toolkit 12.6 -RUN yum -y install cuda-toolkit-12-6 && \ - yum -y clean all --enablerepo="*" +RUN dnf -y install cuda-toolkit-12-6 && \ + dnf -y clean all --enablerepo="*" # Restore user workspace USER 1001 diff --git a/base-images/cuda/12.6/ubi9-python-3.12/Dockerfile.cuda b/base-images/cuda/12.6/ubi9-python-3.12/Dockerfile.cuda index bd8d949ebc..0c80bc14b0 100644 --- a/base-images/cuda/12.6/ubi9-python-3.12/Dockerfile.cuda +++ b/base-images/cuda/12.6/ubi9-python-3.12/Dockerfile.cuda @@ -37,10 +37,10 @@ RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3 ENV CUDA_VERSION=12.6.3 # For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a -RUN yum upgrade -y && yum install -y \ +RUN dnf upgrade -y && dnf install -y \ cuda-cudart-12-6-${NV_CUDA_CUDART_VERSION} \ cuda-compat-12-6 \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # nvidia-docker 1.0 @@ -67,20 +67,20 @@ ENV NV_LIBNCCL_VERSION=2.23.4 ENV NCCL_VERSION=2.23.4 ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.6 -RUN yum install -y \ +RUN dnf install -y \ cuda-libraries-12-6-${NV_CUDA_LIB_VERSION} \ cuda-nvtx-12-6-${NV_NVTX_VERSION} \ ${NV_LIBNPP_PACKAGE} \ libcublas-12-6-${NV_LIBCUBLAS_VERSION} \ ${NV_LIBNCCL_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install devel tools -RUN yum install -y \ +RUN dnf install -y \ make \ findutils \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Install CUDA cudnn9 from: @@ -90,9 +90,9 @@ ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION} LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}" -RUN yum install -y \ +RUN dnf install -y \ ${NV_CUDNN_PACKAGE} \ - && yum clean all \ + && dnf clean all \ && rm -rf /var/cache/yum/* # Set this flag so that libraries can find the location of CUDA diff --git a/base-images/rocm/6.2/c9s-python-3.12/Dockerfile.rocm b/base-images/rocm/6.2/c9s-python-3.12/Dockerfile.rocm index 9ff4b8e0a9..e0976b537a 100644 --- a/base-images/rocm/6.2/c9s-python-3.12/Dockerfile.rocm +++ b/base-images/rocm/6.2/c9s-python-3.12/Dockerfile.rocm @@ -32,8 +32,8 @@ RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - yum install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - yum clean all && rm -rf /var/cache/yum + dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ + dnf clean all && rm -rf /var/cache/yum # Restore user workspace USER 1001 diff --git a/base-images/rocm/6.2/ubi9-python-3.12/Dockerfile.rocm b/base-images/rocm/6.2/ubi9-python-3.12/Dockerfile.rocm index 8aa7a5b853..6ba367d844 100644 --- a/base-images/rocm/6.2/ubi9-python-3.12/Dockerfile.rocm +++ b/base-images/rocm/6.2/ubi9-python-3.12/Dockerfile.rocm @@ -32,8 +32,8 @@ RUN echo "[ROCm]" > /etc/yum.repos.d/rocm.repo && \ echo "baseurl=https://repo.radeon.com/amdgpu/$AMDGPU_VERSION/rhel/9.4/main/x86_64" >> /etc/yum.repos.d/amdgpu.repo && \ echo "enabled=1" >> /etc/yum.repos.d/amdgpu.repo && \ echo "gpgcheck=0" >> /etc/yum.repos.d/amdgpu.repo && \ - yum install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ - yum clean all && rm -rf /var/cache/yum + dnf install -y rocm-developer-tools rocm-ml-sdk rocm-opencl-sdk rocm-openmp-sdk rocm-utils && \ + dnf clean all && rm -rf /var/cache/yum # Restore user workspace USER 1001 From 70b47db8aff1a31ad37ea6e042489805b72b3032 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Thu, 4 Sep 2025 12:46:16 +0200 Subject: [PATCH 22/47] Add missing matrix for multiplatform builds --- .tekton/multiarch-push-pipeline.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 6dc7302646..1292d5dee9 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -236,6 +236,11 @@ spec: workspace: git-auth - name: netrc workspace: netrc + - matrix: + params: + - name: PLATFORM + value: + - $(params.build-platforms) - name: build-container params: - name: IMAGE From 410b27d993ff0f31712b0246aeafb2e23ce0af11 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 12:48:02 +0200 Subject: [PATCH 23/47] Update odh-base-image-cuda-py312-c9s-push.yaml --- .tekton/odh-base-image-cuda-py312-c9s-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml index ab0e7f6074..c42897f7ae 100644 --- a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml @@ -1,7 +1,7 @@ apiVersion: tekton.dev/v1 kind: PipelineRun metadata: -#TEST +#TEST1 annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} build.appstudio.redhat.com/commit_sha: '{{revision}}' From b82d67e89ba9f8e0342598134ff5a3ce29e3beaa Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 13:34:45 +0200 Subject: [PATCH 24/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index 126909be8e..e126f14871 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,6 +1,5 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -# test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 894c00c5e644da661a820d5b4d373287c3badb38 Mon Sep 17 00:00:00 2001 From: atheo89 Date: Thu, 4 Sep 2025 14:01:31 +0200 Subject: [PATCH 25/47] Fix build matrix --- .tekton/multiarch-push-pipeline.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 1292d5dee9..f6387e3dea 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -241,7 +241,7 @@ spec: - name: PLATFORM value: - $(params.build-platforms) - - name: build-container + name: build-images params: - name: IMAGE value: $(params.output-image) @@ -268,14 +268,16 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: IMAGE_APPEND_PLATFORM + value: "true" runAfter: - prefetch-dependencies taskRef: params: - name: name - value: buildah-oci-ta + value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:f91db5817f403628dbd268fea69503ba910443ef8d71c86f093776f45f57adb9 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:fa90f4a5ac8485720999aabb00a1db4bb5da69b178acbc089870efc7eaf36721 - name: kind value: task resolver: bundles From 1bfafea116ceea173a1d9b0c8d86ce41ebc40f9a Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 14:19:44 +0200 Subject: [PATCH 26/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index e126f14871..326f985735 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,5 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun +#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 9faf7f7fdb5f3a19cd5e177c8bb1016a120c48ef Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 14:19:44 +0200 Subject: [PATCH 27/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/multiarch-push-pipeline.yaml | 2 +- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index f6387e3dea..2ba4104be3 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -300,7 +300,7 @@ spec: value: - $(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST) runAfter: - - build-container + - build-images taskRef: params: - name: name diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index e126f14871..326f985735 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,5 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun +#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From d902a8e0b8e49f6f5b0770c3d199f34621aac4b2 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 15:18:06 +0200 Subject: [PATCH 28/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index 326f985735..e126f14871 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,6 +1,5 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From f3c6c4727604e78eb7e3092327f5f74c81a0b6ef Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:30:19 +0200 Subject: [PATCH 29/47] Update multiarch-push-pipeline.yaml --- .tekton/multiarch-push-pipeline.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 2ba4104be3..33fbb9e9d0 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -298,7 +298,7 @@ spec: value: $(params.build-image-index) - name: IMAGES value: - - $(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST) + - $(tasks.build-images.results.IMAGE_URL)@$(tasks.build-images.results.IMAGE_DIGEST) runAfter: - build-images taskRef: From ae56a5ce5740576468e2c5f3645854950f430bc6 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:30:40 +0200 Subject: [PATCH 30/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index e126f14871..326f985735 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,5 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun +#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 3a6d985c919bd4bd347e9a6338d20d94fda4b1d4 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:34:13 +0200 Subject: [PATCH 31/47] Update multiarch-push-pipeline.yaml --- .tekton/multiarch-push-pipeline.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 33fbb9e9d0..6682e774c1 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -298,7 +298,7 @@ spec: value: $(params.build-image-index) - name: IMAGES value: - - $(tasks.build-images.results.IMAGE_URL)@$(tasks.build-images.results.IMAGE_DIGEST) + - $(tasks.build-images.results.IMAGE_REF[*]) runAfter: - build-images taskRef: From c53b52b817f81ac847d4dbf0ba4e146023ff98d3 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:34:38 +0200 Subject: [PATCH 32/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index 326f985735..cfc16ebe20 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,6 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test +#test1 metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From f410e356d9842fc25c0c48a60590acbf79a70260 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:41:08 +0200 Subject: [PATCH 33/47] Update odh-base-image-cuda-py311-c9s-push.yaml --- .tekton/odh-base-image-cuda-py311-c9s-push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml index 543a5be67d..28aff49291 100644 --- a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml @@ -1,5 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun +#test metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 341d899227b4eea45c008d934392091c5215d2ed Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 16:41:24 +0200 Subject: [PATCH 34/47] Update odh-base-image-cuda-py312-c9s-push.yaml --- .tekton/odh-base-image-cuda-py312-c9s-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml index c42897f7ae..6e90c2c652 100644 --- a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml @@ -1,7 +1,7 @@ apiVersion: tekton.dev/v1 kind: PipelineRun +#test metadata: -#TEST1 annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} build.appstudio.redhat.com/commit_sha: '{{revision}}' From 61d33e7685cb54e2447d85eb1f80be98a565d350 Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 16:51:29 +0200 Subject: [PATCH 35/47] chore(deps): update konflux references (#2108) Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com> --- .tekton/multiarch-pull-request-pipeline.yaml | 24 ++++++++++---------- .tekton/singlearch-push-pipeline.yaml | 24 ++++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.tekton/multiarch-pull-request-pipeline.yaml b/.tekton/multiarch-pull-request-pipeline.yaml index 6120110f9a..944fabebc0 100644 --- a/.tekton/multiarch-pull-request-pipeline.yaml +++ b/.tekton/multiarch-pull-request-pipeline.yaml @@ -126,7 +126,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ded314206f09712b2116deb050b774ae7efef9ab243794334c8e616871a3ffa5 - name: kind value: task resolver: bundles @@ -147,7 +147,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:be82c55346e8810bd1edc5547f864064da6945979baccca7dfc99990b392a02b + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:4a601aeec58a1dd89c271e728fd8f0d84777825b46940c3aec27f15bab3edacf - name: kind value: task resolver: bundles @@ -176,7 +176,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:ca036c7232f63199824bc1a65126faad834bc3af030e5b8210cb057f4ae97d99 + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:22290579c9fe0b5c1689bb9023b3eddec73c285b680226d9f460346ae849a2cb - name: kind value: task resolver: bundles @@ -226,7 +226,7 @@ spec: - name: name value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:fa90f4a5ac8485720999aabb00a1db4bb5da69b178acbc089870efc7eaf36721 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:cd9ef1eb119700a6883edcf93fd7c71dc33ee43467f3c2728b2a002c77915e8d - name: kind value: task resolver: bundles @@ -255,7 +255,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:ba7fbed5c4862968c1a77d6b90d5bdd497925ab1de41b859c027dd5c3069cd3e - name: kind value: task resolver: bundles @@ -281,7 +281,7 @@ spec: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:bfec1fabb0ed7c191e6c85d75e6cc577a04cabe9e6b35f9476529e8e5b3c0c82 + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:7a36cc284c5932c18e117fe5995f3246b5dcc11ec742b66a2f9ae710034b064f - name: kind value: task resolver: bundles @@ -349,7 +349,7 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:e106b6182e72c8f34ceae3f56b0b1aa2b4dc60f573877d9e51c3791029a7acb6 - name: kind value: task resolver: bundles @@ -375,7 +375,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:fe5e5ba3a72632cd505910de2eacd62c9d11ed570c325173188f8d568ac60771 + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:322c86ad5ee252c04440184d9f5046d276415148cb6bfaf571be1b102101786b - name: kind value: task resolver: bundles @@ -397,7 +397,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b0bd59748cda4a7abf311e4f448e6c1d00c6b6d8c0ecc1c2eb33e08dc0e0b802 - name: kind value: task resolver: bundles @@ -442,7 +442,7 @@ spec: - name: name value: sast-coverity-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:0819ec70412034b7bb7ad2bf0d42b5c0f6904fee66599e03489c33350340c0cb + value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:cdbe1a968676e4f5519b082bf1e27a4cdcf66dd60af66dbc26b3e604f957f7e9 - name: kind value: task resolver: bundles @@ -540,7 +540,7 @@ spec: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:e0de426d492e195f59c99d2ea1ca0df7bfb8c689f5d1468fe7f70eb8684b8d02 - name: kind value: task resolver: bundles @@ -563,7 +563,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:972990bea93c13f8afd279c0e0d4bd8c2665b48bbb3369b2c43acf194b851f5c + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:235ef6e835de8171c07b8a7f8947d0b40bfcff999e1ff3cb6ddd9acc65c48430 - name: kind value: task resolver: bundles diff --git a/.tekton/singlearch-push-pipeline.yaml b/.tekton/singlearch-push-pipeline.yaml index c38894307e..177bc9c13f 100644 --- a/.tekton/singlearch-push-pipeline.yaml +++ b/.tekton/singlearch-push-pipeline.yaml @@ -169,7 +169,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ded314206f09712b2116deb050b774ae7efef9ab243794334c8e616871a3ffa5 - name: kind value: task resolver: bundles @@ -192,7 +192,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:be82c55346e8810bd1edc5547f864064da6945979baccca7dfc99990b392a02b + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:4a601aeec58a1dd89c271e728fd8f0d84777825b46940c3aec27f15bab3edacf - name: kind value: task resolver: bundles @@ -221,7 +221,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:ca036c7232f63199824bc1a65126faad834bc3af030e5b8210cb057f4ae97d99 + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:22290579c9fe0b5c1689bb9023b3eddec73c285b680226d9f460346ae849a2cb - name: kind value: task resolver: bundles @@ -264,7 +264,7 @@ spec: - name: name value: buildah-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:f91db5817f403628dbd268fea69503ba910443ef8d71c86f093776f45f57adb9 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:db496b9f7072fb9d1c4b749db6bab8c19c0b647a8a4d2589833dcec979876657 - name: kind value: task resolver: bundles @@ -293,7 +293,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:ba7fbed5c4862968c1a77d6b90d5bdd497925ab1de41b859c027dd5c3069cd3e - name: kind value: task resolver: bundles @@ -319,7 +319,7 @@ spec: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:bfec1fabb0ed7c191e6c85d75e6cc577a04cabe9e6b35f9476529e8e5b3c0c82 + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:7a36cc284c5932c18e117fe5995f3246b5dcc11ec742b66a2f9ae710034b064f - name: kind value: task resolver: bundles @@ -387,7 +387,7 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:e106b6182e72c8f34ceae3f56b0b1aa2b4dc60f573877d9e51c3791029a7acb6 - name: kind value: task resolver: bundles @@ -413,7 +413,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:fe5e5ba3a72632cd505910de2eacd62c9d11ed570c325173188f8d568ac60771 + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:322c86ad5ee252c04440184d9f5046d276415148cb6bfaf571be1b102101786b - name: kind value: task resolver: bundles @@ -435,7 +435,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b0bd59748cda4a7abf311e4f448e6c1d00c6b6d8c0ecc1c2eb33e08dc0e0b802 - name: kind value: task resolver: bundles @@ -480,7 +480,7 @@ spec: - name: name value: sast-coverity-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:0819ec70412034b7bb7ad2bf0d42b5c0f6904fee66599e03489c33350340c0cb + value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:cdbe1a968676e4f5519b082bf1e27a4cdcf66dd60af66dbc26b3e604f957f7e9 - name: kind value: task resolver: bundles @@ -578,7 +578,7 @@ spec: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:e0de426d492e195f59c99d2ea1ca0df7bfb8c689f5d1468fe7f70eb8684b8d02 - name: kind value: task resolver: bundles @@ -601,7 +601,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:972990bea93c13f8afd279c0e0d4bd8c2665b48bbb3369b2c43acf194b851f5c + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:235ef6e835de8171c07b8a7f8947d0b40bfcff999e1ff3cb6ddd9acc65c48430 - name: kind value: task resolver: bundles From c553a86d0593d68288693343a5bdf613e8c643a4 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 17:37:21 +0200 Subject: [PATCH 36/47] Update multiarch-push-pipeline.yaml --- .tekton/multiarch-push-pipeline.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 6682e774c1..2c181d1b1b 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -306,7 +306,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:ba7fbed5c4862968c1a77d6b90d5bdd497925ab1de41b859c027dd5c3069cd3e - name: kind value: task resolver: bundles From ae521a669f5b17f7122624c8cefb47ab024f47bc Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 17:37:39 +0200 Subject: [PATCH 37/47] Update odh-base-image-cuda-py312-c9s-push.yaml --- .tekton/odh-base-image-cuda-py312-c9s-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml index 6e90c2c652..9927196740 100644 --- a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml @@ -1,6 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test +#test1 metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 1fecb8e876404b5676363dc2560a7265d734f273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Thu, 4 Sep 2025 18:35:33 +0200 Subject: [PATCH 38/47] RHAIENG-308, #2242: tests(make): add pyproject version alignment test and handle allowed specifier divergences (#2276) * Add test_image_pyprojects_version_alignment to compare dependency specifiers across all pyproject.toml files * Import packaging.specifiers and store actual SpecifierSet objects instead of string reprs * Introduce ignored_exceptions for known, acceptable specifier differences (e.g., torch variants, numpy caps) * Compare specifiers using SpecifierSet equality and wrap checks in subtests for clearer reporting * Minor cleanup: remove unused pyprojects variable --- tests/test_main.py | 64 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/tests/test_main.py b/tests/test_main.py index c976e02f3a..3ce1d75c6a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -14,6 +14,7 @@ from typing import TYPE_CHECKING import packaging.requirements +import packaging.specifiers import packaging.utils import packaging.version import pytest @@ -233,7 +234,68 @@ class VersionData: pytest.fail(f"{name} has multiple versions: {pprint.pformat(mapping)}") -# TODO(jdanek): ^^^ should also check pyproject.tomls, in fact checking there is more useful than in manifests +def test_image_pyprojects_version_alignment(subtests: pytest_subtests.plugin.SubTests): + requirements = defaultdict(list) + for file in PROJECT_ROOT.glob("**/pyproject.toml"): + logging.info(file) + directory = file.parent # "ubi9-python-3.11" + try: + _ubi, _lang, _python = directory.name.split("-") + except ValueError: + logging.debug(f"skipping {directory.name}/pyproject.toml as it is not an image directory") + continue + + if _skip_unimplemented_manifests(directory, call_skip=False): + continue + + pyproject = tomllib.loads(file.read_text()) + for d in pyproject["project"]["dependencies"]: + requirement = packaging.requirements.Requirement(d) + requirements[requirement.name].append(requirement.specifier) + + # TODO(jdanek): review these, if any are unwarranted + ignored_exceptions: tuple[tuple[str, tuple[str, ...]], ...] = ( + # ("package name", ("allowed specifier 1", "allowed specifier 2", ...)) + ("setuptools", ("~=78.1.1", "==78.1.1")), + ("wheel", ("==0.45.1", "~=0.45.1")), + ("tensorboard", ("~=2.18.0", "~=2.19.0")), + ("torch", ("==2.6.0", "==2.6.0+cu126", "==2.6.0+rocm6.2.4")), + ("torchvision", ("==0.21.0", "==0.21.0+cu126", "==0.21.0+rocm6.2.4")), + ("matplotlib", ("~=3.10.1", "~=3.10.3")), + ("numpy", ("~=2.2.3", "<2.0.0", "~=1.26.4")), + ("pandas", ("~=2.2.3", "~=1.5.3")), + ("scikit-learn", ("~=1.6.1", "~=1.7.0")), + ("codeflare-sdk", ("~=0.29.0", "~=0.30.0")), + ("ipython-genutils", (">=0.2.0", "~=0.2.0")), + ("jinja2", (">=3.1.6", "~=3.1.6")), + ("jupyter-client", ("~=8.6.3", ">=8.6.3")), + ("requests", ("~=2.32.3", ">=2.0.0")), + ("urllib3", ("~=2.5.0", "~=2.3.0")), + ("transformers", ("<5.0,>4.0", "~=4.55.0")), + ("datasets", ("", "~=3.4.1")), + ("accelerate", ("!=1.1.0,>=0.20.3", "~=1.5.2")), + ("kubeflow-training", ("==1.9.0", "==1.9.2", "==1.9.3")), + ("jupyter-bokeh", ("~=3.0.5", "~=4.0.5")), + ("jupyterlab-lsp", ("~=5.1.0", "~=5.1.1")), + ("jupyterlab-widgets", ("~=3.0.13", "~=3.0.15")), + ) + + for name, data in requirements.items(): + if len(set(data)) == 1: + continue + + with subtests.test(msg=f"checking versions of {name} across all pyproject.tomls"): + exception = next((it for it in ignored_exceptions if it[0] == name), None) + if exception: + # exception may save us from failing + if set(data) == {packaging.specifiers.SpecifierSet(e) for e in exception[1]}: + continue + else: + pytest.fail( + f"{name} is allowed to have {exception[1]} but actually has more specifiers: {pprint.pformat(set(data))}" + ) + # all hope is lost, the check has failed + pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") def test_files_that_should_be_same_are_same(subtests: pytest_subtests.plugin.SubTests): From f8b07f5d8c2283438eab1930ace94c5434a6e55a Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 18:40:14 +0200 Subject: [PATCH 39/47] Update multiarch-push-pipeline.yaml --- .tekton/multiarch-push-pipeline.yaml | 41 ++++++++++++++++------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/.tekton/multiarch-push-pipeline.yaml b/.tekton/multiarch-push-pipeline.yaml index 2c181d1b1b..915c8d312b 100644 --- a/.tekton/multiarch-push-pipeline.yaml +++ b/.tekton/multiarch-push-pipeline.yaml @@ -67,7 +67,7 @@ spec: description: Path to the Dockerfile inside the context specified by parameter path-context name: dockerfile type: string - - default: "true" + - default: "false" description: Force rebuild image name: rebuild type: string @@ -86,14 +86,19 @@ spec: - default: "" description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. name: image-expires-after + type: string - default: "false" description: Build a source image. name: build-source-image type: string - - default: "false" + - default: "true" description: Add built image into an OCI image index name: build-image-index type: string + - default: [] + description: Array of extra tags to apply to the resulting image (e.g. commit or release identifiers). + name: additional-tags + type: array - default: [] description: Array of --build-arg values ("arg=value" strings) for buildah name: build-args @@ -175,7 +180,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ded314206f09712b2116deb050b774ae7efef9ab243794334c8e616871a3ffa5 - name: kind value: task resolver: bundles @@ -198,7 +203,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:be82c55346e8810bd1edc5547f864064da6945979baccca7dfc99990b392a02b + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:4a601aeec58a1dd89c271e728fd8f0d84777825b46940c3aec27f15bab3edacf - name: kind value: task resolver: bundles @@ -227,7 +232,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:ca036c7232f63199824bc1a65126faad834bc3af030e5b8210cb057f4ae97d99 + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:22290579c9fe0b5c1689bb9023b3eddec73c285b680226d9f460346ae849a2cb - name: kind value: task resolver: bundles @@ -277,7 +282,7 @@ spec: - name: name value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:fa90f4a5ac8485720999aabb00a1db4bb5da69b178acbc089870efc7eaf36721 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:cd9ef1eb119700a6883edcf93fd7c71dc33ee43467f3c2728b2a002c77915e8d - name: kind value: task resolver: bundles @@ -319,12 +324,12 @@ spec: params: - name: BINARY_IMAGE value: $(tasks.build-image-index.results.IMAGE_URL) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) - name: SOURCE_ARTIFACT value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: BINARY_IMAGE_DIGEST - value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -332,7 +337,7 @@ spec: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:bfec1fabb0ed7c191e6c85d75e6cc577a04cabe9e6b35f9476529e8e5b3c0c82 + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:7a36cc284c5932c18e117fe5995f3246b5dcc11ec742b66a2f9ae710034b064f - name: kind value: task resolver: bundles @@ -400,7 +405,7 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:e106b6182e72c8f34ceae3f56b0b1aa2b4dc60f573877d9e51c3791029a7acb6 - name: kind value: task resolver: bundles @@ -426,7 +431,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:fe5e5ba3a72632cd505910de2eacd62c9d11ed570c325173188f8d568ac60771 + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:322c86ad5ee252c04440184d9f5046d276415148cb6bfaf571be1b102101786b - name: kind value: task resolver: bundles @@ -448,7 +453,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b0bd59748cda4a7abf311e4f448e6c1d00c6b6d8c0ecc1c2eb33e08dc0e0b802 - name: kind value: task resolver: bundles @@ -493,7 +498,7 @@ spec: - name: name value: sast-coverity-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:0819ec70412034b7bb7ad2bf0d42b5c0f6904fee66599e03489c33350340c0cb + value: quay.io/konflux-ci/tekton-catalog/task-sast-coverity-check-oci-ta:0.3@sha256:cdbe1a968676e4f5519b082bf1e27a4cdcf66dd60af66dbc26b3e604f957f7e9 - name: kind value: task resolver: bundles @@ -577,13 +582,13 @@ spec: - "false" - name: apply-tags params: - - name: ADDITIONAL_TAGS - value: - - $(params.additional-tags[*]) - name: IMAGE_URL value: $(tasks.build-image-index.results.IMAGE_URL) - name: IMAGE_DIGEST value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: ADDITIONAL_TAGS + value: + - $(params.additional-tags[*]) runAfter: - build-image-index taskRef: @@ -591,7 +596,7 @@ spec: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:e0de426d492e195f59c99d2ea1ca0df7bfb8c689f5d1468fe7f70eb8684b8d02 - name: kind value: task resolver: bundles @@ -614,7 +619,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:972990bea93c13f8afd279c0e0d4bd8c2665b48bbb3369b2c43acf194b851f5c + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:235ef6e835de8171c07b8a7f8947d0b40bfcff999e1ff3cb6ddd9acc65c48430 - name: kind value: task resolver: bundles From 84e387496e9cf64336d63695b92086f5a082cf5f Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 18:40:41 +0200 Subject: [PATCH 40/47] Update odh-base-image-cuda-py311-c9s-push.yaml --- .tekton/odh-base-image-cuda-py311-c9s-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml index 28aff49291..92d9d57e45 100644 --- a/.tekton/odh-base-image-cuda-py311-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py311-c9s-push.yaml @@ -1,6 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test +#test1 metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 00dff74ab03688f7fcc293bc0b294374d973bd3e Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 19:19:10 +0200 Subject: [PATCH 41/47] Update odh-base-image-cuda-py312-c9s-push.yaml --- .tekton/odh-base-image-cuda-py312-c9s-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml index 9927196740..c2db1384ac 100644 --- a/.tekton/odh-base-image-cuda-py312-c9s-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-c9s-push.yaml @@ -1,6 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test1 +#test2 metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From 1bd738f9facd2f17f4394491817298b9b76be790 Mon Sep 17 00:00:00 2001 From: aTheo Date: Thu, 4 Sep 2025 19:19:19 +0200 Subject: [PATCH 42/47] Update odh-base-image-cuda-py312-ubi9-push.yaml --- .tekton/odh-base-image-cuda-py312-ubi9-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml index cfc16ebe20..a76c879626 100644 --- a/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml +++ b/.tekton/odh-base-image-cuda-py312-ubi9-push.yaml @@ -1,6 +1,6 @@ apiVersion: tekton.dev/v1 kind: PipelineRun -#test1 +#test2 metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/notebooks?rev={{revision}} From fc46ec1d640bfdf649f141eca6d652508e460f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Fri, 5 Sep 2025 08:47:34 +0200 Subject: [PATCH 43/47] RHAIENG-308, #2242: tests(make): handle rstudio in a rhds-compatible manner (#2277) --- tests/manifests.py | 5 ++++- tests/test_main.py | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/manifests.py b/tests/manifests.py index 5d7f107f7a..8698f5be9b 100644 --- a/tests/manifests.py +++ b/tests/manifests.py @@ -185,7 +185,10 @@ def get_source_of_truth_filepath( filename = f"jupyter-{notebook_id}-{file_suffix}" elif RSTUDIO_NOTEBOOK_ID in notebook_id: - filename = f"rstudio-gpu-{file_suffix}" + imagestream_filename = f"rstudio-gpu-{file_suffix}" + buildconfig_filename = "cuda-rstudio-buildconfig.yaml" + _ = imagestream_filename + filename = buildconfig_filename if not filename: raise ValueError( diff --git a/tests/test_main.py b/tests/test_main.py index 3ce1d75c6a..e6c6da9826 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -378,7 +378,12 @@ def load_manifests_file_for(directory: pathlib.Path) -> Manifest: f"Computed filepath '{manifest_file}' does not exist." ) - imagestream = yaml.safe_load(manifest_file.read_text()) + # BEWARE: rhds rstudio has imagestream bundled in the buildconfig yaml + if "buildconfig" in manifest_file.name: + # imagestream is the first document in the file + imagestream = next(yaml.safe_load_all(manifest_file.read_text())) + else: + imagestream = yaml.safe_load(manifest_file.read_text()) recommended_tags = [ tag for tag in imagestream["spec"]["tags"] From 93c0810a99e73d420ac1fc9b07a117205b653116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Fri, 5 Sep 2025 09:18:52 +0200 Subject: [PATCH 44/47] RHAIENG-816: fix(jupyter/rocm/tensorflow/ubi9-python-3.12): image has outdated jupyterlab and jupyterlab-git packages (#2278) ``` ============================================================================================================ FAILURES ============================================================================================================= _______________________________________________________________ test_image_pyprojects_version_alignment [checking versions of skl2onnx across all pyproject.tomls] ________________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: skl2onnx has multiple specifiers: [, E , E , E , E , E , E , E , E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- _______________________________________________________________ test_image_pyprojects_version_alignment [checking versions of odh-elyra across all pyproject.tomls] _______________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: odh-elyra has multiple specifiers: [, E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- ______________________________________________________________ test_image_pyprojects_version_alignment [checking versions of jupyterlab across all pyproject.tomls] _______________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: jupyterlab has multiple specifiers: [, E , E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- ____________________________________________________________ test_image_pyprojects_version_alignment [checking versions of jupyter-server across all pyproject.tomls] _____________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: jupyter-server has multiple specifiers: [, E , E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- ____________________________________________________________ test_image_pyprojects_version_alignment [checking versions of jupyterlab-git across all pyproject.tomls] _____________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: jupyterlab-git has multiple specifiers: [, E , E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- ________________________________________________________ test_image_pyprojects_version_alignment [checking versions of jupyter-resource-usage across all pyproject.tomls] _________________________________________________________ tests/test_main.py:295: in test_image_pyprojects_version_alignment pytest.fail(f"{name} has multiple specifiers: {pprint.pformat(data)}") E Failed: jupyter-resource-usage has multiple specifiers: [, E , E , E , E , E , E ] -------------------------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------------------------- ===================================================================================================== short test summary info ===================================================================================================== [checking versions of skl2onnx across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: skl2onnx has multiple specifiers: [, [checking versions of odh-elyra across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: odh-elyra has multiple specifiers: [, [checking versions of jupyterlab across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: jupyterlab has multiple specifiers: [, [checking versions of jupyter-server across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: jupyter-server has multiple specifiers: [, [checking versions of jupyterlab-git across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: jupyterlab-git has multiple specifiers: [, [checking versions of jupyter-resource-usage across all pyproject.tomls] SUBFAIL tests/test_main.py::test_image_pyprojects_version_alignment - Failed: jupyter-resource-usage has multiple specifiers: [, ================================================================================== 6 failed, 32 passed, 48 skipped, 114 subtests passed in 2.88s ================================================================================== gmake: *** [Makefile:518: test] Error 1 ``` --- examples/jupyterlab-with-elyra/Dockerfile | 2 +- .../tensorflow/ubi9-python-3.12/pylock.toml | 36 +++++++++---------- .../ubi9-python-3.12/pyproject.toml | 12 +++---- .../ubi9-python-3.12/pylock.toml | 6 ++-- .../ubi9-python-3.12/pyproject.toml | 2 +- tests/test_main.py | 3 -- 6 files changed, 29 insertions(+), 32 deletions(-) diff --git a/examples/jupyterlab-with-elyra/Dockerfile b/examples/jupyterlab-with-elyra/Dockerfile index 7ba23f9d75..100c757636 100644 --- a/examples/jupyterlab-with-elyra/Dockerfile +++ b/examples/jupyterlab-with-elyra/Dockerfile @@ -58,7 +58,7 @@ nbdime~=4.0.2 nbgitpuller~=1.2.2 # Elyra -odh-elyra==4.2.1 +odh-elyra==4.2.3 kfp~=2.12.1 # Miscellaneous datascience packages diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml b/jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml index 1f604fcd13..f03eda6912 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml @@ -511,9 +511,9 @@ wheels = [ [[packages]] name = "click" -version = "8.2.1" -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", upload-time = 2025-05-20T23:19:49Z, size = 286342, hashes = { sha256 = "27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", upload-time = 2025-05-20T23:19:47Z, size = 102215, hashes = { sha256 = "61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" } }] +version = "8.1.8" +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", upload-time = 2024-12-21T18:38:44Z, size = 226593, hashes = { sha256 = "ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", upload-time = 2024-12-21T18:38:41Z, size = 98188, hashes = { sha256 = "63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2" } }] [[packages]] name = "codeflare-sdk" @@ -1360,9 +1360,9 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/5a/80/5a1162f78414298 [[packages]] name = "jupyter-server" -version = "2.15.0" -sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", upload-time = 2024-12-20T13:02:42Z, size = 725227, hashes = { sha256 = "9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", upload-time = 2024-12-20T13:02:37Z, size = 385826, hashes = { sha256 = "872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3" } }] +version = "2.16.0" +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", upload-time = 2025-05-12T16:44:46Z, size = 728177, hashes = { sha256 = "65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", upload-time = 2025-05-12T16:44:43Z, size = 386904, hashes = { sha256 = "3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" } }] [[packages]] name = "jupyter-server-mathjax" @@ -1384,15 +1384,15 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602 [[packages]] name = "jupyterlab" -version = "4.2.7" -sdist = { url = "https://files.pythonhosted.org/packages/8f/51/9e1e089b7e3b4b60d5564463067bde91d9ad00410ed781ddb0139dda5f82/jupyterlab-4.2.7.tar.gz", upload-time = 2025-01-08T12:26:44Z, size = 21508689, hashes = { sha256 = "7353c0704aec0e1219eb1e376c2d51f855a2522605f9ecdcab4993c006991ea3" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/71/0d/8b1e890d317b5beb9a727d7326e59921f1a4bd1f8c4f4bdf40a60ca9ab20/jupyterlab-4.2.7-py3-none-any.whl", upload-time = 2025-01-08T12:26:38Z, size = 11642874, hashes = { sha256 = "a16a10a114360a4249c855e382b95260ebf2b91341884739dde954936096684d" } }] +version = "4.4.4" +sdist = { url = "https://files.pythonhosted.org/packages/e2/4d/7ca5b46ea56742880d71a768a9e6fb8f8482228427eb89492d55c5d0bb7d/jupyterlab-4.4.4.tar.gz", upload-time = 2025-06-28T13:07:20Z, size = 23044296, hashes = { sha256 = "163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f8/82/66910ce0995dbfdb33609f41c99fe32ce483b9624a3e7d672af14ff63b9f/jupyterlab-4.4.4-py3-none-any.whl", upload-time = 2025-06-28T13:07:15Z, size = 12296310, hashes = { sha256 = "711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" } }] [[packages]] name = "jupyterlab-git" -version = "0.50.2" -sdist = { url = "https://files.pythonhosted.org/packages/c5/00/a8123e22ead190dce24c75aeb9a5708f3a6886abc91a3e18d45d7418e8aa/jupyterlab_git-0.50.2.tar.gz", upload-time = 2024-10-29T15:43:17Z, size = 15248711, hashes = { sha256 = "ceefdc85632caf499a048b434459d03b5e621665801e9db7197bd486f5d33433" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/65/70/fb5a07776b00802afae9687e61db5e44b08959129988ba5df3791bd420b9/jupyterlab_git-0.50.2-py3-none-any.whl", upload-time = 2024-10-29T15:43:14Z, size = 1154095, hashes = { sha256 = "059114d19fcb5560f82914b070ed7654fab62392e3c1fdd5946c5dc460ae3697" } }] +version = "0.51.2" +sdist = { url = "https://files.pythonhosted.org/packages/f1/a2/071e86f015ce319b42131d543a1108fd92a97e7d5bea622a81a51cd4cf5e/jupyterlab_git-0.51.2.tar.gz", upload-time = 2025-06-12T14:44:39Z, size = 14471184, hashes = { sha256 = "ad91d56f0298fd70e7d8f8cd1ee76d261f0dfb940cc490717a31d64df4b7d562" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/50/dc/d59ae2a9e4671c090ba9ef9f1228a62cf49ad80b4bc3d716565bb7e6a81b/jupyterlab_git-0.51.2-py3-none-any.whl", upload-time = 2025-06-12T14:44:37Z, size = 367704, hashes = { sha256 = "1150edabd844f9a5a3c7ba676409b18b8cc95b1a7bb171f357318f4075db2263" } }] [[packages]] name = "jupyterlab-lsp" @@ -2145,9 +2145,9 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df83 [[packages]] name = "odh-elyra" -version = "4.2.1" -sdist = { url = "https://files.pythonhosted.org/packages/65/df/ebdb17819a6bb03462bb9a18fcf8562134a6480294fb0aa57cac1007a4af/odh_elyra-4.2.1.tar.gz", upload-time = 2025-05-07T17:39:30Z, size = 2155327, hashes = { sha256 = "a2c1c56ee9cb413f24efd3837410dd714745536036dc444bd722084406435a78" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/de/c9/ef598a974b7913b4efc6eab7e6fa7736b5025194ced4ce378bae5137f7c2/odh_elyra-4.2.1-py3-none-any.whl", upload-time = 2025-05-07T17:39:28Z, size = 4316225, hashes = { sha256 = "255ada78cfac3f5f60427b1106baaca269513dfd06694ebb06755dcb20618689" } }] +version = "4.2.3" +sdist = { url = "https://files.pythonhosted.org/packages/ef/6d/0a17cc7e0301699073905b357542548f31f7bf74412526980bc2cbdba972/odh_elyra-4.2.3.tar.gz", upload-time = 2025-08-01T11:16:37Z, size = 2155613, hashes = { sha256 = "15799e9a00bb57e1c76404808a07710563a7a0ef0c67716facc3e09416ac96b0" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ab/f6/545f2e578a3da76b0719dd193e7c54113130501bc036fb5a6cccdcf911cd/odh_elyra-4.2.3-py3-none-any.whl", upload-time = 2025-08-01T11:16:35Z, size = 4316571, hashes = { sha256 = "e4a5f19d54a4d07497d0c7aceb26ca1316e543f3c135d9aede72341611532f87" } }] [[packages]] name = "onnx" @@ -3703,9 +3703,9 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc [[packages]] name = "skl2onnx" -version = "1.17.0" -sdist = { url = "https://files.pythonhosted.org/packages/f2/91/53c1d0085fb11c6ae2b2092160f55380fa361b8ced1144eada49add70adb/skl2onnx-1.17.0.tar.gz", upload-time = 2024-05-30T12:28:02Z, size = 931965, hashes = { sha256 = "7127dc84e470f489f68094ccfff9a5a815b609f700d43e708e6f658a33b06403" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/61/db/343223f105c34cbf8dd1237693e8628deb5009f2a9c4f2e3d2c6546f2766/skl2onnx-1.17.0-py2.py3-none-any.whl", upload-time = 2024-05-30T12:27:59Z, size = 298421, hashes = { sha256 = "27942fc2743efe9dff56380001da4685812d0f5b1b0b9c1a032e80d059d6779a" } }] +version = "1.18.0" +sdist = { url = "https://files.pythonhosted.org/packages/a9/fb/f91b284365bab4ddcb0f77f573e60dc96bc232648de997814e3ddd832e97/skl2onnx-1.18.0.tar.gz", upload-time = 2024-12-18T07:25:09Z, size = 935240, hashes = { sha256 = "39ea4ae30c5c182355a1824467013158214444e0ce0b18f33338bd827d4fb00f" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/08/de/e8825727acd80484aa28080de62e4dc21f076d6887c10db49e2c8a66578f/skl2onnx-1.18.0-py2.py3-none-any.whl", upload-time = 2024-12-18T07:25:06Z, size = 300310, hashes = { sha256 = "1345d8a1d3aa4a11abfbed4bc984b777023dad85e1c9fe4eb727cba5ee0fcaa8" } }] [[packages]] name = "smart-open" diff --git a/jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml b/jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml index 5c06099719..e8cf6b45c5 100644 --- a/jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml +++ b/jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml @@ -21,7 +21,7 @@ dependencies = [ "plotly~=6.0.0", "scikit-learn~=1.6.1", "scipy~=1.15.2", - "skl2onnx~=1.17.0", + "skl2onnx~=1.18.0", "onnxconverter-common~=1.13.0", # Required for skl2onnx, as upgraded version is not compatible with protobuf "codeflare-sdk~=0.29.0", "kubeflow-training==1.9.0", @@ -33,17 +33,17 @@ dependencies = [ "mysql-connector-python~=9.3.0", # JupyterLab packages - "odh-elyra==4.2.1", + "odh-elyra==4.2.3", - "jupyterlab==4.2.7", + "jupyterlab==4.4.4", "jupyter-bokeh~=4.0.5", - "jupyter-server~=2.15.0", + "jupyter-server~=2.16.0", "jupyter-server-proxy~=4.4.0", "jupyter-server-terminals~=0.5.3", - "jupyterlab-git~=0.50.1", + "jupyterlab-git~=0.51.1", "jupyterlab-lsp~=5.1.0", "jupyterlab-widgets~=3.0.13", - "jupyter-resource-usage~=1.1.0", + "jupyter-resource-usage~=1.1.1", "nbdime~=4.0.2", "nbgitpuller~=1.2.2", diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml b/runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml index 241328616b..64dea07dd5 100644 --- a/runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml @@ -3099,9 +3099,9 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc [[packages]] name = "skl2onnx" -version = "1.17.0" -sdist = { url = "https://files.pythonhosted.org/packages/f2/91/53c1d0085fb11c6ae2b2092160f55380fa361b8ced1144eada49add70adb/skl2onnx-1.17.0.tar.gz", upload-time = 2024-05-30T12:28:02Z, size = 931965, hashes = { sha256 = "7127dc84e470f489f68094ccfff9a5a815b609f700d43e708e6f658a33b06403" } } -wheels = [{ url = "https://files.pythonhosted.org/packages/61/db/343223f105c34cbf8dd1237693e8628deb5009f2a9c4f2e3d2c6546f2766/skl2onnx-1.17.0-py2.py3-none-any.whl", upload-time = 2024-05-30T12:27:59Z, size = 298421, hashes = { sha256 = "27942fc2743efe9dff56380001da4685812d0f5b1b0b9c1a032e80d059d6779a" } }] +version = "1.18.0" +sdist = { url = "https://files.pythonhosted.org/packages/a9/fb/f91b284365bab4ddcb0f77f573e60dc96bc232648de997814e3ddd832e97/skl2onnx-1.18.0.tar.gz", upload-time = 2024-12-18T07:25:09Z, size = 935240, hashes = { sha256 = "39ea4ae30c5c182355a1824467013158214444e0ce0b18f33338bd827d4fb00f" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/08/de/e8825727acd80484aa28080de62e4dc21f076d6887c10db49e2c8a66578f/skl2onnx-1.18.0-py2.py3-none-any.whl", upload-time = 2024-12-18T07:25:06Z, size = 300310, hashes = { sha256 = "1345d8a1d3aa4a11abfbed4bc984b777023dad85e1c9fe4eb727cba5ee0fcaa8" } }] [[packages]] name = "smart-open" diff --git a/runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml b/runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml index 4c03cadf24..ff6c2690a4 100644 --- a/runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml +++ b/runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml @@ -20,7 +20,7 @@ dependencies = [ "plotly~=6.0.0", "scikit-learn~=1.6.1", "scipy~=1.15.2", - "skl2onnx~=1.17.0", + "skl2onnx~=1.18.0", # Required for skl2onnx, as upgraded version is not compatible with protobuf "onnxconverter-common~=1.13.0", "codeflare-sdk~=0.29.0", diff --git a/tests/test_main.py b/tests/test_main.py index e6c6da9826..dea3bd17cc 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -245,9 +245,6 @@ def test_image_pyprojects_version_alignment(subtests: pytest_subtests.plugin.Sub logging.debug(f"skipping {directory.name}/pyproject.toml as it is not an image directory") continue - if _skip_unimplemented_manifests(directory, call_skip=False): - continue - pyproject = tomllib.loads(file.read_text()) for d in pyproject["project"]["dependencies"]: requirement = packaging.requirements.Requirement(d) From ae6357277d13ec37bcfadfa7c936d64208e59814 Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 07:46:06 +0000 Subject: [PATCH 45/47] chore(deps): update odh-workbench-codeserver-datascience-cpu-py312-ubi9 to b0385e9 Image created from 'https://github.com/opendatahub-io/notebooks?rev=99698b723aec25ae787886c001b1ecef888d9fc3' Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> --- manifests/base/params-latest.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/base/params-latest.env b/manifests/base/params-latest.env index 520da16516..15e4c06568 100644 --- a/manifests/base/params-latest.env +++ b/manifests/base/params-latest.env @@ -54,7 +54,7 @@ odh-pipeline-runtime-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-pipeli odh-workbench-jupyter-trustyai-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-trustyai-cpu-py312-ubi9@sha256:7660519a678a53f621fda0abcb3ddcf94b647d7c376f43d218aed0dbf8afeb7b -odh-workbench-codeserver-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-codeserver-datascience-cpu-py312-ubi9@sha256:b039a4e9ab545c94b09dd784bfe2fa63cf88a3b76af5c5a70c8c38dfcf839fd9 +odh-workbench-codeserver-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-codeserver-datascience-cpu-py312-ubi9@sha256:b0385e99d89f770db1bd959cf0b8808974bbb91f8867382c86b93a70464eb11e odh-pipeline-runtime-minimal-cpu-py312-ubi9-n=quay.io/opendatahub/odh-pipeline-runtime-minimal-cpu-py312-ubi9@sha256:e3ca1fe6d0ff82d7050c6c8fec81b13b114b34573711750ae0d4f667eacd6965 From 17831973a813762c946339776ffac32d05371f8f Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 07:53:46 +0000 Subject: [PATCH 46/47] chore(deps): update odh-workbench-jupyter-datascience-cpu-py312-ubi9 to 40b63ff Image created from 'https://github.com/opendatahub-io/notebooks?rev=99698b723aec25ae787886c001b1ecef888d9fc3' Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> --- manifests/base/params-latest.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/base/params-latest.env b/manifests/base/params-latest.env index 15e4c06568..ba1ac7ab53 100644 --- a/manifests/base/params-latest.env +++ b/manifests/base/params-latest.env @@ -40,7 +40,7 @@ odh-workbench-jupyter-minimal-cuda-py312-ubi9-n=quay.io/opendatahub/odh-workbenc odh-workbench-jupyter-minimal-rocm-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-minimal-rocm-py312-ubi9@sha256:78c2692ed17d40dedf8d5ed19d4a8e0daa8fb42637800fea0b2181da9e757c84 -odh-workbench-jupyter-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-datascience-cpu-py312-ubi9@sha256:ff3efca7f8bb355a69abdcb77b1c990dcd832f577cc86b8c95e35db4efe2b425 +odh-workbench-jupyter-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-datascience-cpu-py312-ubi9@sha256:40b63ff6daf920df36c8d10dd5285bbaf6acedd99278b6f065584b34cd174c6d odh-workbench-jupyter-pytorch-cuda-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-pytorch-cuda-py312-ubi9@sha256:bd7bc346ac3364cfb0210c84d29478ddfd45853efc089e7469decb57332c3a2b From 1ff5c917619d19db7db02f0c62faf33fdb815672 Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 07:54:20 +0000 Subject: [PATCH 47/47] chore(deps): update odh-pipeline-runtime-datascience-cpu-py312-ubi9 to 9b91566 Image created from 'https://github.com/opendatahub-io/notebooks?rev=99698b723aec25ae787886c001b1ecef888d9fc3' Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> --- manifests/base/params-latest.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/base/params-latest.env b/manifests/base/params-latest.env index 15e4c06568..7081275c2c 100644 --- a/manifests/base/params-latest.env +++ b/manifests/base/params-latest.env @@ -50,7 +50,7 @@ odh-workbench-jupyter-pytorch-rocm-py312-ubi9-n=quay.io/opendatahub/odh-workbenc odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9@sha256:f4886ec2034ed187d018db049fef18897e585fabb162c411f689a1ca2bcbb218 -odh-pipeline-runtime-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-pipeline-runtime-datascience-cpu-py312-ubi9@sha256:64f7849c80beb063a8d51aca874fd129024dd08ceaa2ead72be51aa69dd48952 +odh-pipeline-runtime-datascience-cpu-py312-ubi9-n=quay.io/opendatahub/odh-pipeline-runtime-datascience-cpu-py312-ubi9@sha256:9b91566ffdcb5dfb69a13eb9f7fa20b64d7dae0e3a99c0fa1eb01dbc4795987e odh-workbench-jupyter-trustyai-cpu-py312-ubi9-n=quay.io/opendatahub/odh-workbench-jupyter-trustyai-cpu-py312-ubi9@sha256:7660519a678a53f621fda0abcb3ddcf94b647d7c376f43d218aed0dbf8afeb7b