Skip to content

Conversation

dibryant
Copy link
Contributor

@dibryant dibryant commented Sep 5, 2025

Fixes for https://issues.redhat.com/browse/RHAIENG-394?filter=-1

Description

Add 2025b on the Dockefile Label section

How Has This Been Tested?

Merge criteria:

  • The commits are squashed in a cohesive manner and have meaningful messages.
  • Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
  • The developer has manually tested the changes and verified that the changes work

Summary by CodeRabbit

  • New Features

    • CI/CD now applies a release label (release=2025b) to built container images for easier discovery and filtering.
  • Chores

    • Build pipelines updated to accept and propagate image-label metadata across supported variants (CPU/GPU, CUDA/ROCm, multiple runtimes).
    • Pipeline parameters standardized for consistent labeling.
    • Replaced or removed a few legacy build-args-file settings where appropriate.

Copy link
Contributor

coderabbitai bot commented Sep 5, 2025

Walkthrough

Adds an image-labels parameter (value: ["release=2025b"]) to many Tekton PipelineRun manifests, removes build-args-file in a few PipelineRuns, and introduces/propagates an image-labels parameter in multiarch push/pull pipelines to pass labels into build matrix steps.

Changes

Cohort / File(s) Summary of changes
Base images: add image-labels
.tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml, .../odh-base-image-cuda-py311-c9s-push.yaml, .../odh-base-image-cuda-py312-c9s-pull-request.yaml, .../odh-base-image-cuda-py312-c9s-push.yaml, .../odh-base-image-cuda-py312-ubi9-pull-request.yaml, .../odh-base-image-cuda-py312-ubi9-push.yaml, .../odh-base-image-rocm-py312-c9s-pull-request.yaml, .../odh-base-image-rocm-py312-c9s-push.yaml, .../odh-base-image-rocm-py312-ubi9-pull-request.yaml, .../odh-base-image-rocm-py312-ubi9-push.yaml
Add spec.params entry: - name: image-labels with value: containing - release=2025b.
Pipeline runtimes: add image-labels
.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml, .../odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
Add spec.params entry: - name: image-labels with value: containing - release=2025b.
Workbench: add or replace with image-labels
.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml, .../odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
In many manifests add - name: image-labels with value: containing - release=2025b. In several workbench manifests build-args-file is removed and replaced by image-labels.
Pipelines: multiarch push & pull — accept & propagate image-labels
.tekton/multiarch-push-pipeline.yaml, .tekton/multiarch-pull-request-pipeline.yaml
Add pipeline-level image-labels parameter (array, default [] / described). Propagate into build-images matrix as IMAGE_LABELS: $(params.image-labels[*]). Also add per-platform image-labels entry in pull-request pipeline build-platforms.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The PR description includes a brief summary and a Description line but leaves the "How Has This Been Tested?" section empty and does not complete the self-checklist; required testing and verification details are therefore missing and the description is incomplete for repository standards. Please update the PR body with concrete testing steps and results (commands run, environment, observed outcomes), confirm that make test was run or explain why not, mark the applicable self-checklist boxes, and optionally list the key files changed or the exact label added (release=2025b) to help reviewers validate the change.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Title Check ✅ Passed The title describes adding a notebooks release version to the Dockerfile label section, which aligns with the changes that add an image-labels parameter carrying "release=2025b" across Tekton PipelineRun manifests and pipelines to apply that label to built images; it is concise and relevant. The title is slightly imprecise because the PR primarily updates pipeline YAML to pass labels (not directly editing Dockerfiles) and contains a spelling error ("Dockefile").
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

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: 11

♻️ Duplicate comments (6)
.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Same validation risk: confirm Pipeline declares and uses image-labels

Mirror of the previous file: this PipelineRun will be rejected if the Pipeline doesn’t have the param and wiring.

Run the script from the earlier comment; it checks both pipelines.

.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Pipeline param parity check (avoid unknown param error)

As above: confirm the Pipeline spec has image-labels (type array) and tasks consume it.

Use the earlier verification script.

.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Prevent PipelineRun rejection: add/verify image-labels in the referenced Pipeline

Same concern as the other files.

Run the previously provided verification script.

.tekton/odh-base-image-cuda-py312-c9s-push.yaml (1)

39-41: Image labels for push: verify pipeline wiring

Same verification as above for multiarch-push-pipeline and its build task(s).

.tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml (1)

47-49: Image labels on PR builds: check param exists upstream and is consumed

Mirror the checks to ensure param is declared in the Pipeline and applied during build.

.tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1)

45-47: LLMCompressor PR: confirm Pipeline/Task supports image-labels

Consistent with other files; please verify upstream definition/usage.

🧹 Nitpick comments (17)
.tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Optional: quote the label value for consistency across YAML and avoid accidental parsing edge-cases.

Not required, but we usually quote key=value strings in lists.

Apply:

-    - release=2025b
+    - "release=2025b"
.tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1)

39-41: Optional: add standard OCI version label too.

Consider also labeling org.opencontainers.image.version=2025b for broader tooling compatibility.

.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (2)

46-48: Quote the label value for YAML robustness

Plain scalars with “=” parse fine, but we’ve had tooling trip on them. Quoting is safer and consistent.

   - name: image-labels
     value:
-    - release=2025b
+    - "release=2025b"

46-48: Update the generator instead of hand-editing generated files

Header states this file is autogenerated. Add image-labels in scripts/generate_pull_request_pipelineruns.py and regenerate to avoid drift.

.tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Quote the value for consistency

   - name: image-labels
     value:
-    - release=2025b
+    - "release=2025b"
.tekton/odh-base-image-rocm-py312-c9s-push.yaml (1)

34-36: Quote the value for YAML/tooling stability

   - name: image-labels
     value:
-    - release=2025b
+    - "release=2025b"
.tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Quote the value

   - name: image-labels
     value:
-    - release=2025b
+    - "release=2025b"
.tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Quote the value

   - name: image-labels
     value:
-    - release=2025b
+    - "release=2025b"
.tekton/odh-base-image-cuda-py311-c9s-push.yaml (1)

33-35: Avoid manual drift if generated.

If this push manifest is generated by a script, add image-labels there as well so future regenerations don’t drop it.

.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Looks good; minor consistency suggestion.

Param block is valid YAML and placement is fine. For readability, consider keeping image-labels adjacent to other image-output params across files.

.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Prefer templating the release value to avoid future drift.

Hardcoding release=2025b will require mass edits next rollover. Consider templating it (and updating the generator) so future bumps are single-source-of-truth.

Example (assuming generator supplies {{release_stream}}):

-  - name: image-labels
-    value:
-    - release=2025b
+  - name: image-labels
+    value:
+    - release={{release_stream}}
.tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml (2)

48-50: Autogeneration warning: update the generator, not just outputs.

These files are marked autogenerated. Ensure scripts/generate_pull_request_pipelineruns.py (and the push variant generator) are updated to include image-labels, or future regenerations will drop this change.

I can propose a small patch to the generator once you point me to its param emission block.


48-50: Consider centralizing the release value.

Template the release string (e.g., {{release_stream}}) or source it from params-latest.env to prevent manual edits each cycle.

.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1)

46-48: Syntax/readability nit: quote label value.

Not required, but quoting avoids any YAML or tooling surprises with equals signs.

-    - release=2025b
+    - "release=2025b"
.tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1)

44-46: Minor: align param ordering with generator conventions.

If generators/grouping expect image-labels near other image outputs/metadata (after output-image or image-expires-after), consider moving it there for consistency across files. Functional no-op.

.tekton/odh-base-image-rocm-py312-ubi9-push.yaml (1)

31-37: Optional: add standard OCI version label alongside custom release.

If acceptable for your consumers, also set org.opencontainers.image.version=2025b for broader tooling compatibility; keep release=2025b for internal selectors.

.tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml (1)

41-45: Quote not required, but allowed.

release=2025b is fine as a bare string in YAML. If you prefer explicitness, quoting is okay and won’t change semantics.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between b1244d7 and 1247ab8.

📒 Files selected for processing (29)
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • manifests/base/commit-latest.env (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-12T20:04:31.021Z
Learning: Issue #862 in opendatahub-io/notebooks reveals that the Docker image tag length fix from issue #631 is mathematically insufficient. While the fix correctly limits branch names to 40 characters, this fails for longer target names like "runtime-minimal-ubi9-python-3.11" (33 chars) which still produces tags exceeding the 128-character Docker limit. The fix needs dynamic calculation based on actual target name length rather than a fixed 40-character assumption.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1909
File: rstudio/c9s-python-3.11/Dockerfile.cpu:15-18
Timestamp: 2025-08-12T08:36:45.281Z
Learning: jiridanek requested GitHub issue creation for adding ticket references to upgrade block markers during PR #1909 review, specifically noting that scripts/dockerfile_fragments.py script can be used to update code within labeled begin/end blocks and care must be taken not to break the script. Issue was created with comprehensive problem description covering traceability enhancement across 30+ Dockerfiles, critical automation compatibility warnings, multiple implementation options, detailed acceptance criteria including script testing requirements, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1306
File: jupyter/trustyai/ubi9-python-3.12/Dockerfile.cpu:4-4
Timestamp: 2025-07-04T05:49:10.314Z
Learning: jiridanek directs base image pinning security concerns to existing comprehensive issue #1242 "Improve Docker FROM image versioning by avoiding :latest tags" rather than addressing them in individual PRs, continuing the established pattern of systematic security and quality tracking in opendatahub-io/notebooks.
Learnt from: atheo89
PR: opendatahub-io/notebooks#1258
File: codeserver/ubi9-python-3.11/Dockerfile.cpu:32-32
Timestamp: 2025-07-07T11:08:48.524Z
Learning: atheo89 requested GitHub issue creation for multi-architecture Dockerfile improvements during PR #1258 review, specifically for enhancing structural consistency across Docker stages, replacing $(uname -m) with ${TARGETARCH} for cross-architecture builds, and adding OCI-compliant metadata labels. Issue #1332 was created with comprehensive problem description, phased implementation approach, detailed acceptance criteria, implementation guidance with code examples, and proper context linking, continuing the established pattern of systematic code quality improvements.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
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.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T14:46:03.215Z
Learning: jiridanek requested GitHub issue creation for two nitpicks during PR #1588 review: comment wording improvement in ROCm TensorFlow Dockerfile and typo fix in Jupyter DataScience Dockerfile stage header. Issues #1589 and #1590 were successfully created with comprehensive problem descriptions, specific file locations and line numbers, clear before/after solutions, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
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.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2114
File: Makefile:22-24
Timestamp: 2025-08-27T07:37:13.713Z
Learning: jiridanek's approach to removing Python 3.11 workbenches involves handling different components incrementally across multiple PRs: Tekton pipeline cleanup in the current PR, pr-merge-image-delete.yml cleanup in a subsequent PR, while preserving historical context comments in workflow templates that don't require changes.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1379
File: .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml:40-44
Timestamp: 2025-07-11T11:15:25.572Z
Learning: jiridanek requested GitHub issue creation for critical Tekton array parameter syntax error during PR #1379 review, affecting all 32 pipeline files with additional-tags parameter. Issue #1382 was created with comprehensive problem description covering both Python 3.11 and 3.12 pipeline files (16 each), detailed root cause analysis of value: vs values: syntax error, critical impact assessment of complete pipeline execution failure, complete list of all affected files across workbench and runtime types, implementation commands with sed scripts, detailed acceptance criteria, implementation notes about systematic copy-paste error propagation, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for RStudio py311 Tekton push pipelines during PR #1379 review. Issue #1384 was successfully created covering two RStudio variants (CPU and CUDA) found in manifests/base/params-latest.env, with comprehensive problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-08T19:09:48.746Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1306
File: jupyter/trustyai/ubi9-python-3.12/kustomize/base/kustomization.yaml:8-12
Timestamp: 2025-07-08T19:09:48.746Z
Learning: jiridanek requested GitHub issue creation for misleading CUDA prefix in TrustyAI image tags during PR #1306 review, affecting both Python 3.11 and 3.12 versions. Issue #1338 was created with comprehensive problem description covering both affected images, repository pattern analysis comparing correct vs incorrect naming conventions, clear solution with code examples, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.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:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
  • manifests/base/commit-latest.env
📚 Learning: 2025-08-19T15:47:12.801Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml:49-50
Timestamp: 2025-08-19T15:47:12.801Z
Learning: The singlearch-push-pipeline in opendatahub-io/notebooks repository contains all standard build pipeline parameters including git-url, revision, output-image, dockerfile, path-context, and additional-tags, along with git-auth workspace and build-container task reference. Initial verification attempts may miss parameters if search patterns are too restrictive.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:15:25.572Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1379
File: .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml:40-44
Timestamp: 2025-07-11T11:15:25.572Z
Learning: jiridanek requested GitHub issue creation for critical Tekton array parameter syntax error during PR #1379 review, affecting all 32 pipeline files with additional-tags parameter. Issue #1382 was created with comprehensive problem description covering both Python 3.11 and 3.12 pipeline files (16 each), detailed root cause analysis of value: vs values: syntax error, critical impact assessment of complete pipeline execution failure, complete list of all affected files across workbench and runtime types, implementation commands with sed scripts, detailed acceptance criteria, implementation notes about systematic copy-paste error propagation, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for adding RStudio py311 Tekton push pipelines during PR #1379 review, referencing existing registry entries in manifests/base/params-latest.env but missing corresponding .tekton pipeline files. A comprehensive issue was created with detailed problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-20T12:39:54.827Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2000
File: runtimes/rocm-pytorch/ubi9-python-3.11/requirements.txt:807-809
Timestamp: 2025-08-20T12:39:54.827Z
Learning: Issue #2055 tracks the remaining runtimes/rocm-tensorflow/ubi9-python-3.12/requirements.txt file that stayed at jupyter-core==5.7.2 during PR #2000, which will be addressed separately due to specific challenges with that ROCm TensorFlow image.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-05T12:10:28.916Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2265
File: .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml:16-16
Timestamp: 2025-09-05T12:10:28.916Z
Learning: jiridanek requested GitHub issue creation for trigger path cleanup in pytorch+llmcompressor pipeline during PR #2265 review. The issue addresses copy-paste errors where irrelevant Minimal/DataScience trigger paths were included in the pytorch+llmcompressor pipeline on-cel-expression, causing unnecessary pipeline triggers. Solution involves removing unrelated paths and keeping only pytorch+llmcompressor-specific paths, build-args/cuda.conf, jupyter/utils, and the pipeline YAML itself, with comprehensive acceptance criteria and proper context linking.

Applied to files:

  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-01T17:35:29.175Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T17:35:29.175Z
Learning: jiridanek requested GitHub issue creation for adding pytorch+llmcompressor images to Makefile build targets during PR #1519 review. Issue #1598 was successfully created with comprehensive problem description covering missing build targets for both jupyter workbench and runtime images, detailed solution with specific Makefile code examples following established patterns, thorough acceptance criteria covering individual targets, BASE_DIRS variable inclusion, and all-images target integration, implementation notes about handling '+' characters in paths, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-04T09:22:45.818Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#2271
File: .tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml:32-33
Timestamp: 2025-09-04T09:22:45.818Z
Learning: atheo89 corrected CodeRabbit's analysis error regarding build-args-file parameter in singlearch-push-pipeline.yaml during PR #2271 review. The parameter was already properly declared at line 103 and consumed by tasks at lines 253 and 471, contradicting CodeRabbit's initial assessment that it was missing. This demonstrates the importance of thorough verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.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). (23)
  • GitHub Check: Red Hat Konflux / odh-base-image-rocm-py312-c9s-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-rocm-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-workbench-jupyter-pytorch-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-minimal-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-cuda-py311-c9s-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-cuda-py312-c9s-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-minimal-rocm-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-codeserver-datascience-cpu-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-cuda-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-workbench-jupyter-tensorflow-rocm-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-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-minimal-cpu-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-tensorflow-rocm-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-datascience-cpu-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-trustyai-cpu-py312-ubi9-on-pull-request
🔇 Additional comments (17)
.tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1)

39-41: LGTM: param structure and placement look correct.

Array form under value: matches existing style (e.g., additional-tags).

.tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml (2)

44-46: LGTM: consistent array param addition.

Matches style used elsewhere; placement after path-context is fine.


44-46: Confirm the Pipeline spec exposes/uses image-labels.

multiarch-pull-request-pipeline must declare image-labels and pass it through; otherwise this PR PipelineRun errors with “unknown param” or labels won’t be set.

Reuse the repo-wide script posted in the push YAML comment to verify both pipelines.

.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (2)

45-47: LGTM: param looks good.

Placement after build-args-file is consistent with similar pipelines.


45-47: Ensure generator + pipeline wiring exist for image-labels.

This file is autogenerated; please update scripts/generate_pull_request_pipelineruns.py (and any shared templates) to emit image-labels to avoid future drift, and confirm the pipeline consumes it.

Use the same verification script shared earlier; additionally check the generator script for “image-labels”.

.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (2)

45-47: LGTM: matches established pattern.


45-47: Double-check pipeline param definition and consumption.

As above: confirm multiarch-pull-request-pipeline has param image-labels and it’s wired to the build step.

Refer to the earlier repo-wide script.

.tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml (2)

45-47: LGTM: correct syntax; consistent placement.


45-47: Validate end-to-end: param exists in Pipeline and affects the image.

Same checks: Pipeline param presence, task wiring, and generator update.

Use the previously provided script.

.tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1)

44-46: PR objective vs implementation path.

PR title mentions “Dockerfile Label section”, but this approach injects labels via pipeline params. That’s fine if the build task translates them to image labels; otherwise, update Dockerfiles or clarify in the PR body.

.tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml (1)

45-47: No existing LABEL release= found in Dockerfiles; please verify and consider centralizing the release string.

Briefly, a search for LABEL … release= across all Dockerfile* patterns returned no matches—ensure no custom-named Dockerfiles define a conflicting label, then centralize the release=… value (e.g., via a templated variable) to simplify future updates.

.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Validate external build Task’s image-labels schema
This pipeline passes image-labels as an array of key=value strings to an external ClusterTask (e.g. buildah/build-container) that isn’t defined in this repo. Manually confirm that that Task expects a string array of key=value labels (not a map) for image-labels, or adjust to the correct schema to prevent silent no-ops.

.tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml (2)

45-47: Validate param compatibility and label application path.

Same as other files: confirm multiarch-pull-request-pipeline declares image-labels (array) and the task uses it to set OCI labels. Without this, the addition has no effect or fails at runtime.

Reuse the verification script from the other comment; it checks repo-wide.


45-47: LGTM on Tekton array syntax.

Using value: with a YAML list is correct for array params; not values:. Indentation is consistent.

.tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1)

46-48: Check parity across PR and push PipelineRuns.

If the intent is to label all builds for 2025b, ensure the corresponding push PipelineRuns also carry image-labels; otherwise, only ephemeral PR images get the release label.

Run the repo-wide check from the earlier script; it lists PipelineRuns missing image-labels.

.tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1)

44-46: Confirm the base-image pipeline also accepts image-labels.

This PipelineRun references the same (or a similar) multiarch pipeline. Verify it declares image-labels and the build step applies the labels for base images too.

Use the same grep script to confirm ParamSpec and usage.

.tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Confirm pipeline and task support for new image-labels param

  • I didn’t find image-labels declared in the multiarch-pull-request-pipeline definition or consumed by any build Tasks—please verify the Pipeline spec includes this param and tasks propagate it (e.g. $(params.image-labels) or --label flags).
  • Update the pull-request PipelineRun generator (e.g. generate_pull_request_pipelineruns.py) to inject image-labels, so regenerations won’t overwrite this change.

Comment on lines +43 to +45
- name: image-labels
value:
- release=2025b
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Confirm pipeline param exists and is wired to labeling step; update the generator instead of hand-editing autogen files.

This file is autogenerated; edit scripts/generate_pull_request_pipelineruns.py (and any related generators) so the change persists. Also verify that multiarch-pull-request-pipeline declares a param named image-labels (type: array) and passes it to the image build/task that applies labels; otherwise this addition will be ignored at runtime.

Run:


🏁 Script executed:

#!/bin/bash
# 1) Confirm the pipeline defines the param
rg -nC3 -g '!**/vendor/**' -P '(?s)\bkind:\s*Pipeline\b.*?\bmetadata:\s*\n.*?\bname:\s*multiarch-pull-request-pipeline\b.*?\bspec:\s*\n.*?\bparams:\s*\n.*?(?:-.*\n)*?\bname:\s*image-labels\b' .tekton

# 2) Check any task/step uses it (e.g., $(params.image-labels))
rg -n --pcre2 '\$\(\s*params\.image-labels\s*\)' .tekton

# 3) Ensure all autogenerated PR PipelineRuns gained the param
rg -n 'on-pull-request' .tekton | wc -l
rg -n 'name:\s*image-labels' .tekton | wc -l

Length of output: 353


Add image-labels to the multiarch-pull-request-pipeline spec.params, wire it into the image-build task, and update the generator
No image-labels param is defined in the pipeline YAML and no steps reference $(params.image-labels)—edit scripts/generate_pull_request_pipelineruns.py so autogenerated PipelineRuns include the array param and pass it to the build/task that applies labels.

🤖 Prompt for AI Agents
.tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml lines 43-45: the
PipelineRun/pipeline spec is missing an "image-labels" param and the image-build
task isn't receiving any labels; update the pipeline YAML to declare a param
named image-labels of type array (with appropriate default or allow empty), and
modify the image-build/taskref/taskSpec step(s) invocation to pass labels via
"$(params.image-labels)". Then edit
scripts/generate_pull_request_pipelineruns.py so autogenerated PipelineRun
objects include the image-labels array param in the params list and forward that
param value into the task invocation for the build/label step when rendering
PipelineRuns.

Comment on lines +34 to +36
- name: image-labels
value:
- release=2025b
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Ensure singlearch-push-pipeline supports image-labels (array) and passes it to the builder

Push runs will fail early if the Pipeline lacks the param, even if other params are valid.

Re-run the repo-wide script from the first file to confirm param declaration and usage.


🏁 Script executed:

#!/bin/bash
set -e
# Locate the singlearch-push-pipeline definition file
PIPELINE_FILE=$(rg -lP --max-count=1 'name:\s*singlearch-push-pipeline\b' -g '*.yaml' .tekton)
echo "Pipeline file: $PIPELINE_FILE"
# Print its params block
echo -e "\n=== params in $PIPELINE_FILE ==="
sed -n '/params:/,/^[[:space:]]*[^- ]/p' "$PIPELINE_FILE"
# Look for any references to image-labels in the pipeline
echo -e "\n=== Occurrences of image-labels in $PIPELINE_FILE ==="
grep -R -n 'image-labels' "$PIPELINE_FILE"

Length of output: 10470


🏁 Script executed:

#!/bin/bash
set -e
FILE=".tekton/singlearch-push-pipeline.yaml"
echo "=== Showing first 200 lines of $FILE ==="
head -n 200 "$FILE"
echo
echo "=== Listing all params declared in $FILE ==="
grep -n '^\s*-\s*name:' "$FILE"
echo
echo "=== Searching for 'image-labels' in $FILE ==="
grep -n 'image-labels' "$FILE" || echo "No occurrences of 'image-labels' found."

Length of output: 12361


Add and wire image-labels param in singlearch-push-pipeline
In .tekton/singlearch-push-pipeline.yaml, under spec.params add:

- name: image-labels
  type: array
  description: Array of image labels to apply to the built image
  default: []

Then, in the build-container task invocation, append:

- name: IMAGE_LABELS
  value: $(params.image-labels)

This ensures PipelineRuns supplying image-labels (e.g. release tags) won’t error out and that labels are passed through to the builder.

🤖 Prompt for AI Agents
In .tekton/odh-base-image-rocm-py312-c9s-push.yaml lines 34-36, add and wire an
image-labels parameter in .tekton/singlearch-push-pipeline.yaml: under
spec.params add a param named image-labels of type array with description "Array
of image labels to apply to the built image" and default [], and in the
build-container task invocation append the param mapping for IMAGE_LABELS with
value $(params.image-labels) so PipelineRuns can supply labels without errors
and they are forwarded to the builder.

Comment on lines +35 to +37
- name: image-labels
value:
- release=2025b
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Validate singlearch-push-pipeline supports image-labels and that the label lands in the built image.

Ensure the pipeline defines image-labels (array) and forwards it to the build step. Consider a post-build verify step (crane or skopeo) to assert the image contains label release=2025b to prevent silent drift.

Run:


🏁 Script executed:

#!/bin/bash
# Pipeline param presence
rg -nC3 -P '(?s)\bkind:\s*Pipeline\b.*?\bmetadata:\s*\n.*?\bname:\s*singlearch-push-pipeline\b.*?\bparams:\s*\n.*?(?:-.*\n)*?\bname:\s*image-labels\b' .tekton

# Wiring to tasks
rg -n --pcre2 '\$\(\s*params\.image-labels\s*\)' .tekton

Length of output: 219


🏁 Script executed:

#!/bin/bash
# Locate pipeline definition files referencing 'singlearch-push-pipeline'
echo "Searching for pipeline files containing 'singlearch-push-pipeline' or 'single-arch-push-pipeline':"
grep -R -n --include='*.yaml' -E 'singlearch-push-pipeline|single-arch-push-pipeline' .tekton || true

# Inspect found file(s) for params and wiring
for file in $(grep -R -l --include='*.yaml' -E 'singlearch-push-pipeline|single-arch-push-pipeline' .tekton); do
  echo -e "\n--- Inspecting $file ---"
  # Show params section
  rg -nC2 --pcre2 '\bparams:\b' "$file" || echo "No 'params:' section found"
  # Search for image-labels in param definitions
  rg -n --pcre2 '\bname:\s*image-labels\b' "$file" || echo "No 'image-labels' param declared"
  # Search for any occurrence of image-labels usage
  rg -n --pcre2 '\$\(\s*params\.(image-labels|imageLabels)\s*\)' "$file" || echo "No wiring of image-labels in tasks"
done

Length of output: 22161


Add and wire image-labels in the singlearch-push-pipeline

  • In .tekton/singlearch-push-pipeline.yaml, declare a parameter:
    params:
    - name: image-labels
      type: array
      default: []
  • Forward it into the build task (e.g. buildah bud or kaniko) as annotations/labels via $(params.image-labels).
  • (Optional) Add a post-build step using crane or skopeo to assert the image contains release=2025b, preventing silent drift.

Comment on lines +45 to +47
- name: image-labels
value:
- release=2025b
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Ensure the target Pipeline declares and uses param image-labels (array).

This PipelineRun passes an array param. Verify that the referenced Pipeline (multiarch-pull-request-pipeline) defines ParamSpec image-labels with type array and that the build task actually applies these labels (e.g., buildah --label). Otherwise, the run will fail with “param not declared” or silently ignore labels.

Run this repo-scoped check:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
# 1) Confirm the pipeline exists and declares the param
rg -nC3 -g ".tekton/**" -e $'^kind:\\s*Pipeline$' -e $'^metadata:\\n\\s*name:\\s*multiarch-pull-request-pipeline$' || true
rg -nC2 -g ".tekton/**" --pretty $'- name:\\s*image-labels\\b' || true
rg -nC2 -g ".tekton/**" --pretty $'type:\\s*array' || true

# 2) Confirm it’s consumed by tasks
rg -nC2 -g ".tekton/**" --pretty '\$\(\s*params\.image-labels' || true

# 3) Ensure all PR/push PipelineRuns have image-labels
echo "Missing image-labels in Tekton PipelineRuns:"
fd -a -e yaml .tekton | xargs -I{} bash -c 'grep -q "kind: PipelineRun" "{}" && (grep -q "name: image-labels" "{}" || echo "{}")'

Length of output: 1464


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

# 1) List all Tekton YAML files to locate pipeline definitions
echo "All Tekton YAML files:"
find .tekton -type f -name '*.yaml'

# 2) Find the multiarch-pull-request-pipeline file(s)
echo
echo "Files containing 'multiarch-pull-request-pipeline':"
grep -R -n "multiarch-pull-request-pipeline" .tekton

# 3) Confirm the pipeline declares the image-labels param with type array
PIPELINE_FILES=$(grep -R -l "multiarch-pull-request-pipeline" .tekton)
for file in $PIPELINE_FILES; do
  echo
  echo "Inspecting $file for params.image-labels:"
  grep -R -n -C2 "params:" "$file"
  grep -R -n "name:\s*image-labels" "$file" || echo "  ⚠️ name: image-labels not found"
  grep -R -n "type:\s*array" "$file" || echo "  ⚠️ type: array not found for image-labels"
done

# 4) Check that tasks within the pipeline reference params.image-labels
for file in $PIPELINE_FILES; do
  echo
  echo "Checking consumption of params.image-labels in $file:"
  grep -R -n "\$\{\s*params.image-labels" "$file" || echo "  ⚠️ params.image-labels not referenced"
done

# 5) Ensure every PipelineRun under .tekton includes the image-labels param
echo
echo "PipelineRun YAMLs missing the image-labels param:"
for pr in $(grep -R -l "kind:\s*PipelineRun" -n .tekton); do
  if ! grep -q -E "name:\s*image-labels" "$pr"; then
    echo "  - $pr"
  fi
done

Length of output: 58837


Add image-labels ParamSpec and consume it in multiarch-pull-request-pipeline.yaml
The pipeline does not declare a params.image-labels of type array (so any PipelineRun passing it will error) and no task uses $(params.image-labels). Add under the top-level params: block:

- name: image-labels
  type: array

Then inject $(params.image-labels) into the build task (e.g. buildah --label) to apply the labels.

🤖 Prompt for AI Agents
In .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
around lines 45-47, the file sets image-labels as a literal value but does not
declare a params.image-labels of type array nor consume it; add a top-level
params entry for image-labels with type: array (e.g. under the existing params:
block add "- name: image-labels\n  type: array") and then update the
pipeline/task invocation that runs the build
(multiarch-pull-request-pipeline.yaml consumer) to pass and consume
$(params.image-labels) into the build step (for example by mapping it to the
buildah --label arguments or the task param that supplies labels) so
PipelineRuns can supply an array of labels and the build command applies them.

@@ -1,34 +1,34 @@
odh-pipeline-runtime-datascience-cpu-py311-ubi9-commit-n=1247a41
odh-pipeline-runtime-datascience-cpu-py312-ubi9-commit-n=bb55a95
odh-pipeline-runtime-datascience-cpu-py312-ubi9-commit-n=b739607
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Commit pin updates: validate SHAs exist

Before merge, sanity-check that all new short SHAs resolve to commits in this repo.

Run:

Also applies to: 6-6, 9-9, 11-11, 14-14, 16-16, 18-18, 20-20, 22-22, 24-25, 27-27, 29-29, 32-32


🏁 Script executed:

#!/bin/bash
set -euo pipefail
file="manifests/base/commit-latest.env"
shas=$(rg -nP '^[a-z0-9\-]+-commit-n=([0-9a-f]{7})$' -r '$1' "$file" | sort -u)
missing=0
for s in $shas; do
  if ! git cat-file -t "$s" >/dev/null 2>&1; then
    echo "Missing commit: $s"; missing=1
  fi
done
if [ $missing -eq 0 ]; then echo "All SHAs resolve."; fi

Length of output: 4651


🏁 Script executed:

#!/bin/bash
set -euo pipefail
file="manifests/base/commit-latest.env"
shas=$(grep -oP 'commit-n=\K[0-9a-f]{7}' "$file" | sort -u)
missing=0
for s in $shas; do
  if ! git cat-file -t "$s" >/dev/null 2>&1; then
    echo "Missing commit: $s"
    missing=1
  fi
done
if [ $missing -eq 0 ]; then
  echo "All SHAs resolve."
fi

Length of output: 707


Missing commit SHA in manifests/base/commit-latest.env
The short SHA 646aeb5 does not resolve to any commit in this repository—update it to a valid, existing commit before merging.

🤖 Prompt for AI Agents
In manifests/base/commit-latest.env around line 2, the short commit SHA
"646aeb5" is invalid for this repo; replace it with a valid existing commit
reference (either the full 40-char SHA or a short SHA that resolves locally).
Use git rev-parse <candidate> or git log to find the correct commit, update the
line to that exact commit identifier, and re-run a git fetch/verify to ensure
the SHA resolves before merging.

@github-actions github-actions bot added the review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel label Sep 5, 2025
@openshift-ci openshift-ci bot added size/m and removed size/l labels Sep 19, 2025
@openshift-ci openshift-ci bot added size/m and removed size/m labels Sep 19, 2025
@openshift-ci openshift-ci bot added size/m and removed size/m labels Sep 19, 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: 3

♻️ Duplicate comments (1)
.tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (1)

46-48: Guard against unknown param error: add image-labels to the Pipeline spec

This PR Run references multiarch-pull-request-pipeline; add image-labels to that Pipeline’s spec.params and pass it into the build task as IMAGE_LABELS.

Also update scripts/generate_pull_request_pipelineruns.py so future regenerations preserve this param.

📜 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 6531dd1 and e1ed967.

📒 Files selected for processing (29)
  • .tekton/multiarch-push-pipeline.yaml (2 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (24)
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml
🧰 Additional context used
🧠 Learnings (14)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1909
File: rstudio/c9s-python-3.11/Dockerfile.cpu:15-18
Timestamp: 2025-08-12T08:36:45.281Z
Learning: jiridanek requested GitHub issue creation for adding ticket references to upgrade block markers during PR #1909 review, specifically noting that scripts/dockerfile_fragments.py script can be used to update code within labeled begin/end blocks and care must be taken not to break the script. Issue was created with comprehensive problem description covering traceability enhancement across 30+ Dockerfiles, critical automation compatibility warnings, multiple implementation options, detailed acceptance criteria including script testing requirements, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T14:46:03.215Z
Learning: jiridanek requested GitHub issue creation for two nitpicks during PR #1588 review: comment wording improvement in ROCm TensorFlow Dockerfile and typo fix in Jupyter DataScience Dockerfile stage header. Issues #1589 and #1590 were successfully created with comprehensive problem descriptions, specific file locations and line numbers, clear before/after solutions, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: atheo89
PR: opendatahub-io/notebooks#1258
File: codeserver/ubi9-python-3.11/Dockerfile.cpu:32-32
Timestamp: 2025-07-07T11:08:48.524Z
Learning: atheo89 requested GitHub issue creation for multi-architecture Dockerfile improvements during PR #1258 review, specifically for enhancing structural consistency across Docker stages, replacing $(uname -m) with ${TARGETARCH} for cross-architecture builds, and adding OCI-compliant metadata labels. Issue #1332 was created with comprehensive problem description, phased implementation approach, detailed acceptance criteria, implementation guidance with code examples, and proper context linking, continuing the established pattern of systematic code quality improvements.
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.
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.
📚 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:

  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-08T19:09:48.746Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1306
File: jupyter/trustyai/ubi9-python-3.12/kustomize/base/kustomization.yaml:8-12
Timestamp: 2025-07-08T19:09:48.746Z
Learning: jiridanek requested GitHub issue creation for misleading CUDA prefix in TrustyAI image tags during PR #1306 review, affecting both Python 3.11 and 3.12 versions. Issue #1338 was created with comprehensive problem description covering both affected images, repository pattern analysis comparing correct vs incorrect naming conventions, clear solution with code examples, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-19T15:47:12.801Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml:49-50
Timestamp: 2025-08-19T15:47:12.801Z
Learning: The singlearch-push-pipeline in opendatahub-io/notebooks repository contains all standard build pipeline parameters including git-url, revision, output-image, dockerfile, path-context, and additional-tags, along with git-auth workspace and build-container task reference. Initial verification attempts may miss parameters if search patterns are too restrictive.

Applied to files:

  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/multiarch-push-pipeline.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for RStudio py311 Tekton push pipelines during PR #1379 review. Issue #1384 was successfully created covering two RStudio variants (CPU and CUDA) found in manifests/base/params-latest.env, with comprehensive problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:15:25.572Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1379
File: .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml:40-44
Timestamp: 2025-07-11T11:15:25.572Z
Learning: jiridanek requested GitHub issue creation for critical Tekton array parameter syntax error during PR #1379 review, affecting all 32 pipeline files with additional-tags parameter. Issue #1382 was created with comprehensive problem description covering both Python 3.11 and 3.12 pipeline files (16 each), detailed root cause analysis of value: vs values: syntax error, critical impact assessment of complete pipeline execution failure, complete list of all affected files across workbench and runtime types, implementation commands with sed scripts, detailed acceptance criteria, implementation notes about systematic copy-paste error propagation, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-19T15:49:45.132Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-cuda-py311-ubi9-push.yaml:35-36
Timestamp: 2025-08-19T15:49:45.132Z
Learning: jiridanek requested GitHub issue creation for two PipelineRef compatibility problems during PR #2004 review: missing additional-tags parameter in singlearch-push-pipeline and missing netrc workspace binding in PipelineRuns. Issues were successfully created with comprehensive problem descriptions covering technical details, impact analysis on multiple affected files, clear solutions with code examples, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for adding RStudio py311 Tekton push pipelines during PR #1379 review, referencing existing registry entries in manifests/base/params-latest.env but missing corresponding .tekton pipeline files. A comprehensive issue was created with detailed problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-04T09:22:45.818Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#2271
File: .tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml:32-33
Timestamp: 2025-09-04T09:22:45.818Z
Learning: atheo89 corrected CodeRabbit's analysis error regarding build-args-file parameter in singlearch-push-pipeline.yaml during PR #2271 review. The parameter was already properly declared at line 103 and consumed by tasks at lines 253 and 471, contradicting CodeRabbit's initial assessment that it was missing. This demonstrates the importance of thorough verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-24T14:05:28.815Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:0-0
Timestamp: 2025-07-24T14:05:28.815Z
Learning: jiridanek confirmed that CodeRabbit's original analysis about missing additional-tags parameter in Tekton pipelines was practically correct. While builds can succeed without the parameter declaration due to Tekton's flexibility, having the default parameter declaration becomes valuable when removing explicit argument values, providing better maintainability and cleaner configuration management. Build success doesn't always indicate optimal implementation.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-19T16:06:35.822Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml:37-38
Timestamp: 2025-08-19T16:06:35.822Z
Learning: jiridanek corrected CodeRabbit's parameter analysis error for Tekton PipelineRun in opendatahub-io/notebooks repository. The git-url parameter was correctly defined in the PipelineRun at line 53, demonstrating the importance of careful verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-24T13:37:21.946Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:68-121
Timestamp: 2025-07-24T13:37:21.946Z
Learning: In Tekton pipelines, tasks can directly reference parameters defined in top-level `spec.params` without requiring redeclaration in `pipelineSpec.params`. For example, when `spec.params` defines `additional-tags`, a task can use `$(params.additional-tags[*])` even if `pipelineSpec.params` doesn't redeclare this parameter. This means parameter validation occurs at the top level, not requiring duplication in the embedded pipeline specification.

Applied to files:

  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.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: During PR #2103 review investigation, found that runtimes/rocm-tensorflow/ubi9-python-3.12/ directory DOES exist in the repository, correcting initial assessment that all TensorFlow ROCm Python 3.12 entries in params-latest.env were orphaned. The pipeline runtime component appears to have proper source directory support.

Applied to files:

  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-01T17:35:29.175Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T17:35:29.175Z
Learning: jiridanek requested GitHub issue creation for adding pytorch+llmcompressor images to Makefile build targets during PR #1519 review. Issue #1598 was successfully created with comprehensive problem description covering missing build targets for both jupyter workbench and runtime images, detailed solution with specific Makefile code examples following established patterns, thorough acceptance criteria covering individual targets, BASE_DIRS variable inclusion, and all-images target integration, implementation notes about handling '+' characters in paths, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.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). (30)
  • GitHub Check: build (rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
  • GitHub Check: build (cuda-rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
  • GitHub Check: build (runtime-cuda-tensorflow-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (runtime-datascience-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.11, 3.11, linux/amd64, false) / build
  • GitHub Check: build (jupyter-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 (jupyter-minimal-ubi9-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 (codeserver-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (cuda-jupyter-minimal-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (runtime-cuda-pytorch-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (rocm-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (rstudio-c9s-python-3.11, 3.11, linux/amd64, false) / build
  • GitHub Check: build (cuda-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/arm64, false) / build
  • GitHub Check: build (jupyter-minimal-ubi9-python-3.12, 3.12, linux/ppc64le, false) / build
  • GitHub Check: build (runtime-cuda-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: build (runtime-minimal-ubi9-python-3.12, 3.12, linux/s390x, false) / build
  • GitHub Check: build (cuda-jupyter-tensorflow-ubi9-python-3.12, 3.12, linux/amd64, false) / build
  • GitHub Check: Red Hat Konflux / odh-pipeline-runtime-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-cuda-py312-c9s-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-minimal-cuda-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-tensorflow-cuda-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-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-datascience-cpu-py312-ubi9-on-pull-request
  • GitHub Check: code-static-analysis
🔇 Additional comments (2)
.tekton/multiarch-push-pipeline.yaml (2)

282-284: Threading looks right; ensure task param name matches

Passing $(params.image-labels[*]) down is correct. Double‑check the task’s expected param name to avoid a no‑op.

If needed, I can adjust the wiring once you confirm the task’s interface.


114-117: Approve — param declared; confirm remote bundle maps IMAGE_LABELS to buildah labels

image-labels is declared with default [] and is forwarded as IMAGE_LABELS into buildah-remote-oci-ta (see .tekton/multiarch-push-pipeline.yaml: 114–117, 281–284, 290–294). The buildah task is resolved from an external bundle (konflux-ci/task-buildah-remote-oci-ta) and its implementation is not in this repo; confirm the bundle accepts IMAGE_LABELS and converts it into buildah --label flags. If the bundle expects a different name (e.g., LABELS), align the pipeline mapping or task param.

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: 1

♻️ Duplicate comments (2)
.tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1)

44-46: Param added; depends on Pipeline support.

Same as other PR PipelineRuns: ensure multiarch-pull-request-pipeline declares params.image-labels and uses it, otherwise this will fail validation.

.tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1)

45-47: Param added; depends on Pipeline support.

Same dependency: multiarch-pull-request-pipeline must declare params.image-labels (array) and consume it.

📜 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 e1ed967 and 219796f.

📒 Files selected for processing (30)
  • .tekton/multiarch-pull-request-pipeline.yaml (2 hunks)
  • .tekton/multiarch-push-pipeline.yaml (2 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (25)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml
  • .tekton/multiarch-push-pipeline.yaml
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml
🧰 Additional context used
🧠 Learnings (18)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1909
File: rstudio/c9s-python-3.11/Dockerfile.cpu:15-18
Timestamp: 2025-08-12T08:36:45.281Z
Learning: jiridanek requested GitHub issue creation for adding ticket references to upgrade block markers during PR #1909 review, specifically noting that scripts/dockerfile_fragments.py script can be used to update code within labeled begin/end blocks and care must be taken not to break the script. Issue was created with comprehensive problem description covering traceability enhancement across 30+ Dockerfiles, critical automation compatibility warnings, multiple implementation options, detailed acceptance criteria including script testing requirements, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T14:46:03.215Z
Learning: jiridanek requested GitHub issue creation for two nitpicks during PR #1588 review: comment wording improvement in ROCm TensorFlow Dockerfile and typo fix in Jupyter DataScience Dockerfile stage header. Issues #1589 and #1590 were successfully created with comprehensive problem descriptions, specific file locations and line numbers, clear before/after solutions, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: atheo89
PR: opendatahub-io/notebooks#1258
File: codeserver/ubi9-python-3.11/Dockerfile.cpu:32-32
Timestamp: 2025-07-07T11:08:48.524Z
Learning: atheo89 requested GitHub issue creation for multi-architecture Dockerfile improvements during PR #1258 review, specifically for enhancing structural consistency across Docker stages, replacing $(uname -m) with ${TARGETARCH} for cross-architecture builds, and adding OCI-compliant metadata labels. Issue #1332 was created with comprehensive problem description, phased implementation approach, detailed acceptance criteria, implementation guidance with code examples, and proper context linking, continuing the established pattern of systematic code quality improvements.
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.
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.
📚 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:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-04T09:22:45.818Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#2271
File: .tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml:32-33
Timestamp: 2025-09-04T09:22:45.818Z
Learning: atheo89 corrected CodeRabbit's analysis error regarding build-args-file parameter in singlearch-push-pipeline.yaml during PR #2271 review. The parameter was already properly declared at line 103 and consumed by tasks at lines 253 and 471, contradicting CodeRabbit's initial assessment that it was missing. This demonstrates the importance of thorough verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-24T14:05:28.815Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:0-0
Timestamp: 2025-07-24T14:05:28.815Z
Learning: jiridanek confirmed that CodeRabbit's original analysis about missing additional-tags parameter in Tekton pipelines was practically correct. While builds can succeed without the parameter declaration due to Tekton's flexibility, having the default parameter declaration becomes valuable when removing explicit argument values, providing better maintainability and cleaner configuration management. Build success doesn't always indicate optimal implementation.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-19T15:47:12.801Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml:49-50
Timestamp: 2025-08-19T15:47:12.801Z
Learning: The singlearch-push-pipeline in opendatahub-io/notebooks repository contains all standard build pipeline parameters including git-url, revision, output-image, dockerfile, path-context, and additional-tags, along with git-auth workspace and build-container task reference. Initial verification attempts may miss parameters if search patterns are too restrictive.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/multiarch-pull-request-pipeline.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-24T13:37:21.946Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:68-121
Timestamp: 2025-07-24T13:37:21.946Z
Learning: In Tekton pipelines, tasks can directly reference parameters defined in top-level `spec.params` without requiring redeclaration in `pipelineSpec.params`. For example, when `spec.params` defines `additional-tags`, a task can use `$(params.additional-tags[*])` even if `pipelineSpec.params` doesn't redeclare this parameter. This means parameter validation occurs at the top level, not requiring duplication in the embedded pipeline specification.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:15:25.572Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1379
File: .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml:40-44
Timestamp: 2025-07-11T11:15:25.572Z
Learning: jiridanek requested GitHub issue creation for critical Tekton array parameter syntax error during PR #1379 review, affecting all 32 pipeline files with additional-tags parameter. Issue #1382 was created with comprehensive problem description covering both Python 3.11 and 3.12 pipeline files (16 each), detailed root cause analysis of value: vs values: syntax error, critical impact assessment of complete pipeline execution failure, complete list of all affected files across workbench and runtime types, implementation commands with sed scripts, detailed acceptance criteria, implementation notes about systematic copy-paste error propagation, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for RStudio py311 Tekton push pipelines during PR #1379 review. Issue #1384 was successfully created covering two RStudio variants (CPU and CUDA) found in manifests/base/params-latest.env, with comprehensive problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-08T19:09:48.746Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1306
File: jupyter/trustyai/ubi9-python-3.12/kustomize/base/kustomization.yaml:8-12
Timestamp: 2025-07-08T19:09:48.746Z
Learning: jiridanek requested GitHub issue creation for misleading CUDA prefix in TrustyAI image tags during PR #1306 review, affecting both Python 3.11 and 3.12 versions. Issue #1338 was created with comprehensive problem description covering both affected images, repository pattern analysis comparing correct vs incorrect naming conventions, clear solution with code examples, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-08-01T17:35:29.175Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T17:35:29.175Z
Learning: jiridanek requested GitHub issue creation for adding pytorch+llmcompressor images to Makefile build targets during PR #1519 review. Issue #1598 was successfully created with comprehensive problem description covering missing build targets for both jupyter workbench and runtime images, detailed solution with specific Makefile code examples following established patterns, thorough acceptance criteria covering individual targets, BASE_DIRS variable inclusion, and all-images target integration, implementation notes about handling '+' characters in paths, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for adding RStudio py311 Tekton push pipelines during PR #1379 review, referencing existing registry entries in manifests/base/params-latest.env but missing corresponding .tekton pipeline files. A comprehensive issue was created with detailed problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-08-19T15:49:45.132Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-cuda-py311-ubi9-push.yaml:35-36
Timestamp: 2025-08-19T15:49:45.132Z
Learning: jiridanek requested GitHub issue creation for two PipelineRef compatibility problems during PR #2004 review: missing additional-tags parameter in singlearch-push-pipeline and missing netrc workspace binding in PipelineRuns. Issues were successfully created with comprehensive problem descriptions covering technical details, impact analysis on multiple affected files, clear solutions with code examples, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-08-19T16:06:35.822Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-push.yaml:37-38
Timestamp: 2025-08-19T16:06:35.822Z
Learning: jiridanek corrected CodeRabbit's parameter analysis error for Tekton PipelineRun in opendatahub-io/notebooks repository. The git-url parameter was correctly defined in the PipelineRun at line 53, demonstrating the importance of careful verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-07-09T15:10:16.532Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1365
File: .tekton/odh-workbench-jupyter-pytorch-rocm-py311-ubi9-push.yaml:9-9
Timestamp: 2025-07-09T15:10:16.532Z
Learning: jiridanek requested GitHub issue creation for YAML syntax error in Tekton PipelineRun during PR #1365 review. Issue #1371 was successfully created with comprehensive problem description covering trailing backslash causing YAML parser failure, technical details with specific error messages, impact analysis of pipeline execution breakdown, clear solution with code examples, detailed acceptance criteria, and proper notification to riprasad about automation failure, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-04T09:23:45.728Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#2271
File: .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml:43-44
Timestamp: 2025-09-04T09:23:45.728Z
Learning: atheo89 corrected CodeRabbit's analysis error regarding the build-args-file parameter in the generate_pull_request_pipelineruns.py script during PR #2271 review. The script was updated with dynamic parameter handling that automatically extracts parameters (including build-args-file) from push pipelines and includes them in generated PR pipelines, contradicting CodeRabbit's assessment that the parameter was missing from the generator. This demonstrates the importance of understanding the full context of script modifications before flagging parameter generation issues.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-07-09T12:29:56.162Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1320
File: jupyter/pytorch/ubi9-python-3.12/Dockerfile.cuda:42-52
Timestamp: 2025-07-09T12:29:56.162Z
Learning: jiridanek requested GitHub issue creation for OpenShift client architecture mapping problem affecting 29 Dockerfiles during PR #1320 review. Issue was created with comprehensive analysis covering all affected files using $(uname -m) returning 'aarch64' but OpenShift mirror expecting 'arm64', systematic solution using BuildKit TARGETARCH mapping with proper amd64→x86_64 and arm64→arm64 conversion, detailed acceptance criteria, and implementation guidance, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-08-01T14:46:03.215Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T14:46:03.215Z
Learning: jiridanek requested GitHub issue creation for two nitpicks during PR #1588 review: comment wording improvement in ROCm TensorFlow Dockerfile and typo fix in Jupyter DataScience Dockerfile stage header. Issues #1589 and #1590 were successfully created with comprehensive problem descriptions, specific file locations and line numbers, clear before/after solutions, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
📚 Learning: 2025-07-07T11:08:48.524Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#1258
File: codeserver/ubi9-python-3.11/Dockerfile.cpu:32-32
Timestamp: 2025-07-07T11:08:48.524Z
Learning: atheo89 requested GitHub issue creation for multi-architecture Dockerfile improvements during PR #1258 review, specifically for enhancing structural consistency across Docker stages, replacing $(uname -m) with ${TARGETARCH} for cross-architecture builds, and adding OCI-compliant metadata labels. Issue #1332 was created with comprehensive problem description, phased implementation approach, detailed acceptance criteria, implementation guidance with code examples, and proper context linking, continuing the established pattern of systematic code quality improvements.

Applied to files:

  • .tekton/multiarch-pull-request-pipeline.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). (3)
  • GitHub Check: Generate job matrix
  • GitHub Check: build (cuda-rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
  • GitHub Check: build (rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
🔇 Additional comments (3)
.tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Param is fine here; ensure the referenced Pipeline declares/consumes it.

This PipelineRun passes image-labels, but the referenced multiarch-pull-request-pipeline must expose a ParamSpec named image-labels (type: array) and pass it to the build task, or the run will be rejected.

.tekton/odh-base-image-cuda-py311-c9s-push.yaml (1)

33-35: Push PR: confirm multiarch-push-pipeline wiring for image-labels.

Good addition. Verify multiarch-push-pipeline has params.image-labels (array, default: []) and forwards it to the build task (e.g., IMAGE_LABELS) so labels are applied.

.tekton/multiarch-pull-request-pipeline.yaml (1)

226-228: Build task consumption looks right; will work once ParamSpec exists.

IMAGE_LABELS mapping with $(params.image-labels[*]) is correct. After adding the ParamSpec, this will apply labels per platform.

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: 0

🧹 Nitpick comments (3)
.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1)

45-47: Avoid hardcoding release=2025b in every PipelineRun.

Prefer a single source of truth (e.g., a central var in the generator or a defaulted pipeline param). This reduces drift during future rollovers (2025c, etc.).

.tekton/odh-base-image-cuda-py311-c9s-push.yaml (2)

33-35: Optional: add standard OCI version label alongside release.

This improves interoperability with tooling that reads org.opencontainers.image.version.

Apply:

   - name: image-labels
     value:
-    - release=2025b
+    - release=2025b
+    - org.opencontainers.image.version=2025b

33-35: PR description/title mismatch with implementation approach.

Change is via pipeline-provided image label, not a Dockerfile LABEL edit. Please adjust PR title/body for accuracy.

📜 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 219796f and 5ecf512.

📒 Files selected for processing (30)
  • .tekton/multiarch-pull-request-pipeline.yaml (2 hunks)
  • .tekton/multiarch-push-pipeline.yaml (2 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml (1 hunks)
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .tekton/odh-workbench-jupyter-datascience-cpu-py312-ubi9-pull-request.yaml
🚧 Files skipped from review as they are similar to previous changes (26)
  • .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-push.yaml
  • .tekton/multiarch-push-pipeline.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-pytorch-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-push.yaml
  • .tekton/odh-pipeline-runtime-pytorch-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-ubi9-push.yaml
  • .tekton/odh-workbench-jupyter-minimal-cpu-py312-ubi9-pull-request.yaml
  • .tekton/multiarch-pull-request-pipeline.yaml
  • .tekton/odh-pipeline-runtime-tensorflow-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-cuda-py312-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-trustyai-cpu-py312-ubi9-pull-request.yaml
  • .tekton/odh-base-image-rocm-py312-c9s-pull-request.yaml
  • .tekton/odh-base-image-cuda-py311-c9s-pull-request.yaml
  • .tekton/odh-pipeline-runtime-datascience-cpu-py312-ubi9-pull-request.yaml
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1909
File: rstudio/c9s-python-3.11/Dockerfile.cpu:15-18
Timestamp: 2025-08-12T08:36:45.281Z
Learning: jiridanek requested GitHub issue creation for adding ticket references to upgrade block markers during PR #1909 review, specifically noting that scripts/dockerfile_fragments.py script can be used to update code within labeled begin/end blocks and care must be taken not to break the script. Issue was created with comprehensive problem description covering traceability enhancement across 30+ Dockerfiles, critical automation compatibility warnings, multiple implementation options, detailed acceptance criteria including script testing requirements, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-01T14:46:03.215Z
Learning: jiridanek requested GitHub issue creation for two nitpicks during PR #1588 review: comment wording improvement in ROCm TensorFlow Dockerfile and typo fix in Jupyter DataScience Dockerfile stage header. Issues #1589 and #1590 were successfully created with comprehensive problem descriptions, specific file locations and line numbers, clear before/after solutions, detailed acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: atheo89
PR: opendatahub-io/notebooks#1258
File: codeserver/ubi9-python-3.11/Dockerfile.cpu:32-32
Timestamp: 2025-07-07T11:08:48.524Z
Learning: atheo89 requested GitHub issue creation for multi-architecture Dockerfile improvements during PR #1258 review, specifically for enhancing structural consistency across Docker stages, replacing $(uname -m) with ${TARGETARCH} for cross-architecture builds, and adding OCI-compliant metadata labels. Issue #1332 was created with comprehensive problem description, phased implementation approach, detailed acceptance criteria, implementation guidance with code examples, and proper context linking, continuing the established pattern of systematic code quality improvements.
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.
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.
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.
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.
📚 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:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-09-04T09:22:45.818Z
Learnt from: atheo89
PR: opendatahub-io/notebooks#2271
File: .tekton/odh-workbench-rstudio-minimal-cpu-py311-c9s-push.yaml:32-33
Timestamp: 2025-09-04T09:22:45.818Z
Learning: atheo89 corrected CodeRabbit's analysis error regarding build-args-file parameter in singlearch-push-pipeline.yaml during PR #2271 review. The parameter was already properly declared at line 103 and consumed by tasks at lines 253 and 471, contradicting CodeRabbit's initial assessment that it was missing. This demonstrates the importance of thorough verification before flagging issues with parameter definitions in Tekton pipeline configurations.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
📚 Learning: 2025-07-24T14:05:28.815Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:0-0
Timestamp: 2025-07-24T14:05:28.815Z
Learning: jiridanek confirmed that CodeRabbit's original analysis about missing additional-tags parameter in Tekton pipelines was practically correct. While builds can succeed without the parameter declaration due to Tekton's flexibility, having the default parameter declaration becomes valuable when removing explicit argument values, providing better maintainability and cleaner configuration management. Build success doesn't always indicate optimal implementation.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
📚 Learning: 2025-08-19T15:47:12.801Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2004
File: .tekton/odh-workbench-jupyter-minimal-rocm-py312-ubi9-push.yaml:49-50
Timestamp: 2025-08-19T15:47:12.801Z
Learning: The singlearch-push-pipeline in opendatahub-io/notebooks repository contains all standard build pipeline parameters including git-url, revision, output-image, dockerfile, path-context, and additional-tags, along with git-auth workspace and build-container task reference. Initial verification attempts may miss parameters if search patterns are too restrictive.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-24T13:37:21.946Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1497
File: .tekton/odh-pipeline-runtime-minimal-cpu-py312-ubi9-pull-request.yaml:68-121
Timestamp: 2025-07-24T13:37:21.946Z
Learning: In Tekton pipelines, tasks can directly reference parameters defined in top-level `spec.params` without requiring redeclaration in `pipelineSpec.params`. For example, when `spec.params` defines `additional-tags`, a task can use `$(params.additional-tags[*])` even if `pipelineSpec.params` doesn't redeclare this parameter. This means parameter validation occurs at the top level, not requiring duplication in the embedded pipeline specification.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
📚 Learning: 2025-07-11T11:15:25.572Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1379
File: .tekton/odh-workbench-jupyter-pytorch-cuda-py312-ubi9-push.yaml:40-44
Timestamp: 2025-07-11T11:15:25.572Z
Learning: jiridanek requested GitHub issue creation for critical Tekton array parameter syntax error during PR #1379 review, affecting all 32 pipeline files with additional-tags parameter. Issue #1382 was created with comprehensive problem description covering both Python 3.11 and 3.12 pipeline files (16 each), detailed root cause analysis of value: vs values: syntax error, critical impact assessment of complete pipeline execution failure, complete list of all affected files across workbench and runtime types, implementation commands with sed scripts, detailed acceptance criteria, implementation notes about systematic copy-paste error propagation, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-base-image-cuda-py311-c9s-push.yaml
  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.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:

  • .tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for RStudio py311 Tekton push pipelines during PR #1379 review. Issue #1384 was successfully created covering two RStudio variants (CPU and CUDA) found in manifests/base/params-latest.env, with comprehensive problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml
📚 Learning: 2025-07-11T11:16:05.131Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-07-11T11:16:05.131Z
Learning: jiridanek requested GitHub issue creation for adding RStudio py311 Tekton push pipelines during PR #1379 review, referencing existing registry entries in manifests/base/params-latest.env but missing corresponding .tekton pipeline files. A comprehensive issue was created with detailed problem description, implementation requirements following the same pattern as other workbench pipelines, clear acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.

Applied to files:

  • .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.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). (26)
  • GitHub Check: build (cuda-rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
  • GitHub Check: build (rstudio-rhel9-python-3.11, 3.11, linux/amd64, true) / build
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-pytorch-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-cuda-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-base-image-cuda-py312-c9s-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-codeserver-datascience-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-base-image-cuda-py311-c9s-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-workbench-jupyter-tensorflow-rocm-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-base-image-rocm-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-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-workbench-jupyter-minimal-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-workbench-jupyter-tensorflow-cuda-py312-ubi9-on-pull-request
  • GitHub Check: Red Hat Konflux / odh-workbench-jupyter-minimal-cuda-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-base-image-rocm-py312-c9s-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-minimal-cpu-py312-ubi9-on-pull-request
  • GitHub Check: code-static-analysis
🔇 Additional comments (3)
.tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml (1)

45-47: LGTM — image-labels added; confirm pipeline consumer supports parameter

release=2025b and image-labels are present consistently in .tekton pull-request YAMLs (e.g. .tekton/odh-workbench-jupyter-pytorch-rocm-py312-ubi9-pull-request.yaml, .tekton/odh-workbench-jupyter-tensorflow-rocm-py312-ubi9-pull-request.yaml, .tekton/odh-base-image-rocm-py312-ubi9-pull-request.yaml).
No "multiarch-pull-request-pipeline" definition was found in the repo search — verify the pipeline that consumes image-labels accepts this parameter.

.tekton/odh-workbench-jupyter-minimal-cuda-py312-ubi9-pull-request.yaml (1)

45-47: image-labels wiring confirmed; keep build-args-file

multiarch-pull-request-pipeline.yaml declares params.image-labels and maps it to IMAGE_LABELS; PR PipelineRun files (including the one under review) set image-labels: - release=2025b. build-args-file is still declared and consumed by the multiarch/singlearch pipelines and appears in PR PipelineRuns — do not remove it.

.tekton/odh-base-image-cuda-py311-c9s-push.yaml (1)

33-35: Approved — image-labels param declared and consumed

.tekton/odh-base-image-cuda-py311-c9s-push.yaml adds image-labels: - release=2025b (lines 33–35). multiarch-push-pipeline.yaml declares image-labels as type: array (lines 115–118) and forwards it to task param IMAGE_LABELS via $(params.image-labels[*]) (lines 282–284).

@dibryant dibryant changed the title WIP RHAIENG-394: Add notebooks release version on the Dockefile Label section RHAIENG-394: Add notebooks release version on the Dockefile Label section Sep 19, 2025
Copy link
Contributor

@daniellutz daniellutz left a comment

Choose a reason for hiding this comment

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

lgtm

Copy link
Contributor

openshift-ci bot commented Sep 20, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: daniellutz

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

@openshift-ci-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD 39a5bf4 and 2 for PR HEAD 5ecf512 in total

@openshift-ci-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD 40b9290 and 1 for PR HEAD 5ecf512 in total

@openshift-ci-robot
Copy link

/retest-required

Remaining retests: 0 against base HEAD fdc238b and 0 for PR HEAD 5ecf512 in total

Copy link
Contributor

openshift-ci bot commented Sep 22, 2025

@dibryant: The following test 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 5ecf512 link true /test images

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.

@openshift-ci-robot
Copy link

/hold

Revision 5ecf512 was retested 3 times: holding

@atheo89
Copy link
Member

atheo89 commented Sep 22, 2025

Looks like the initial workaround for adding the release label during the image build is not behaving as expected.

If you run:

skopeo inspect --config --override-arch amd64 --override-os linux \
  docker://quay.io/opendatahub/odh-pipeline-runtime-minimal-cpu-py312-ubi9:on-pr-5ecf512a5b78b04f81c3f9a5971b0663aa7be2da \
  | jq -r '.history[].created_by' | grep LABEL

you’ll see that the final image ends up with:

"release"="1756915113"

That value is coming from the base image or from the Konflux build process, and it overwrites the release=2025b we were trying to inject via pipeline parameters.

To make sure the correct release label is consistently applied (and not overridden), we should add it explicitly in the Dockerfile’s LABEL section instead of relying on pipeline injection. That way the label is baked into the image definition itself and survives the build process.

@jiridanek
Copy link
Member

place-scripts :-
2025/09/19 15:47:42 Decoded script /tekton/scripts/script-0-hgmjn
2025/09/19 15:47:42 Decoded script /tekton/scripts/script-1-pf7xq
prepare :-
2025/09/19 15:47:42 Entrypoint initialization
step-apply-additional-tags-from-image-labe :-
/tekton/scripts/script-1-pf7xq: line 11: jq: command not found
No additional tags specified in the image labels
step-apply-additional-tags-from-parameter :-
No additional tags parameter specified

https://konflux-ui.apps.stone-prd-rh01.pg1f.p1.openshiftapps.com/ns/open-data-hub-tenant/applications/opendatahub-release/pipelineruns/odh-base-image-cuda-py312-c9s-on-pull-request-5bssg/logs?task=apply-tags

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved do-not-merge/hold lgtm review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel size/m
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants