Skip to content

chore(automl,autorag): refresh embedded pipeline YAMLs from upstream#7244

Merged
openshift-merge-bot[bot] merged 1 commit intoopendatahub-io:mainfrom
chrjones-rh:RHOAIENG-57588-3
Apr 14, 2026
Merged

chore(automl,autorag): refresh embedded pipeline YAMLs from upstream#7244
openshift-merge-bot[bot] merged 1 commit intoopendatahub-io:mainfrom
chrjones-rh:RHOAIENG-57588-3

Conversation

@chrjones-rh
Copy link
Copy Markdown
Contributor

@chrjones-rh chrjones-rh commented Apr 14, 2026

https://redhat.atlassian.net/browse/RHOAIENG-57588

Description

Refreshes embedded pipeline YAML definitions from the upstream red-hat-data-services/pipelines-components repository (branch: rhoai-3.4).

Container images updated from quay.io to registry.redhat.io with new digests (standard production registry transition).

Updated pipelines:

  • autogluon_tabular_training_pipeline/pipeline.yaml — updated image references
  • autogluon_timeseries_training_pipeline/pipeline.yaml — updated image references
  • documents_rag_optimization_pipeline/pipeline.yaml — updated image references

Files changed:

  • packages/automl/bff/internal/pipelines/autogluon_tabular_training_pipeline/pipeline.yaml
  • packages/automl/bff/internal/pipelines/autogluon_timeseries_training_pipeline/pipeline.yaml
  • packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml

How Has This Been Tested?

  • All automl and autorag BFF tests pass
  • Build succeeds for both packages

Test Impact

  • No test changes required — pipeline YAMLs are embedded resources with no behavioral changes to the BFF code

Request review criteria:

Self checklist (all need to be checked):

  • The developer has manually tested the changes and verified that the changes work
  • Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
  • The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)
  • The code follows our Best Practices (React coding standards, PatternFly usage, performance considerations)

If you have UI changes:

  • Included any necessary screenshots or gifs if it was a UI change.
  • Included tags to the UX team if it was a UI/UX change.

N/A — no UI changes, embedded YAML refresh only.

After the PR is posted & before it merges:

  • The developer has tested their solution on a cluster by using the image produced by the PR to main

Summary by CodeRabbit

Release Notes

  • Chores
    • Updated container images and embedded component dependencies for AutoML tabular training, AutoML time-series training, and RAG optimization pipelines to improve system reliability and performance.

Update compiled pipeline definitions from red-hat-data-services/pipelines-components
rhoai-3.4 branch. Container images moved from quay.io to registry.redhat.io
with updated digests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 14, 2026

📝 Walkthrough

Walkthrough

Container image references and embedded Kubeflow component archive payloads are updated across three pipeline configuration files. The changes replace image digests from quay.io/rhoai/odh-automl-rhel9:rhoai-3.4@sha256:ee8d0... with registry.redhat.io/rhoai/odh-automl-rhel9@sha256:1c4cea... (AutoML pipelines) and quay.io/rhoai/odh-autorag-rhel9:rhoai-3.4@sha256:06a289... with registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:7883d99f... (AutoRAG pipeline). Embedded KFP archive payloads (__KFP_EMBEDDED_ARCHIVE_B64 base64 strings) are regenerated in multiple executor sections across all three files to match the new image deployments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Security & Actionable Issues

Image Registry & Digest Verification Required:

  • Registry shift from quay.io to registry.redhat.io across all three pipelines introduces a supply chain checkpoint. Verify:
    1. The new registry.redhat.io digests (1c4cea..., 7883d99f...) are cryptographically signed and verifiable against Red Hat's public key infrastructure.
    2. No digest collision or substitution attacks are possible. Confirm the SHA256 digests match official Red Hat artifact manifests.
    3. Access control policies for registry.redhat.io are enforced in deployment environments to prevent unauthorized image pulls (CWE-494: Download of Code Without Integrity Check).

Embedded Archive Payload Integrity:

  • Base64-encoded __KFP_EMBEDDED_ARCHIVE_B64 payloads are regenerated but not validated inline. If these archives contain executable code:
    • Confirm the embedded archives are sourced from verified, reproducible builds and not manually crafted.
    • Validate that no arbitrary or unsigned code is embedded within these payloads (CWE-345: Insufficient Verification of Data Authenticity).

No public entity signature modifications detected, but manifest-level changes warrant validation of container runtime policies and signed image enforcement in your deployment cluster.

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed Title accurately describes the main change: refreshing embedded pipeline YAML definitions from upstream with container image updates across automl and autorag packages.
Description check ✅ Passed Description includes issue reference, clear explanation of changes, test results, and completed self-checklist items per template requirements.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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.

@chrjones-rh chrjones-rh requested review from nickmazzi and removed request for NickGagan April 14, 2026 21:16
Copy link
Copy Markdown
Contributor

@GAUNSD GAUNSD left a comment

Choose a reason for hiding this comment

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

/approve
/lgtm

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 14, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: GAUNSD

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

The pull request process is described here

Details 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

Copy link
Copy Markdown
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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml (1)

1029-1037: ⚠️ Potential issue | 🟠 Major

Add member path validation to archive extraction (CWE-22 — Path Traversal)

The embedded tar archive extraction at line 1036 uses extractall() without validating member paths. If the archive contains entries with relative parent paths (e.g., ../../../etc/passwd), they will be extracted outside the temp directory. Supply chain compromise of the embedded payload enables arbitrary file write.

Hardening patch
 import tarfile as __kfp_tarfile
 import tempfile as __kfp_tempfile
+from pathlib import Path as __kfp_Path

 # Extract embedded archive at import time to ensure sys.path and globals are set
 __kfp_tmpdir = __kfp_tempfile.TemporaryDirectory()
 __KFP_EMBEDDED_ASSET_DIR = __kfp_tmpdir.name
 try:
     __kfp_bytes = __kfp_b64.b64decode(__KFP_EMBEDDED_ARCHIVE_B64.encode('ascii'))
     with __kfp_tarfile.open(fileobj=__kfp_io.BytesIO(__kfp_bytes), mode='r:gz') as __kfp_tar:
+        __root = __kfp_Path(__KFP_EMBEDDED_ASSET_DIR).resolve()
+        for __m in __kfp_tar.getmembers():
+            __target = (__root / __m.name).resolve()
+            if not str(__target).startswith(str(__root) + __kfp_os.sep):
+                raise RuntimeError(f"Unsafe archive member path: {__m.name}")
         __kfp_tar.extractall(path=__KFP_EMBEDDED_ASSET_DIR)
 except Exception as __kfp_e:
     raise RuntimeError(f'Failed to extract embedded archive: {__kfp_e}')
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml`
around lines 1029 - 1037, The tar extract uses __kfp_tar.extractall(...) to
unpack __KFP_EMBEDDED_ARCHIVE_B64 into __KFP_EMBEDDED_ASSET_DIR allowing path
traversal; replace extractall with a safe extraction loop: iterate over
__kfp_tar.getmembers(), compute the target path by joining
__KFP_EMBEDDED_ASSET_DIR and member.name, normalize it, verify the normalized
path starts with the normalized __KFP_EMBEDDED_ASSET_DIR (e.g., via
os.path.commonpath or commonprefix), skip or raise on any member that fails the
check, and then extract/write only approved members (creating directories as
needed) so no entry can escape the temp dir.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml`:
- Line 388: The pipeline references private images like
registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:... but lacks image pull
credentials; update the pipeline spec to include either imagePullSecrets
(pointing to a pre-created Secret with registry.redhat.io credentials), or set a
serviceAccountName bound to a ServiceAccount that has entitlements, or add a
podSpecPatch that injects imagePullSecrets into task/pod templates; locate the
image occurrences in pipeline.yaml (the image string
registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:...) and add the
imagePullSecrets/serviceAccountName/podSpecPatch at the corresponding
spec.template.spec (or PipelineRun/TaskRun) blocks so Kubernetes can
authenticate to the private registry.

---

Outside diff comments:
In
`@packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml`:
- Around line 1029-1037: The tar extract uses __kfp_tar.extractall(...) to
unpack __KFP_EMBEDDED_ARCHIVE_B64 into __KFP_EMBEDDED_ASSET_DIR allowing path
traversal; replace extractall with a safe extraction loop: iterate over
__kfp_tar.getmembers(), compute the target path by joining
__KFP_EMBEDDED_ASSET_DIR and member.name, normalize it, verify the normalized
path starts with the normalized __KFP_EMBEDDED_ASSET_DIR (e.g., via
os.path.commonpath or commonprefix), skip or raise on any member that fails the
check, and then extract/write only approved members (creating directories as
needed) so no entry can escape the temp dir.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: bf2a94d7-8d49-4186-87af-554f085fbeef

📥 Commits

Reviewing files that changed from the base of the PR and between 89081d7 and ffb0a85.

📒 Files selected for processing (3)
  • packages/automl/bff/internal/pipelines/autogluon_tabular_training_pipeline/pipeline.yaml
  • packages/automl/bff/internal/pipelines/autogluon_timeseries_training_pipeline/pipeline.yaml
  • packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml

\ as f:\n json.dump(descriptor, f, indent=2)\n\n logger.info(\"\
Documents descriptor written to %s\", descriptor_path)\n\n"
image: quay.io/rhoai/odh-autorag-rhel9:rhoai-3.4@sha256:06a2892228510011c9081acf73fe140e46bd13e5aad6ecb9721f902ed5418ec5
image: registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:7883d99fa6eb94841622f2130edb121a32cc5e7a3ddc894cee5cc50b7042a4fd
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "1) Confirm all updated images are on registry.redhat.io"
rg -n 'image:\s*registry\.redhat\.io/rhoai/odh-autorag-rhel9@sha256:' \
  packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml

echo
echo "2) Check this pipeline spec for explicit image pull-secret / SA linkage"
rg -n 'imagePullSecrets|serviceAccountName|podSpecPatch|imagePullSecret' \
  packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml || true

echo
echo "3) Find ServiceAccount manifests that define imagePullSecrets in repo"
rg -n 'kind:\s*ServiceAccount|imagePullSecrets|registry\.redhat\.io' --iglob '*.{yaml,yml}'

Repository: opendatahub-io/odh-dashboard

Length of output: 9486


Add explicit imagePullSecrets or serviceAccountName to pipeline specification

Lines 388, 669, 997, 1574, 1814, 1904, and 2198 reference registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:... but the pipeline.yaml contains no imagePullSecrets, serviceAccountName, or podSpecPatch directives. Private registry pulls will fail with ImagePullBackOff if the runtime service account lacks entitlements or configured pull credentials.

Configure explicit image pull credentials in the pipeline spec or bind a service account with registry.redhat.io access.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/autorag/bff/internal/pipelines/documents_rag_optimization_pipeline/pipeline.yaml`
at line 388, The pipeline references private images like
registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:... but lacks image pull
credentials; update the pipeline spec to include either imagePullSecrets
(pointing to a pre-created Secret with registry.redhat.io credentials), or set a
serviceAccountName bound to a ServiceAccount that has entitlements, or add a
podSpecPatch that injects imagePullSecrets into task/pod templates; locate the
image occurrences in pipeline.yaml (the image string
registry.redhat.io/rhoai/odh-autorag-rhel9@sha256:...) and add the
imagePullSecrets/serviceAccountName/podSpecPatch at the corresponding
spec.template.spec (or PipelineRun/TaskRun) blocks so Kubernetes can
authenticate to the private registry.

@openshift-merge-bot openshift-merge-bot Bot merged commit 335afea into opendatahub-io:main Apr 14, 2026
58 checks passed
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 14, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.80%. Comparing base (89081d7) to head (ffb0a85).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #7244   +/-   ##
=======================================
  Coverage   64.80%   64.80%           
=======================================
  Files        2441     2441           
  Lines       75996    75996           
  Branches    19158    19158           
=======================================
+ Hits        49250    49252    +2     
+ Misses      26746    26744    -2     

see 7 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 89081d7...ffb0a85. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@chrjones-rh
Copy link
Copy Markdown
Contributor Author

Manual testing:

image image

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants