Skip to content

Conversation

jesuino
Copy link
Contributor

@jesuino jesuino commented Oct 1, 2025

Description

This is a preparation for Elyra 4.3.0 release. It is a working in progress because we need Elyra to be released. Elyra 4.3.0 should be released from main branch, hence a few environment properties changes are required in order to avoid breaking the images that use Elyra.

This PR include the following changes:

  • Uses the ODH Elyra bootstrapper.py removing the need of having a copy here
  • Uses a new System Property (ELYRA_INSTALL_PACKAGES=false) so it will work on air-gapped environments
  • Added configuration to make it compatible with Elyra 4.3.0
  • Update to Elyra 4.3.1 to include RHOAIENG-35198

How Has This Been Tested?

We are waiting images to be available so we can make Elyra sanity checks.

Summary by CodeRabbit

  • New Features
    • Enhanced Elyra setup with stricter execution, safer path handling, and new configuration toggles to control package installation and script output behavior.
  • Refactor
    • Removed legacy pipeline bootstrapper components to streamline runtimes and reduce image complexity.
  • Chores
    • Upgraded Elyra to 4.3.1 across all Jupyter images; image streams updated from 4.2 to 4.3.
  • Bug Fixes
    • Standardized environment variable for pipeline SSL certificates (KF_PIPELINES_SSL_SA_CERTS) to improve compatibility.
  • Improvements
    • Pre-bundled bootstrapper assets to avoid runtime installations and improve reliability.

Copy link
Contributor

openshift-ci bot commented Oct 1, 2025

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Copy link
Contributor

coderabbitai bot commented Oct 1, 2025

Walkthrough

The PR updates odh-elyra to 4.3.x across images and manifests, modifies Elyra setup shell script behavior and env vars, and removes bootstrapper.py modules from multiple runtime images. One pylock includes broader package URL/hash churn. No new modules are added.

Changes

Cohort / File(s) Summary of changes
Elyra version bump (pyproject)
jupyter/datascience/ubi9-python-3.12/pyproject.toml, jupyter/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml, jupyter/pytorch/ubi9-python-3.12/pyproject.toml, jupyter/rocm/pytorch/ubi9-python-3.12/pyproject.toml, jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml, jupyter/tensorflow/ubi9-python-3.12/pyproject.toml, jupyter/trustyai/ubi9-python-3.12/pyproject.toml
Bump odh-elyra dependency from 4.2.4 to 4.3.1.
Elyra asset updates (pylock)
jupyter/datascience/ubi9-python-3.12/pylock.toml, jupyter/pytorch+llmcompressor/ubi9-python-3.12/pylock.toml, jupyter/pytorch/ubi9-python-3.12/pylock.toml, jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml, jupyter/tensorflow/ubi9-python-3.12/pylock.toml, jupyter/trustyai/ubi9-python-3.12/pylock.toml
Update odh-elyra to 4.3.1 with new sdist/wheel URLs, sizes, hashes.
ROCm PyTorch lock refresh
jupyter/rocm/pytorch/ubi9-python-3.12/pylock.toml
Update odh-elyra to 4.3.1 and refresh multiple packages’ URLs/hashes (including some same-version rebuilds).
Elyra setup script
jupyter/datascience/ubi9-python-3.12/setup-elyra.sh
Add set -Eeuxo pipefail, quote $(jupyter --data-dir) paths, copy bootstrapper assets to avoid runtime installs, rename PIPELINES_SSL_SA_CERTS to KF_PIPELINES_SSL_SA_CERTS, add ELYRA_INSTALL_PACKAGES=false and ELYRA_GENERIC_NODES_ENABLE_SCRIPT_OUTPUT_TO_S3=false.
Bootstrapper removals (runtimes)
runtimes/datascience/ubi9-python-3.12/utils/bootstrapper.py, runtimes/minimal/ubi9-python-3.12/utils/bootstrapper.py, runtimes/pytorch+llmcompressor/ubi9-python-3.12/utils/bootstrapper.py, runtimes/pytorch/ubi9-python-3.12/utils/bootstrapper.py, runtimes/rocm-pytorch/ubi9-python-3.12/utils/bootstrapper.py, runtimes/rocm-tensorflow/ubi9-python-3.12/utils/bootstrapper.py, runtimes/tensorflow/ubi9-python-3.12/utils/bootstrapper.py
Delete modules implementing FileOp framework, MinIO/COS I/O, dependency/output/metadata processing, and CLI main().
Imagestream manifests (Elyra bump)
manifests/base/jupyter-datascience-notebook-imagestream.yaml, manifests/base/jupyter-pytorch-llmcompressor-imagestream.yaml, manifests/base/jupyter-pytorch-notebook-imagestream.yaml, manifests/base/jupyter-rocm-pytorch-notebook-imagestream.yaml, manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml, manifests/base/jupyter-tensorflow-notebook-imagestream.yaml, manifests/base/jupyter-trustyai-notebook-imagestream.yaml
Update listed Odh-Elyra version references from 4.2 to 4.3 in N and N-1 entries where present.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title Check ⚠️ Warning The title references a post-release for Elyra v4.3.0 but the changes actually bump the dependency to v4.3.1 and remove the local bootstrapper modules, so it misstates the primary update and version. It does not clearly summarize either the version bump to 4.3.1 or the removal of the bootstrapper script, making it misleading to reviewers. A concise title should accurately reflect the dependency upgrade and script removal. Please update the title to clearly and accurately describe the main change, for example “Remove local bootstrapper and bump ODH Elyra dependency to v4.3.1,” so that it correctly reflects both the script removal and version upgrade.
Description Check ⚠️ Warning The PR description provides Description and How Has This Been Tested sections but omits the repository template’s required self checklist and merge criteria with checkboxes, and the testing details are incomplete since only pending sanity checks are mentioned. Without the checklist items and merge criteria, reviewers cannot verify that tests have been run or that commits meet the project’s merge standards. The testing section should also include concrete commands, environment details, and outcomes once available. Add the missing Self checklist and Merge criteria sections from the template with appropriate checkboxes, and expand the testing section to include the specific commands run, environments used, and test results once the Elyra images are available.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d51378c and ef9820a.

