Skip to content

ci: serve teleop_ros2 live bring-up its own web client build - #1401

Merged
aristarkhovNV merged 1 commit into
mainfrom
aaristarkhov/ci-build-web-client
Oct 29, 2026
Merged

aristarkhovNV merged 1 commit into
mainfrom
aaristarkhov/ci-build-web-client

Conversation

@aristarkhovNV

@aristarkhovNV aristarkhovNV commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Description

test-teleop-ros2's live CloudXR bring-up starts the node with host_client=True, so the library downloads the web client from the GitHub Pages slot that matches the wheel version (versioned_web_client_url()). On a VERSION bump PR that slot (client/release-X.Y.x/) does not exist until main's docs deploy publishes it after merge. The job 404s, wheel-gate fails, and the bump cannot merge. #1399 is blocked on exactly this:

web client: fetching https://nvidia.github.io/IsaacCapture/client/release-1.8.x/index.html → /root/.cloudxr/static-client/index.html
RuntimeError: Could not download https://nvidia.github.io/IsaacCapture/client/release-1.8.x/index.html: HTTP Error 404: Not Found

This PR builds the client from the same commit instead of fetching it:

  • New build-web-client job. Runs the existing build-cloudxr-web-client action and uploads the build as webxr-client. It runs in parallel with build-ubuntu.
  • test-teleop-ros2. Needs build-web-client. On GPU runs it downloads the artifact to a run-unique /tmp directory, mounts it read-only into the live container, and sets TELEOP_WEB_CLIENT_STATIC_DIR. The always-run cleanup step removes the directory.
  • wheel-gate. Lists build-web-client, so a client build failure is named directly instead of surfacing as a skipped test-teleop-ros2.

Side effects:

  • PRs that change deps/cloudxr/webxr_client are now bring-up-tested against their own client, not the last published one.
  • The action runs npm test (jest, about 2 s), so the client unit tests become part of the required wheel-gate. Before this they ran only in the docs workflow, on client-path PRs, with no required check. This is a policy change.
  • wheel-gate now depends on the public NGC Web SDK download and npm install instead of GitHub Pages. Follow-up: cache the SDK tarball in build-cloudxr-web-client as setup-cloudxr-sdk does.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Testing

  • pre-commit hooks pass on the changed workflow file. YAML parses, and the job needs and env resolve as intended.
  • Not yet exercised in CI; this PR's own run is the first. Expected: build-web-client passes, and test-teleop-ros2's live bring-up logs no web client: fetching line.
  • After this merges, rebasing Bump version from 1.7.x to 1.8.x #1399 onto it should clear its test-teleop-ros2 failure.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the linter and formatter with SKIP=check-copyright-year pre-commit run --all-files
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix/feature works (or explained why not)
  • I have signed off all my commits (git commit -s) per the DCO

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Build and Test
    • The automated build now produces a CloudXR web client artifact. GPU-enabled teleoperation tests use that client in the container, and cleanup removes the downloaded files afterward.
    • Wheel validation now waits for the web client build to complete.

@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
Walkthrough

The Ubuntu workflow adds a job that builds the CloudXR web client and uploads it as the webxr-client artifact. The teleoperation test job depends on this build, downloads the artifact when GPU tests are enabled, and mounts it read-only into the CloudXR container. The workflow also removes the downloaded directory during cleanup, and the wheel gate waits for the build job.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant BuildJob as build-web-client
  participant WebClientArtifact as webxr-client artifact
  participant TestJob as test-teleop-ros2
  participant CloudXRContainer as CloudXR container
  BuildJob->>WebClientArtifact: Upload build directory
  TestJob->>WebClientArtifact: Download when GPU tests are enabled
  TestJob->>CloudXRContainer: Mount read-only at /opt/webxr_client
  TestJob->>CloudXRContainer: Set TELEOP_WEB_CLIENT_STATIC_DIR
Loading
Merge Risk: Minimal · previous review 7a6d4

No actionable merge-blocking risk is established by the reviewed changes.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: CI builds and serves a dedicated web client for the teleoperation ROS 2 live bring-up.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@aristarkhovNV
aristarkhovNV added this pull request to stack #1402 October 29, 2026 23:08
The live CloudXR bring-up in test-teleop-ros2 hosts the web client, which
the library downloads from the GitHub Pages slot for the wheel's version.
On a VERSION bump PR that slot (client/release-X.Y.x/) does not exist until
main deploys it after merge, so the job 404s and wheel-gate blocks the
merge. Build the client from the same commit in a build-web-client job and
point TELEOP_WEB_CLIENT_STATIC_DIR at it.

Signed-off-by: Andrei Aristarkhov <aaristarkhov@nvidia.com>
@aristarkhovNV
aristarkhovNV force-pushed the aaristarkhov/ci-build-web-client branch from 7a6d437 to 8aa8909 Compare October 29, 2026 23:09
@aristarkhovNV
aristarkhovNV enabled stacked auto-merge (squash) October 29, 2026 23:28
@aristarkhovNV
aristarkhovNV merged commit 8db71dd into main Oct 29, 2026
38 checks passed
@aristarkhovNV
aristarkhovNV deleted the aaristarkhov/ci-build-web-client branch October 29, 2026 23:37

This branch was successfully deployed

1 active deployment
dev — 8aa89093 Deployed Oct 29, 2026 by aristarkhovNV via publish-wheel #6302
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants