Skip to content

Upgrade codeserver to v4.112.0 on rhoai-3.4 (full hermetic)#2545

Open
ysok wants to merge 9 commits into
red-hat-data-services:rhoai-3.4from
ysok-red-hat-data-services:rhds-3.4-upgrade-codeserver
Open

Upgrade codeserver to v4.112.0 on rhoai-3.4 (full hermetic)#2545
ysok wants to merge 9 commits into
red-hat-data-services:rhoai-3.4from
ysok-red-hat-data-services:rhds-3.4-upgrade-codeserver

Conversation

@ysok

@ysok ysok commented Jul 20, 2026

Copy link
Copy Markdown

Summary

  • Upgrade codeserver only to v4.112.0 while keeping the existing full hermetic Konflux model (hermetic: true, cachi2 --no-index pip/RPM/npm).
  • Preserve RHOAI 3.4 AIPCC base, RH 3.4 PyPI index, and existing codeserver Python locks (matplotlib 3.10 alignment).
  • Refresh v4.112 patches/extensions, Tekton npm prefetch paths, imagestream softwares metadata (4.112), and regenerate ODH + RHDS rpms.lock.yaml.

Test plan

  • gmake test / gmake test-unit
  • Local arm64 hermetic build: BUILD_ARCH=linux/arm64 PUSH_IMAGES=no gmake codeserver-ubi9-python-3.12
  • Image smoke test_startup.py (code-server v4.112.0)
  • Konflux PR pipeline for codeserver on rhoai-3.4
  • Confirm no other workbench images changed

Made with Cursor

Summary by CodeRabbit

  • New Features

    • Updated the Code Server image to version 4.112, including refreshed bundled VS Code extensions and updated Python extension (ms-python.python 2026.4.0).
    • Improved hermetic prefetch/caching coverage, including s390x.
  • Bug Fixes

    • Improved redirect and proxy behavior to preserve paths and prefixes correctly.
    • More reliable startup networking with safer IPv4/IPv6 binding and improved NGINX runtime configuration.
    • Strengthened offline/precache handling with stricter artifact validation.
  • Documentation

    • Refreshed image/version, prefetch, and local build guidance to match the updated release.

Keep the existing hermetic Konflux model and 3.4 base/index while bumping
code-server, patches, extensions, and RPM locks so multi-arch builds stay
offline and aligned with main.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

@ysok — This PR is from a fork.
The build-rhoai CI job was skipped because subscription
builds (RHEL, AIPCC) need secrets unavailable to forks.
ODH builds and code quality checks still ran.

Recommended: Push your branch to the main repo for full CI:

git remote add upstream https://github.com/red-hat-data-services/notebooks.git
git push upstream HEAD:ysok/your-branch-name

Then open a new PR from that branch.

No push access? A maintainer will cherry-pick and test your changes.

See CONTRIBUTING.md for details.

Comment on lines +1260 to +1271
"node_modules/shell-quote": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
Comment on lines +1031 to +1036
"node_modules/lodash-es": {
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
"license": "MIT"
},
Comment on lines +1031 to +1036
"node_modules/lodash-es": {
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
"license": "MIT"
},
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@ysok, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: fbbda14f-c877-44d3-a138-3d11f20553de

📥 Commits

Reviewing files that changed from the base of the PR and between 6ad54b8 and 676e0fa.

📒 Files selected for processing (3)
  • .github/workflows/build-browser-tests.yaml
  • .github/workflows/test-playwright-action.yaml
  • scripts/get-pnpm-version.sh
📝 Walkthrough

Walkthrough

The PR upgrades the UBI9 Python 3.12 code-server image to v4.112.0, updates hermetic npm, pip, and RPM inputs, adds offline build patches and VSIX validation, revises NGINX and CI container handling, and changes the Playwright test image workflow.

Changes

Codeserver v4.112 build and hermetic inputs

Layer / File(s) Summary
Version, image, and prefetch integration
.tekton/*codeserver*, codeserver/ubi9-python-3.12/Dockerfile*, README.md, build-args/*, prefetch-input/*, manifests/...
Version pins, Docker build stages, labels, Python installation, Tekton overlay paths, RPM locks, documentation, and the notebook manifest are updated for code-server v4.112.0.
v4.112 overlay build and packaging tools
codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/*
VS Code packaging, TypeScript compilation, npm preinstall checks, extension manifests, Vite metadata, and architecture-specific build behavior are added or updated.
Offline patches and extension artifacts
codeserver/ubi9-python-3.12/prefetch-input/patches/*, utils/*, s390x.patch
Offline agent-browser handling, VSIX validation and staging, binary postinstall scripts, patch metadata, and utility scripts are updated.
Runtime networking and redirect handling
codeserver/ubi9-python-3.12/nginx/*, run-code-server.sh, run-nginx.sh
Loopback proxy targets, relative redirects, IPv6 listener handling, and runtime NGINX configuration rewrites are changed.
CI Podman configuration and diagnostics
.github/actions/*, .github/workflows/*, ci/cached-builds/*, scripts/lockfile-generators/helpers/hermeto-fetch-rpm.sh
A kernel-log capture action is added, while Podman setup, runner storage, networking, workflow triggers, and Hermeto temporary-directory handling are updated.
Playwright image and test workflow
.github/actions/playwright-test/action.yml, tests/browser/*, scripts/get_playwright_version.py
Playwright tests use a version-labelled repository-built image, hardened pnpm configuration, version extraction, tier tags, and optional JUnit artifact uploads.

Estimated code review effort: 5 (Critical) | ~100 minutes

Possibly related PRs

Suggested labels: lgtm

Suggested reviewers: jiridanek

🚥 Pre-merge checks | ✅ 5 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes upgrading code-server to v4.112.0 on rhoai-3.4 and uses imperative mood without a trailing period.
Description check ✅ Passed The description includes a summary and test plan with concrete test runs, though it doesn't match the template headings or checklist sections exactly.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Branch Prefix Policy ✅ Passed Title/commit subject is unprefixed ('Fix AIPCC CI against main TEMPLATE expectations.'), which is valid for a main-targeted PR.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
✨ Simplify code
  • Create PR with simplified code

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.

@ysok

ysok commented Jul 20, 2026

Copy link
Copy Markdown
Author

/build-codeserver

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (2)
codeserver/ubi9-python-3.12/Dockerfile.cpu (1)

160-169: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Restore uv before the codeserver install step

cpu-base no longer installs uv, but codeserver still runs uv pip install --no-index ... later in this Dockerfile. Since the base image doesn’t provide uv, the build will fail with uv: command not found unless it’s installed earlier.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@codeserver/ubi9-python-3.12/Dockerfile.cpu` around lines 160 - 169, Install
or restore uv before the codeserver installation step that invokes uv pip
install --no-index. Update the Dockerfile’s setup flow near the visible
architecture-specific dependency block, ensuring uv is available in the image
before the codeserver install command runs.
codeserver/ubi9-python-3.12/README.md (1)

171-179: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add missing build arguments and clarify architecture paths.

The manual podman build command is missing the newly introduced LABEL_REGISTRY_PREFIX, LABEL_COMPONENT, and RELEASE build arguments. Without these, the resulting image will have broken or empty labels (e.g., name="/").

Additionally, clarify that the x86_64 path and linux/amd64 platform must match the architecture used during the prefetch-all.sh step, as the preceding prefetch example uses arm64.

📝 Proposed fix to update the build example
 podman build \
     -f codeserver/ubi9-python-3.12/Dockerfile.konflux.cpu \
     --platform linux/amd64 \
     -t codeserver-test \
     --build-arg BASE_IMAGE=quay.io/opendatahub/odh-base-image-cpu-py312-c9s:latest \
     --build-arg PYLOCK_FLAVOR=cpu \
+    --build-arg LABEL_REGISTRY_PREFIX=opendatahub \
+    --build-arg LABEL_COMPONENT=odh-workbench-codeserver-datascience-cpu-py312-ubi9 \
+    --build-arg RELEASE=3.4 \
     -v "$(realpath ./cachi2/output)":/cachi2/output:z \
     -v "$(realpath ./cachi2/output/deps/rpm/x86_64/repos.d)":/etc/yum.repos.d/:z \
     .
+# Note: If you prefetched for arm64, change x86_64 to aarch64 and linux/amd64 to linux/arm64
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@codeserver/ubi9-python-3.12/README.md` around lines 171 - 179, Update the
manual podman build example in the README to include the LABEL_REGISTRY_PREFIX,
LABEL_COMPONENT, and RELEASE build arguments with appropriate example values.
Clarify that the linux/amd64 platform and x86_64 repository path must match the
architecture selected during the prefetch-all.sh step, and reconcile the example
with the preceding arm64 prefetch example.
🧹 Nitpick comments (2)
codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ripgrep/postinstall.js (1)

124-131: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Redundant getTarget() call; target local is unused.

Line 124 computes target but it's never read — opts.target re-invokes getTarget() on line 128 instead of reusing the local variable.

♻️ Proposed fix
   const target = await getTarget();
   const opts = {
   version: VERSION,
   token: process.env['GITHUB_TOKEN'],
-  target: await getTarget(),
+  target: target,
   destDir: BIN_PATH,
   force: forceInstall
   };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ripgrep/postinstall.js`
around lines 124 - 131, Remove the unused local target declaration and reuse a
single getTarget() result in the opts object by assigning target from that local
variable. Update the target field in opts while leaving the other options
unchanged.
codeserver/ubi9-python-3.12/prefetch-input/patches/apply-patch.sh (1)

113-115: 🔒 Security & Privacy | 🔵 Trivial | 💤 Low value

Predictable /tmp path for the jq-rewritten lockfile.

/tmp/lock-agent-browser.json is a fixed, predictable path; since this script runs as root (per header comment), a local process could pre-create/symlink it. This mirrors the same pattern already used elsewhere in the file (ripgrep, vsce-sign blocks), so it's not a new risk class, but worth hardening with mktemp while touching this code.

🔒 Proposed fix
+        lock_tmp="$(mktemp)"
         jq 'del(.packages["node_modules/agent-browser"].integrity)' \
-            lib/vscode/package-lock.json > /tmp/lock-agent-browser.json \
-            && mv /tmp/lock-agent-browser.json lib/vscode/package-lock.json
+            lib/vscode/package-lock.json > "$lock_tmp" \
+            && mv "$lock_tmp" lib/vscode/package-lock.json
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@codeserver/ubi9-python-3.12/prefetch-input/patches/apply-patch.sh` around
lines 113 - 115, Replace the fixed /tmp/lock-agent-browser.json path in the jq
lockfile rewrite with a securely created temporary file via mktemp, then move
the generated file into lib/vscode/package-lock.json while preserving the
existing jq transformation and failure handling.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.tekton/odh-workbench-codeserver-datascience-cpu-py312-v3-4-push.yaml:
- Around line 78-79: Revert the change to the `.tekton/` PipelineRun
configuration, including the removed
`codeserver/ubi9-python-3.12/prefetch-input/code-server/lib/vscode/build/vite`
entry. Do not make direct edits in `.tekton/`; apply the corresponding change in
the upstream `konflux-central` source instead.

---

Outside diff comments:
In `@codeserver/ubi9-python-3.12/Dockerfile.cpu`:
- Around line 160-169: Install or restore uv before the codeserver installation
step that invokes uv pip install --no-index. Update the Dockerfile’s setup flow
near the visible architecture-specific dependency block, ensuring uv is
available in the image before the codeserver install command runs.

In `@codeserver/ubi9-python-3.12/README.md`:
- Around line 171-179: Update the manual podman build example in the README to
include the LABEL_REGISTRY_PREFIX, LABEL_COMPONENT, and RELEASE build arguments
with appropriate example values. Clarify that the linux/amd64 platform and
x86_64 repository path must match the architecture selected during the
prefetch-all.sh step, and reconcile the example with the preceding arm64
prefetch example.

---

Nitpick comments:
In `@codeserver/ubi9-python-3.12/prefetch-input/patches/apply-patch.sh`:
- Around line 113-115: Replace the fixed /tmp/lock-agent-browser.json path in
the jq lockfile rewrite with a securely created temporary file via mktemp, then
move the generated file into lib/vscode/package-lock.json while preserving the
existing jq transformation and failure handling.

In
`@codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ripgrep/postinstall.js`:
- Around line 124-131: Remove the unused local target declaration and reuse a
single getTarget() result in the opts object by assigning target from that local
variable. Update the target field in opts while leaving the other options
unchanged.
🪄 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), Repository UI (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 02bfda34-4045-42f0-815d-0ec8d537a3d1

📥 Commits

Reviewing files that changed from the base of the PR and between 84a41d5 and 987b808.

⛔ Files ignored due to path filters (9)
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.106.3/lib/vscode/extensions/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/custom-packages/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/vite/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/emmet/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/microsoft-authentication/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/remote/package-lock.json is excluded by !**/package-lock.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/test/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (58)
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-pull-request.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-odh-main-pull-request.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-ubi9-odh-main-push.yaml
  • .tekton/odh-workbench-codeserver-datascience-cpu-py312-v3-4-push.yaml
  • codeserver/Extensions.md
  • codeserver/ubi9-python-3.12/Dockerfile.cpu
  • codeserver/ubi9-python-3.12/Dockerfile.konflux.cpu
  • codeserver/ubi9-python-3.12/README.md
  • codeserver/ubi9-python-3.12/build-args/cpu.conf
  • codeserver/ubi9-python-3.12/build-args/konflux.cpu.conf
  • codeserver/ubi9-python-3.12/devel_env_setup.sh
  • codeserver/ubi9-python-3.12/nginx/httpconf/http.conf
  • codeserver/ubi9-python-3.12/nginx/root/opt/app-root/nginxconf.sed
  • codeserver/ubi9-python-3.12/nginx/serverconf/proxy.conf.template
  • codeserver/ubi9-python-3.12/nginx/serverconf/proxy.conf.template_nbprefix
  • codeserver/ubi9-python-3.12/prefetch-input/code-server
  • codeserver/ubi9-python-3.12/prefetch-input/odh/artifacts.in.yaml
  • codeserver/ubi9-python-3.12/prefetch-input/odh/rpms.in.yaml
  • codeserver/ubi9-python-3.12/prefetch-input/odh/rpms.lock.yaml
  • codeserver/ubi9-python-3.12/prefetch-input/patches/apply-patch.sh
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.106.3/README.md
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.106.3/lib/vscode/remote/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/agent-browser/postinstall.js
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ci/build/build-vscode.sh
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ci/dev/postinstall.sh
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/custom-packages/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/gulpfile.reh.ts
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/lib/extensions.ts
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/lib/tsgo.ts
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/npm/preinstall.ts
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/build/vite/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/emmet/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/microsoft-authentication/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/extensions/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/lib/vscode/remote/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/ripgrep/postinstall.js
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.112.0/test/package.json
  • codeserver/ubi9-python-3.12/prefetch-input/patches/codeserver-offline-env.sh
  • codeserver/ubi9-python-3.12/prefetch-input/patches/setup-offline-binaries.sh
  • codeserver/ubi9-python-3.12/prefetch-input/patches/tweak-gha.sh
  • codeserver/ubi9-python-3.12/prefetch-input/repos/centos.repo
  • codeserver/ubi9-python-3.12/prefetch-input/repos/epel.repo
  • codeserver/ubi9-python-3.12/prefetch-input/repos/openshift-clients.repo
  • codeserver/ubi9-python-3.12/prefetch-input/repos/rhsm-pulp.repo
  • codeserver/ubi9-python-3.12/prefetch-input/repos/ubi.repo
  • codeserver/ubi9-python-3.12/prefetch-input/rhds/rpms.lock.yaml
  • codeserver/ubi9-python-3.12/run-code-server.sh
  • codeserver/ubi9-python-3.12/run-nginx.sh
  • codeserver/ubi9-python-3.12/s390x.patch
  • codeserver/ubi9-python-3.12/utils/ms-python.python-2026.0.0.vsix
  • codeserver/ubi9-python-3.12/utils/ms-python.python-2026.4.0.vsix
  • codeserver/ubi9-python-3.12/utils/ms-vscode.js-debug.1.105.0.vsix
  • codeserver/ubi9-python-3.12/utils/ms-vscode.js-debug.1.112.0.vsix
  • codeserver/ubi9-python-3.12/utils/process.sh
  • manifests/odh/base/code-server-notebook-imagestream.yaml
  • scripts/buildinputs/buildinputs_test.go
  • scripts/lockfile-generators/prefetch-all.sh
💤 Files with no reviewable changes (5)
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.106.3/lib/vscode/remote/package.json
  • codeserver/ubi9-python-3.12/utils/ms-vscode.js-debug.1.105.0.vsix
  • codeserver/ubi9-python-3.12/prefetch-input/patches/code-server-v4.106.3/README.md
  • codeserver/ubi9-python-3.12/utils/ms-python.python-2026.0.0.vsix
  • codeserver/ubi9-python-3.12/devel_env_setup.sh

Comment on lines +78 to +79
- path: codeserver/ubi9-python-3.12/prefetch-input/code-server/lib/vscode/build/vite
type: npm

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔴 Critical | ⚡ Quick win

Do not modify .tekton/ files directly in this repository.

As per path instructions, do not modify .tekton/ in red-hat-data-services/notebooks directly; PipelineRuns are synced from konflux-central. Please revert the changes in this directory and make them in konflux-central instead to prevent them from being overwritten or causing sync failures.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.tekton/odh-workbench-codeserver-datascience-cpu-py312-v3-4-push.yaml around
lines 78 - 79, Revert the change to the `.tekton/` PipelineRun configuration,
including the removed
`codeserver/ubi9-python-3.12/prefetch-input/code-server/lib/vscode/build/vite`
entry. Do not make direct edits in `.tekton/`; apply the corresponding change in
the upstream `konflux-central` source instead.

Source: Path instructions

ysok and others added 3 commits July 20, 2026 21:42
pull_request_target builds resolve the AIPCC template from main, so the
PR checkout needs the native Podman configure action, capture-kernel-logs,
and matching containers/podman configs instead of the Homebrew TMPDIR path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Lock and install glibc (+ langpacks) with redhat-rpm-config so dnf can
upgrade the base .24 stack to .25 when nodejs-packaging pulls rpm-config.

Co-authored-by: Cursor <cursoragent@cursor.com>
The native Podman configure action expects 26.04; on 24.04 the AppArmor
pasta reload fails because usr.bin.pasta is missing. Also skip the reload
when that profile file is absent.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ysok

ysok commented Jul 21, 2026

Copy link
Copy Markdown
Author

/build-codeserver

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/actions/install-podman-action/action.yml (1)

4-7: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider removing the unused platform input.

The platform input is declared and required but no longer used in the scripts of this action. If this action is only used internally, consider removing this input here and from all callers to keep the configuration clean.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/actions/install-podman-action/action.yml around lines 4 - 7, Remove
the unused required platform input from the action definition and update all
callers of the install-podman action to stop passing platform. Preserve the
action’s remaining inputs and behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/actions/install-podman-action/action.yml:
- Around line 4-7: Remove the unused required platform input from the action
definition and update all callers of the install-podman action to stop passing
platform. Preserve the action’s remaining inputs and behavior.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 8c8fe350-764f-4461-be5c-8f241af72aa9

📥 Commits

Reviewing files that changed from the base of the PR and between 987b808 and ad8eac6.

📒 Files selected for processing (10)
  • .github/actions/capture-kernel-logs/action.yml
  • .github/actions/install-podman-action/action.yml
  • ci/cached-builds/containers.conf
  • ci/cached-builds/podman.service
  • ci/cached-builds/podman.socket
  • ci/cached-builds/storage.conf
  • codeserver/ubi9-python-3.12/Dockerfile.cpu
  • codeserver/ubi9-python-3.12/Dockerfile.konflux.cpu
  • codeserver/ubi9-python-3.12/prefetch-input/rhds/rpms.in.yaml
  • codeserver/ubi9-python-3.12/prefetch-input/rhds/rpms.lock.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • codeserver/ubi9-python-3.12/Dockerfile.konflux.cpu

ysok and others added 2 commits July 20, 2026 22:50
The native Podman action and /mnt storage.conf require Podman 5.x;
ubuntu-24.04 (4.9.3) fails system reset with "runroot must be set".

Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh CentOS Stream pins (fixes stale kernel-headers 404) and align
codeserver ODH input with the glibc stack used by the Dockerfiles.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ysok

ysok commented Jul 21, 2026

Copy link
Copy Markdown
Author

/build-codeserver

GHA runners expose an ~8GiB tmpfs at /tmp; codeserver multi-arch RHDS
prefetch overflowed it (ENOSPC) while / still had free space. Point
TMPDIR and hermeto staging at /mnt/tmp on the root disk.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ysok

ysok commented Jul 21, 2026

Copy link
Copy Markdown
Author

/build-codeserver

Point cri-o at /mnt/containers/storage so OpenShift tests see locally
built images, align Playwright with main's browser-image flow, waive
code-server 4.112 seccomp static binaries, and pin mysql-connector to
the 9.7.0 wheel available on the RHAI index.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +1260 to +1271
"node_modules/shell-quote": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/actions/playwright-test/action.yml (1)

126-126: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Drop the redundant || '' fallback on a required input.

test-target is declared required: true, so the fallback never triggers.

♻️ Proposed fix
-        TEST_TARGET: ${{ inputs.test-target || '' }}
+        TEST_TARGET: ${{ inputs.test-target }}

Based on learnings, "For composite GitHub Actions, if an input is declared with required: true, callers must provide it, so you should not add a redundant fallback like || ''... The || ... fallback pattern should be reserved for workflow-level inputs... where the input may be unset."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/actions/playwright-test/action.yml at line 126, Remove the redundant
empty-string fallback from the TEST_TARGET assignment in the action’s
environment configuration, referencing inputs.test-target directly. Preserve the
existing required-input contract and all other environment mappings.

Source: Learnings

tests/browser/Dockerfile (1)

15-15: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Bootstrap pnpm version doesn't satisfy devEngines.packageManager range.

pnpm@11.1.2 is installed globally, but tests/browser/package.json5's devEngines.packageManager requires >=11.5.3 <12. With onFail: 'download', pnpm should auto-fetch a compliant version at install time, so this likely still works, but the mismatch makes the pinned bootstrap version meaningless and worth keeping in sync to avoid an extra download and confusion for maintainers.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/browser/Dockerfile` at line 15, Update the pnpm version in the
Dockerfile’s global bootstrap install to satisfy the packageManager range
declared by tests/browser/package.json5, using a version at least 11.5.3 and
below 12 so the pinned bootstrap matches the project requirement.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/browser/package.json5`:
- Around line 39-45: Update the CI script that extracts the pnpm version for
“Lint & Typecheck” to read tests/browser/package.json5’s
devEngines.packageManager.version (or reuse scripts/get_playwright_version.py)
instead of grepping for the removed legacy packageManager field; preserve the
existing version validation and downstream setup.

---

Nitpick comments:
In @.github/actions/playwright-test/action.yml:
- Line 126: Remove the redundant empty-string fallback from the TEST_TARGET
assignment in the action’s environment configuration, referencing
inputs.test-target directly. Preserve the existing required-input contract and
all other environment mappings.

In `@tests/browser/Dockerfile`:
- Line 15: Update the pnpm version in the Dockerfile’s global bootstrap install
to satisfy the packageManager range declared by tests/browser/package.json5,
using a version at least 11.5.3 and below 12 so the pinned bootstrap matches the
project requirement.
🪄 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), Repository UI (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 5fd351cb-c788-4756-a9af-2a3f6e75e474

📥 Commits

Reviewing files that changed from the base of the PR and between 80e6b5e and 6ad54b8.

⛔ Files ignored due to path filters (1)
  • tests/browser/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (12)
  • .github/actions/playwright-test/action.yml
  • ci/cached-builds/crio.conf
  • scripts/check-payload/config.toml
  • scripts/get_playwright_version.py
  • tests/browser/Dockerfile
  • tests/browser/README.md
  • tests/browser/package.json5
  • tests/browser/pnpm-workspace.yaml
  • tests/browser/scripts/README.md
  • tests/browser/tests/openshift_console.spec.ts
  • tests/browser/tests/testcontainers.ts
  • tests/containers/workbenches/jupyterlab/jupyterlab_datascience_test.py

Comment on lines +39 to 45
devEngines: {
packageManager: {
name: 'pnpm',
version: '>=11.5.3 <12',
onFail: 'download',
},
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🔴 Critical | ⚡ Quick win

CI is currently failing because of this field removal.

Removing the legacy "packageManager": "pnpm@10.33.0" field breaks a script elsewhere in the pipeline that still greps for it. Per the pipeline failure logs, "Test Playwright Action / Lint & Typecheck" fails with Failed to extract pnpm version from package.json5 (ver is empty) from a command shaped like grep -oP '"packageManager":\s*"pnpm@\K[0-9.]+' tests/browser/package.json5. That script needs to be updated to read the version from devEngines.packageManager.version (or reuse scripts/get_playwright_version.py's approach) instead of the removed field.

#!/bin/bash
rg -n 'packageManager' --type=yaml --type=sh -g '!node_modules' .
rg -n 'pnpm@\\K' .
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/browser/package.json5` around lines 39 - 45, Update the CI script that
extracts the pnpm version for “Lint & Typecheck” to read
tests/browser/package.json5’s devEngines.packageManager.version (or reuse
scripts/get_playwright_version.py) instead of grepping for the removed legacy
packageManager field; preserve the existing version validation and downstream
setup.

Source: Pipeline failures

Main's Dockerfile requires PLAYWRIGHT_VERSION and the playwright-test
action needs a prebuilt image; update build/test workflows and add
get-pnpm-version.sh for the new package.json5 layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ysok

ysok commented Jul 21, 2026

Copy link
Copy Markdown
Author

/build-codeserver

1 similar comment
@ysok

ysok commented Jul 21, 2026

Copy link
Copy Markdown
Author

/build-codeserver

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

[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

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

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.

3 participants