📒 Files selected for processing (8)
  • jupyter/datascience/ubi9-python-3.12/setup-elyra.sh (2 hunks)
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml (2 hunks)
  • manifests/base/jupyter-pytorch-llmcompressor-imagestream.yaml (1 hunks)
  • manifests/base/jupyter-pytorch-notebook-imagestream.yaml (2 hunks)
  • manifests/base/jupyter-rocm-pytorch-notebook-imagestream.yaml (2 hunks)
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml (2 hunks)
  • manifests/base/jupyter-tensorflow-notebook-imagestream.yaml (2 hunks)
  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml (2 hunks)
✅ Files skipped from review due to trivial changes (2)
  • manifests/base/jupyter-pytorch-notebook-imagestream.yaml
  • manifests/base/jupyter-pytorch-llmcompressor-imagestream.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • jupyter/datascience/ubi9-python-3.12/setup-elyra.sh
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1875
File: runtimes/pytorch/ubi9-python-3.12/pylock.toml:0-0
Timestamp: 2025-09-12T23:14:23.293Z
Learning: Issue #3325 in elyra-ai/elyra repository documents the urllib3 2.x compatibility blocker affecting jupyter/* images in opendatahub-io/notebooks. The dependency chain odh-elyra==4.2.3 → appengine-python-standard==1.1.10 → urllib3>=1.26.2,<2 prevents upgrading from urllib3=1.26.20 to 2.5.0 in images that include elyra, explaining why only codeserver/* and runtimes/* images achieved the 2.5.0 upgrade in PR #1875.
📚 Learning: 2025-09-04T16:34:03.232Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2268
File: manifests/base/jupyter-datascience-notebook-imagestream.yaml:64-81
Timestamp: 2025-09-04T16:34:03.232Z
Learning: Repository: opendatahub-io/notebooks
Policy: N-1 dependency/version bumps are violations unless a new notebooks release is being onboarded. In onboarding/promotion PRs (e.g., 2025b), the previous N becomes the new N-1, so N-1 blocks in manifests/base/*-imagestream.yaml may show higher versions than the old N-1; this is expected and should not be flagged.
File context example: manifests/base/jupyter-datascience-notebook-imagestream.yaml — N: "2025.2" (py312), N-1: "2025.1" (py311).

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-tensorflow-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-pytorch-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-09-04T16:21:47.890Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2268
File: manifests/base/jupyter-tensorflow-notebook-imagestream.yaml:64-90
Timestamp: 2025-09-04T16:21:47.890Z
Learning: In opendatahub-io/notebooks, during release rollover PRs (e.g., 2025b onboarding in PR #2268), the process intentionally:
- Introduces new N images (often those previously staged under manifests/overlays/additional).
- Shifts the previous N images into the N-1 slots in manifests/base/*-imagestream.yaml.
- As a result, the N-1 blocks will show version increases compared to the old N-1, reflecting the prior N. This is not a violation of the N-1 freeze policy; the freeze applies after the shift (N-1 is then updated only for security).
Example: manifests/base/jupyter-tensorflow-notebook-imagestream.yaml — N: 2025.2 (py312, TF 2.19); N-1: 2025.1 (py311, TF 2.18) with corresponding py312/py311 placeholders.

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-08-08T14:48:51.662Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1782
File: manifests/overlays/additional/jupyter-trustyai-cpu-py312-ubi9-imagestream.yaml:28-28
Timestamp: 2025-08-08T14:48:51.662Z
Learning: In opendatahub-io/notebooks, imagestream manifests (e.g., manifests/*-imagestream.yaml) intentionally list dependency versions in opendatahub.io/notebook-python-dependencies as major.minor only (omit patch). Review suggestions should not ask to change these to exact patch versions; keep major.minor to match project convention.

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-tensorflow-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-06-16T11:06:33.139Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1154
File: manifests/base/jupyter-pytorch-notebook-imagestream.yaml:0-0
Timestamp: 2025-06-16T11:06:33.139Z
Learning: In the opendatahub-io/notebooks repository, N-1 versions of images in manifest files (like imagestream.yaml files) should not be updated regularly. The versions of packages like codeflare-sdk in N-1 images are frozen to what was released when the image was moved from N to N-1 version. N-1 images are only updated for security vulnerabilities of packages, not for regular version bumps. This is why the version of packages in N-1 images may be quite old compared to the latest N version.

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-09-04T16:23:06.395Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2268
File: manifests/base/jupyter-tensorflow-notebook-imagestream.yaml:64-90
Timestamp: 2025-09-04T16:23:06.395Z
Learning: In opendatahub-io/notebooks, imagestream manifests keep only N and N-1. During a promotion PR (e.g., onboarding a new release), the previous N becomes the new N-1 and the previous N-1 entries are removed from manifests. Therefore, N-1 can show higher versions than the removed older N-1; this is expected and should not be flagged as an N-1 freeze violation. Applies to manifests/base/*-imagestream.yaml across all workbenches/runtimes.

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-09-12T23:14:23.293Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1875
File: runtimes/pytorch/ubi9-python-3.12/pylock.toml:0-0
Timestamp: 2025-09-12T23:14:23.293Z
Learning: Issue #3325 in elyra-ai/elyra repository documents the urllib3 2.x compatibility blocker affecting jupyter/* images in opendatahub-io/notebooks. The dependency chain odh-elyra==4.2.3 → appengine-python-standard==1.1.10 → urllib3>=1.26.2,<2 prevents upgrading from urllib3=1.26.20 to 2.5.0 in images that include elyra, explaining why only codeserver/* and runtimes/* images achieved the 2.5.0 upgrade in PR #1875.

Applied to files:

  • manifests/base/jupyter-trustyai-notebook-imagestream.yaml
  • manifests/base/jupyter-tensorflow-notebook-imagestream.yaml
  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-pytorch-notebook-imagestream.yaml
📚 Learning: 2025-08-08T14:57:20.636Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1782
File: manifests/overlays/additional/jupyter-trustyai-cpu-py312-ubi9-imagestream.yaml:1-1
Timestamp: 2025-08-08T14:57:20.636Z
Learning: In opendatahub-io/notebooks, when validating imagestream manifest dependency versions, compare manifest major.minor values against exact pinned versions in requirements.txt/Pipfile.lock for the same image; manifests intentionally omit patch numbers (project convention).

Applied to files:

  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-06-13T08:34:01.300Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1154
File: manifests/base/jupyter-tensorflow-notebook-imagestream.yaml:45-45
Timestamp: 2025-06-13T08:34:01.300Z
Learning: When updating dependency versions in `manifests/base/*-imagestream.yaml`, the project convention is to modify only the newest tag (e.g., "2025.1") and intentionally leave earlier tags (e.g., "2024.2") unchanged.

Applied to files:

  • manifests/base/jupyter-datascience-notebook-imagestream.yaml
📚 Learning: 2025-09-18T10:46:07.688Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2414
File: manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml:34-37
Timestamp: 2025-09-18T10:46:07.688Z
Learning: TensorFlow ROCm 2.18.1 is incompatible with NumPy 2.0+ according to AMD's official documentation. The imagestream manifest should use NumPy 1.26 instead of 2.0 for tensorflow-rocm-2.18.1-based images to prevent runtime incompatibility.

Applied to files:

  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
📚 Learning: 2025-09-12T09:51:55.421Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-09-12T09:51:55.421Z
Learning: jiridanek identified orphaned TensorFlow ROCm Python 3.12 entries in manifests/base/params-latest.env during PR #2103 review. The params file references odh-workbench-jupyter-tensorflow-rocm-py312-ubi9 and odh-pipeline-runtime-tensorflow-rocm-py312-ubi9 images with 2025a-v1.35 tags, but the corresponding source directories (jupyter/rocm/tensorflow/ubi9-python-3.12/ and runtimes/rocm-tensorflow/ubi9-python-3.12/) don't exist in the repository, creating a broken build situation where Tekton pipelines exist but have no source to build from.

Applied to files:

  • manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (46)
  • GitHub Check: build (cuda-jupyter-minimal-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (jupyter-minimal-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (jupyter-datascience-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (cuda-rstudio-c9s-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (jupyter-minimal-ubi9-python-3.12, 3.12, linux/ppc64le, false) / build
  • GitHub Check: build (runtime-datascience-ubi9-python-3.12, 3.12, linux/s390x, false) / build
  • GitHub Check: build (runtime-minimal-ubi9-python-3.12, 3.12, linux/s390x, false) / build
  • GitHub Check: build (rocm-runtime-pytorch-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-datascience-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (cuda-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-cuda-tensorflow-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (rocm-jupyter-pytorch-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-cuda-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (rstudio-c9s-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-minimal-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-cuda-pytorch-llmcompressor-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (cuda-jupyter-pytorch-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (codeserver-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (cuda-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (jupyter-trustyai-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (cuda-jupyter-minimal-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (rocm-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (cuda-jupyter-pytorch-llmcompressor-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (jupyter-datascience-ubi9-python-3.12, 3.12, linux/ppc64le, false) / build
  • GitHub Check: build (rocm-runtime-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (jupyter-minimal-ubi9-python-3.12, 3.12, linux/s390x, false) / build
  • GitHub Check: build (rocm-jupyter-minimal-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-cuda-pytorch-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (codeserver-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-minimal-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-trustyai-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-datascience-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-datascience-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-cuda-py312-ubi9-on-pull-request
  • GitHub Check: validation-of-sw-versions-in-imagestreams
  • GitHub Check: code-static-analysis
  • GitHub Check: Generate job matrix
🔇 Additional comments (5)
manifests/base/jupyter-rocm-tensorflow-notebook-imagestream.yaml (1)

39-39: Elyra bump aligns with runtime packaging.

I checked the pyproject/pylock updates for this image and they now pin odh-elyra 4.3.1; keeping the manifest at 4.3 respects the major.minor convention documented for imagestream metadata. Looks good. Based on learnings.

Also applies to: 78-78

manifests/base/jupyter-trustyai-notebook-imagestream.yaml (1)

41-41: TrustyAI manifest stays consistent with Elyra rollout.

Runtime specs now depend on odh-elyra 4.3.1, so advertising 4.3 here complies with the imagestream major.minor policy and keeps the metadata truthful. Based on learnings.

Also applies to: 83-83

manifests/base/jupyter-tensorflow-notebook-imagestream.yaml (1)

42-42: TensorFlow imagestream metadata matches the Elyra upgrade.

Confirmed the backing image now installs odh-elyra 4.3.1; listing 4.3 here keeps alignment while following the major.minor-only manifest convention. Based on learnings.

Also applies to: 84-84

manifests/base/jupyter-datascience-notebook-imagestream.yaml (1)

36-36: Data Science imagestream reflects the Elyra 4.3 roll-out correctly.

The underlying image pins odh-elyra 4.3.1, and advertising 4.3 here keeps the manifest truthful while respecting the project’s major.minor display rule. Based on learnings.

Also applies to: 74-74

manifests/base/jupyter-rocm-pytorch-notebook-imagestream.yaml (1)

39-39: ROCm PyTorch manifest stays in sync with Elyra 4.3 adoption.

Verified the image build now consumes odh-elyra 4.3.1; publishing 4.3 here matches that update and adheres to the major.minor manifest policy. Based on learnings.

Also applies to: 79-79


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added the review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel label Oct 1, 2025
@openshift-ci openshift-ci bot added the size/xxl label Oct 1, 2025
# Copy Elyra dependencies for air-gapped enviroment
COPY ${DATASCIENCE_SOURCE_CODE}/utils ./utils/
# Download Elyra boostrapper.py
RUN curl -fL https://raw.githubusercontent.com/opendatahub-io/elyra/refs/heads/main/elyra/kfp/bootstrapper.py \
Copy link
Member

@atheo89 atheo89 Oct 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we sure that this will work in disconnected envs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @atheo89 I thought that it would work because this would be done during the image build time. The idea is now that Notebook images don't need a custom bootstrapper.py we could download it from Elyra and use the new system property we introduced: ELYRA_INSTALL_PACKAGES to prevent Elyra from trying to download packages - this new flag should do that

Copy link
Contributor

@caponetto caponetto Oct 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we curl that file from a fixed tag (associated with the Elyra version in the image) instead of main?
EDIT: nvm, I saw the other comment below.

@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 7, 2025
# Copy Elyra dependencies for air-gapped enviroment
COPY ${TENSORFLOW_SOURCE_CODE}/utils ./utils/
# Download Elyra boostrapper.py
RUN curl -fL https://raw.githubusercontent.com/opendatahub-io/elyra/refs/tags/v4.3.0/elyra/kfp/bootstrapper.py \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't this bootstrapper installed together with the odh-elyra package? Can't we grab it from python's site-packages? And if it is not installed, can't we install it that way?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a great suggestion, it should be with the elyra package, it would be better to copy it from there - I will check and update the Dockerfile accordingly

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jiridanek I found the local bootstrapper.py and copy it to utils on script setup-elyra.sh - would it be the best place to do it?

Thanks!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds legit to me, yes

@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 9, 2025
@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 9, 2025
@jesuino jesuino marked this pull request as ready for review October 9, 2025 16:30
@openshift-ci openshift-ci bot requested review from atheo89 and jiridanek October 9, 2025 16:31
@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 9, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 366c43e and d51378c.

📒 Files selected for processing (23)
  • jupyter/datascience/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/datascience/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/datascience/ubi9-python-3.12/setup-elyra.sh (2 hunks)
  • jupyter/pytorch+llmcompressor/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/pytorch/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/pytorch/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/rocm/pytorch/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/rocm/pytorch/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/tensorflow/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/tensorflow/ubi9-python-3.12/pyproject.toml (1 hunks)
  • jupyter/trustyai/ubi9-python-3.12/pylock.toml (1 hunks)
  • jupyter/trustyai/ubi9-python-3.12/pyproject.toml (1 hunks)
  • runtimes/datascience/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu (1 hunks)
  • runtimes/minimal/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/pytorch+llmcompressor/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/pytorch/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/rocm-pytorch/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/rocm-tensorflow/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
  • runtimes/tensorflow/ubi9-python-3.12/utils/bootstrapper.py (0 hunks)
💤 Files with no reviewable changes (7)
  • runtimes/rocm-tensorflow/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/tensorflow/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/pytorch+llmcompressor/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/minimal/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/datascience/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/rocm-pytorch/ubi9-python-3.12/utils/bootstrapper.py
  • runtimes/pytorch/ubi9-python-3.12/utils/bootstrapper.py
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1875
File: runtimes/pytorch/ubi9-python-3.12/pylock.toml:0-0
Timestamp: 2025-09-12T23:14:23.293Z
Learning: Issue #3325 in elyra-ai/elyra repository documents the urllib3 2.x compatibility blocker affecting jupyter/* images in opendatahub-io/notebooks. The dependency chain odh-elyra==4.2.3 → appengine-python-standard==1.1.10 → urllib3>=1.26.2,<2 prevents upgrading from urllib3=1.26.20 to 2.5.0 in images that include elyra, explaining why only codeserver/* and runtimes/* images achieved the 2.5.0 upgrade in PR #1875.
📚 Learning: 2025-09-12T23:14:23.293Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1875
File: runtimes/pytorch/ubi9-python-3.12/pylock.toml:0-0
Timestamp: 2025-09-12T23:14:23.293Z
Learning: Issue #3325 in elyra-ai/elyra repository documents the urllib3 2.x compatibility blocker affecting jupyter/* images in opendatahub-io/notebooks. The dependency chain odh-elyra==4.2.3 → appengine-python-standard==1.1.10 → urllib3>=1.26.2,<2 prevents upgrading from urllib3=1.26.20 to 2.5.0 in images that include elyra, explaining why only codeserver/* and runtimes/* images achieved the 2.5.0 upgrade in PR #1875.

Applied to files:

  • jupyter/trustyai/ubi9-python-3.12/pyproject.toml
  • jupyter/trustyai/ubi9-python-3.12/pylock.toml
  • jupyter/tensorflow/ubi9-python-3.12/pylock.toml
  • jupyter/datascience/ubi9-python-3.12/pylock.toml
  • jupyter/pytorch+llmcompressor/ubi9-python-3.12/pylock.toml
  • jupyter/tensorflow/ubi9-python-3.12/pyproject.toml
  • jupyter/datascience/ubi9-python-3.12/pyproject.toml
  • jupyter/pytorch/ubi9-python-3.12/pyproject.toml
  • jupyter/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml
📚 Learning: 2025-07-23T16:18:42.922Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-23T16:18:42.922Z
Learning: The TensorFlow ROCm Python 3.12 compatibility issue in opendatahub-io/notebooks PR #1259 was caused by using tensorflow-rocm==2.14.0.600 in Pipfile.lock which lacks Python 3.12 wheels, while the Pipfile specifies tensorflow_rocm=~=2.18.1. The solution requires updating Pipfile sources to include https://repo.radeon.com/rocm/manylinux/rocm-rel-6.4/ repository which contains tensorflow_rocm-2.18.1-cp312-cp312-manylinux_2_28_x86_64.whl and regenerating Pipfile.lock using the piplock-refresh GitHub Action.

Applied to files:

  • jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml
📚 Learning: 2025-08-29T12:20:28.311Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1875
File: runtimes/pytorch+llmcompressor/ubi9-python-3.12/Pipfile:70-70
Timestamp: 2025-08-29T12:20:28.311Z
Learning: jiridanek requested GitHub issue creation for urllib3 2.x compatibility blocked by appengine-python-standard dependency during PR #1875 review. Issue #3325 was created on elyra-ai/elyra repository explaining the dependency conflict chain (odh-elyra==4.2.3 → appengine-python-standard==1.1.10 → urllib3>=1.26.2,<2) that blocks updating urllib3 to 2.5.0 for CVE security fixes across notebook runtime environments.

Applied to files:

  • jupyter/tensorflow/ubi9-python-3.12/pyproject.toml
  • jupyter/datascience/ubi9-python-3.12/pyproject.toml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (14)
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-datascience-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-trustyai-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-minimal-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Generate job matrix
🔇 Additional comments (6)
jupyter/pytorch/ubi9-python-3.12/pylock.toml (1)

2595-2599: Confirmed odh-elyra 4.3.1 artifacts on PyPI
sdist and wheel are live with matching SHA256 hashes; safe to merge.

jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml (1)

2511-2513: Confirm Elyra target version.

This lockfile now pins odh-elyra to 4.3.1, while the PR description frames the update as 4.3.0. Please double-check that 4.3.1 is the intended release (and already available for the build pipeline) before merging.

jupyter/rocm/pytorch/ubi9-python-3.12/pylock.toml (1)

2459-2461: Lockfile entry looks consistent with 4.3.1.

Version, URLs, timestamps, and hashes follow the established pattern for odh-elyra updates. 👍

jupyter/datascience/ubi9-python-3.12/pyproject.toml (1)

30-30: Dependency bump matches Elyra 4.3.x rollout.

Thanks for updating the datascience image to pin odh-elyra==4.3.1; this keeps it aligned with the new bootstrapper flow introduced elsewhere in the PR. No further action from my side.

jupyter/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml (1)

46-46: Good to see odh-elyra unified at 4.3.1.

The pytorch+llmcompressor image now tracks the same Elyra release as the rest of the stack, which will simplify maintenance once 4.3.x ships. Looks solid.

jupyter/pytorch+llmcompressor/ubi9-python-3.12/pylock.toml (1)

2706-2708: Confirm odh-elyra bump target, lock consistency, and urllib3 compatibility
Lock pins 4.3.1 but PR title says 4.3.0—confirm intended version, ensure all pylock.toml files use 4.3.1, and verify that appengine-python-standard no longer enforces urllib3<2.

Comment on lines 77 to 78
RUN curl -fL https://raw.githubusercontent.com/opendatahub-io/elyra/refs/tags/v4.3.0/elyra/kfp/bootstrapper.py \
-o ./utils/bootstrapper.py
Copy link
Contributor

@coderabbitai coderabbitai bot Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Align bootstrapper version with Elyra bump and avoid network-dependent builds.

We now pull bootstrapper.py at build time from Elyra tag v4.3.0, but the rest of this PR upgrades ODH Elyra to 4.3.1. Shipping a 4.3.0 bootstrapper alongside 4.3.1 bits is a mismatch that can regress the fixes we’re picking up. In addition, downloading from GitHub during the build defeats disconnected/air-gapped builds—the very scenario the new ELYRA_INSTALL_PACKAGES=false knob is supposed to support. Please vendor the correct 4.3.1 bootstrapper (or fetch it from a pre-staged artifact inside the image) so the Docker build stays reproducible and works without external network access.

🤖 Prompt for AI Agents
In runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu around lines 77-78, the
Dockerfile downloads bootstrapper.py from Elyra tag v4.3.0 at build time which
mismatches the repo bump to v4.3.1 and prevents air-gapped/disconnected builds;
replace the curl step with a reproducible, network-free approach by vendoring
the v4.3.1 bootstrapper into the build context (or copying it from a pre-staged
artifact inside the image/build context), update the Dockerfile to ADD/COPY that
local file into ./utils/bootstrapper.py instead of curling, and ensure the
vendored file version matches Elyra v4.3.1 (optionally add a checksum or comment
noting the source and tag).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what if we do

cp /opt/app-root/lib/python3.12/site-packages/elyra/kfp/bootstrapper.py ...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jiridanek, that's an excellent solution! 🎯

Copying bootstrapper.py from the installed Elyra package would indeed solve both issues:

  • Version alignment: Automatically uses the correct 4.3.1 version
  • Air-gapped builds: No network dependency during build

However, there's an ordering consideration in the Dockerfile. Currently:

  1. Line 75: COPY ${MINIMAL_SOURCE_CODE}/utils ./utils/
  2. Line 77-78: curl bootstrapper.py (problematic)
  3. Line 80: uv pip install (this installs odh-elyra and creates site-packages)

To implement your approach, the copy would need to happen after the uv pip install step, since that's when the Elyra package gets installed to site-packages. Something like:

# Copy Elyra dependencies for air-gapped environment
COPY ${MINIMAL_SOURCE_CODE}/utils ./utils/

RUN echo "Installing softwares and packages" && \
    uv pip install --strict --no-deps --no-cache ... && \
    # Copy bootstrapper from installed Elyra package
    cp /opt/app-root/lib/python3.12/site-packages/elyra/kfp/bootstrapper.py ./utils/bootstrapper.py && \
    chmod -R g+w /opt/app-root/lib/python3.12/site-packages && \
    fix-permissions /opt/app-root -P

This approach is cleaner, more maintainable, and naturally stays in sync with the Elyra version specified in pylock.toml. 👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

recheck, changes were made

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the current state of the Dockerfile
cat runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu | grep -A 15 "Copy Elyra dependencies"

Length of output: 775


🏁 Script executed:

#!/bin/bash
# Look for any bootstrapper.py references in the file
grep -n "bootstrapper" runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the entire RUN command that installs packages to see if cp was added
sed -n '/^RUN echo "Installing softwares and packages"/,/fix-permissions/p' runtimes/minimal/ubi9-python-3.12/Dockerfile.cpu

Length of output: 652


🏁 Script executed:

#!/bin/bash
# Check if bootstrapper.py exists in the minimal utils directory
ls -la runtimes/minimal/ubi9-python-3.12/utils/

Length of output: 236


🏁 Script executed:

#!/bin/bash
# Check if bootstrapper.py was deleted or is present
fd -t f "bootstrapper.py" runtimes/minimal/ubi9-python-3.12/

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the git status of the minimal runtime to see what files changed
git diff --name-status origin/main...HEAD -- runtimes/minimal/ubi9-python-3.12/ | head -20

Length of output: 40


🏁 Script executed:

#!/bin/bash
# Check if minimal runtime has any setup scripts
ls -la runtimes/minimal/ubi9-python-3.12/ | grep -E "setup|sh$"

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the datascience runtime for comparison
ls -la runtimes/datascience/ubi9-python-3.12/utils/

Length of output: 236


🏁 Script executed:

#!/bin/bash
# Look for any Elyra-related setup scripts in minimal runtime
fd -t f -e sh . runtimes/minimal/ubi9-python-3.12/

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the PR changes to understand what was modified
git diff --stat HEAD~1 HEAD -- runtimes/minimal/

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the datascience image to see if it has setup-elyra.sh
fd -t f "setup-elyra.sh" jupyter/datascience/ubi9-python-3.12/

Length of output: 51


🏁 Script executed:

#!/bin/bash
# Look at the setup-elyra.sh to confirm the cp approach
cat jupyter/datascience/ubi9-python-3.12/setup-elyra.sh | grep -A 3 -B 3 "bootstrapper"

Length of output: 261


🏁 Script executed:

#!/bin/bash
# Check what Dockerfile references the minimal runtime
rg -l "FROM.*runtime-minimal" --type dockerfile 2>/dev/null || rg -l "runtime-minimal" jupyter/

Length of output: 0


@jiridanek, perfect! ✅ The changes look great:

  1. Version alignment issue resolved: The problematic curl downloading v4.3.0 has been removed from the Dockerfile.

  2. Air-gapped build support maintained: The setup-elyra.sh script now implements exactly what you suggested:

    cp /opt/app-root/lib/python3.12/site-packages/elyra/kfp/bootstrapper.py /opt/app-root/bin/utils/
  3. Clean architecture: The minimal runtime serves as a base without Elyra-specific setup, and derived images (like datascience) handle the bootstrapper copy in their setup scripts after package installation.

This approach ensures the bootstrapper version always matches the installed odh-elyra package (4.3.1) and works perfectly in disconnected environments. The solution is maintainable and self-documenting with the comment acknowledging ELYRA_INSTALL_PACKAGES=false requirement. Nice work! 🎯


🧠 Learnings used
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1333
File: runtimes/rocm-pytorch/ubi9-python-3.12/utils/bootstrapper.py:1-769
Timestamp: 2025-07-08T19:35:49.482Z
Learning: jiridanek requested GitHub issue creation for bootstrapper code duplication problem in runtimes/rocm-pytorch/ubi9-python-3.12/utils/bootstrapper.py during PR #1333 review. After an initial failed attempt, issue #1349 was successfully created with comprehensive problem description covering maintenance overhead and consistency risks from duplicate implementations across 5 Python 3.12 runtime environments, four solution options (symlinks, import-based, template-based, direct shared import) with pros/cons analysis, clear acceptance criteria for consolidation and maintainability, step-by-step implementation guidance, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Learnt from: jiridanek
PR: opendatahub-io/notebooks#1333
File: runtimes/pytorch/ubi9-python-3.12/utils/bootstrapper.py:619-626
Timestamp: 2025-07-08T19:33:14.340Z
Learning: jiridanek requested GitHub issue creation for Python 3.12 version check bug in bootstrapper.py during PR #1333 review. Issue #1348 was created with comprehensive problem description covering version check exclusion affecting all Python 3.12 runtime images, detailed impact analysis of bootstrapper execution failures, clear solution with code examples, affected files list including all 6 runtime bootstrapper copies, acceptance criteria for testing and verification, implementation notes about code duplication and upstream reporting, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Learnt from: jiridanek
PR: opendatahub-io/notebooks#2215
File: runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu:0-0
Timestamp: 2025-09-05T12:10:50.856Z
Learning: jiridanek requested GitHub issue creation for Dockerfile environment variable refactoring during PR #2215 review. Issue #2311 was created addressing build-only variables (OPENBLAS_VERSION, ONNX_VERSION, GRPC_PYTHON_BUILD_SYSTEM_OPENSSL) being unnecessarily written to /etc/profile.d/ppc64le.sh in runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu, causing variable duplication across stages, unreliable sourcing in non-login build contexts, and violation of DRY principles. The issue includes comprehensive problem description covering affected lines 30-37, detailed impact analysis of build reliability and maintenance overhead, three solution options with centralized ARG/ENV approach as recommended, clear acceptance criteria for version centralization and build-only variable cleanup, and specific implementation guidance with code examples, assigned to jiridanek, continuing the established pattern of systematic infrastructure improvements through detailed issue tracking.

If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 9, 2025
Copy link
Member

@jiridanek jiridanek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jesuino please also update elyra version in manifests, it is causing tests to fail

[checking the `notebook-python-dependencies` array] (pyproject=PosixPath('/home/runner/work/notebooks/notebooks/jupyter/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml')) SUBFAIL tests/test_main.py::test_image_pyprojects - AssertionError: Odh-Elyra: manifest /home/runner/work/notebooks/notebooks/manifests/base/jupyter-pytorch-llmcompressor-imagestream.yaml declares 4.2, but pylock.toml pins 4.3.1
assert (4, 3) == (4, 2)

https://github.com/opendatahub-io/notebooks/actions/runs/18386078682/job/52384729336?pr=2555

Copy link
Contributor

openshift-ci bot commented Oct 10, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jiridanek

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jiridanek jiridanek added this to the rhoai-3.0 milestone Oct 10, 2025
@openshift-ci-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD 74811d1 and 2 for PR HEAD 895639c in total

@openshift-ci-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD 7db0feb and 1 for PR HEAD 895639c in total

@openshift-ci openshift-ci bot removed the lgtm label Oct 10, 2025
Copy link
Contributor

openshift-ci bot commented Oct 10, 2025

New changes are detected. LGTM label has been removed.

@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 10, 2025
@jiridanek
Copy link
Member

@jesuino ready for review / merge, or not yet?

@jesuino
Copy link
Contributor Author

jesuino commented Oct 10, 2025

Hello @jiridanek

We just finished sanity checks for Elyra 4.3.1 and no major issue was found.

Feel free to go ahead and review/merge this.

Thanks!

@openshift-ci openshift-ci bot added size/xxl and removed size/xxl labels Oct 10, 2025
Copy link
Contributor

openshift-ci bot commented Oct 10, 2025

@jesuino: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/images ef9820a link true /test images
ci/prow/runtime-cuda-pt-ubi9-python-3-12-pr-image-mirror ef9820a link true /test runtime-cuda-pt-ubi9-python-3-12-pr-image-mirror
ci/prow/rocm-runtime-pt-ubi9-python-3-12-pr-image-mirror ef9820a link true /test rocm-runtime-pt-ubi9-python-3-12-pr-image-mirror
ci/prow/runtime-cuda-tf-ubi9-python-3-12-pr-image-mirror ef9820a link true /test runtime-cuda-tf-ubi9-python-3-12-pr-image-mirror
ci/prow/runtime-ubi9-python-3-12-pr-image-mirror ef9820a link true /test runtime-ubi9-python-3-12-pr-image-mirror
ci/prow/notebook-cuda-jupyter-pt-ubi9-python-3-12-pr-image-mirror ef9820a link true /test notebook-cuda-jupyter-pt-ubi9-python-3-12-pr-image-mirror
ci/prow/notebook-cuda-jupyter-tf-ubi9-python-3-12-pr-image-mirror ef9820a link true /test notebook-cuda-jupyter-tf-ubi9-python-3-12-pr-image-mirror
ci/prow/notebook-jupyter-tai-ubi9-python-3-12-pr-image-mirror ef9820a link true /test notebook-jupyter-tai-ubi9-python-3-12-pr-image-mirror
ci/prow/notebook-rocm-jupyter-pt-ubi9-python-3-12-pr-image-mirror ef9820a link true /test notebook-rocm-jupyter-pt-ubi9-python-3-12-pr-image-mirror
ci/prow/runtime-ds-ubi9-python-3-12-pr-image-mirror ef9820a link true /test runtime-ds-ubi9-python-3-12-pr-image-mirror
ci/prow/notebook-jupyter-ds-ubi9-python-3-12-pr-image-mirror ef9820a link true /test notebook-jupyter-ds-ubi9-python-3-12-pr-image-mirror
ci/prow/rocm-notebooks-py312-e2e-tests ef9820a link true /test rocm-notebooks-py312-e2e-tests
ci/prow/notebooks-py312-ubi9-e2e-tests ef9820a link true /test notebooks-py312-ubi9-e2e-tests

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

set -Eeuxo pipefail

# By copying this we must make sure that ELYRA_INSTALL_PACKAGES=false
cp /opt/app-root/lib/python3.12/site-packages/elyra/kfp/bootstrapper.py /opt/app-root/bin/utils/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good attempt, but it does not work

DEBUG    root:workbench_image_test.py:239 cp: cannot create regular file '/opt/app-root/bin/utils/bootstrapper.py': Permission denied

https://github.com/opendatahub-io/notebooks/actions/runs/18417328348/job/52484077578?pr=2555#step:31:1523

the images don't start

set -x
set -Eeuxo pipefail

# By copying this we must make sure that ELYRA_INSTALL_PACKAGES=false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what will set this in runtime images? and what will copy the bootstrapper into place in runtime images? we don't have an entrypoint in runtime images

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel size/xxl

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants