Skip to content

ci: add baseline ROS 2 CI image - #41

Open
wikki26 wants to merge 9 commits into
mainfrom
h-ci-1-baseline-image
Open

wikki26 wants to merge 9 commits into
mainfrom
h-ci-1-baseline-image

Conversation

@wikki26

@wikki26 wikki26 commented Oct 6, 2026

Copy link
Copy Markdown

Summary

Adds the initial H-CI-1 baseline CI container image for ROS 2 Jazzy and a GitHub Actions workflow for publishing the image to GHCR.

Changes

  • Pin ROS 2 Jazzy base image by digest
  • Preinstall common CI/ROS tooling
  • Preinstall platform ROS dependencies
  • Configure CycloneDDS as the default RMW implementation
  • Add GitHub Actions workflow for building and publishing the image to GHCR

Validation

Tested locally against openamr-platform-sw.

  • All 7 ROS packages build successfully
  • Clean colcon build --symlink-install: ~1m17s
  • Previous cold dependency installation: ~6m50s
  • Preinstalled dependencies remove the dependency-install step from the normal CI path

Known issue

micro_ros_agent does not currently have a rosdep definition for Ubuntu Noble. The platform workspace still builds successfully.

Signed-off-by: Vignesh <vickyofficial26@gmail.com>
@cla-assistant

cla-assistant Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@cla-assistant

cla-assistant Bot commented Oct 6, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@panthera-momagdii panthera-momagdii 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.

Direction is good, but H-CI-1 is not complete yet against the work-package acceptance you shared.

Please close these before approval:

  1. The new image workflow only runs on push to main / manual dispatch, so this PR has no hosted Docker build validation. Add a PR build-only path (no GHCR push) so a broken Dockerfile cannot merge green.
  2. After the publish path is proven, record/pin the produced image digest in the manifest.
  3. Use that same pinned image for contributor development through a devcontainer, and show a contributor can open it and reach a working build.
  4. Add evidence for the cold pull-request software gate staying within the 10-minute budget.
  5. The image currently installs ros-jazzy-rplidar-ros, while the current 2.0 S3 path is moving to sllidar_ros2 from the pinned source manifest. Please either document why the legacy package is still intentionally needed in the baseline image or align the image with the current driver path.

Repository-quality and CLA are green, but they do not validate the container build/publish path itself. Re-request review once the hosted image build and H-CI-1 acceptance evidence are present.

@panthera-momagdii panthera-momagdii 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.

Direction is good, but H-CI-1 is not complete yet against the stated acceptance criteria.

Please close these before approval:

  1. The image workflow only runs on push to main / manual dispatch, so this PR has no hosted Docker build validation. Add a pull-request build-only path (no GHCR push) so a broken Dockerfile cannot merge green.
  2. After the publish path is proven, record and pin the produced image digest in the manifest.
  3. Use the same pinned image for contributor development through a devcontainer and show that a contributor can open it and reach a working build.
  4. Add evidence that a cold pull-request software gate stays within the 10-minute budget.
  5. The image currently installs ros-jazzy-rplidar-ros, while the current 2.0 S3 path is moving to sllidar_ros2 from the pinned source manifest. Either document why the legacy package is intentionally kept in the baseline image or align the image with the current driver path.

Repository-quality and CLA are green, but they do not validate the container build/publish path itself. Re-request review once the hosted image build and H-CI-1 acceptance evidence are present.

wikki26 and others added 2 commits October 8, 2026 19:59
Signed-off-by: Arumuga Vignesh S R <129583467+wikki26@users.noreply.github.com>
Signed-off-by: Arumuga Vignesh S R <129583467+wikki26@users.noreply.github.com>
@wikki26
wikki26 force-pushed the h-ci-1-baseline-image branch from a548857 to d929043 Compare October 8, 2026 18:00
Signed-off-by: Arumuga Vignesh S R <129583467+wikki26@users.noreply.github.com>
Signed-off-by: Arumuga Vignesh S R <129583467+wikki26@users.noreply.github.com>
Signed-off-by: Arumuga Vignesh S R <129583467+wikki26@users.noreply.github.com>
@wikki26

wikki26 commented Oct 13, 2026

Copy link
Copy Markdown
Author

Hi @panthera-momagdii,

I've pushed the latest H-CI-1 updates and wanted to share the validation status against your review feedback.

Completed:

  • GitHub-hosted PR Docker image build passes without publishing to GHCR.
  • Repository quality and ROS verifier checks pass on commit a1f6193.
  • The baseline image has been published to GHCR and pinned by digest in manifest PR Fix image link in README.md #13 and platform devcontainer PR Update org profile README for OpenAMRobot 2.0 #57.
  • The platform ROS 2 workspace successfully builds all 7 packages locally using the pinned image.
  • Removed the legacy ros-jazzy-rplidar-ros dependency and documented the LiDAR driver policy.

Validation:

Still pending:

  • Verification of the automated GHCR publishing path.
  • Actual VS Code devcontainer startup validation.
  • Cold contributor PR software build/test gate timing.
  • sllidar_ros2 source integration and hardware compatibility validation.

Could you review the latest changes and let me know if any further adjustments are needed for H-CI-1 acceptance?

Thanks!

@panthera-momagdii panthera-momagdii 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.

Reviewed the current two-file image/workflow change at a1f619307557ad3a0680065127df7e027d47dd83.

Review basis: openAMRobot/.github, branch h-ci-1-baseline-image, head a1f6193, base 539da19. Expected outcome: acknowledge the image-build follow-up and distinguish the evidence now present from the remaining H-CI-1 acceptance work.

The current change addresses the PR-safe build path, immutable ROS base-image pin, and removal of the legacy ros-jazzy-rplidar-ros package from this image. PR events build without logging into or pushing to GHCR; publishing is separated into the intended main/manual-candidate paths. Action references are pinned. The current image-build run passed.

The candidate is also pinned in manifest #13, and platform-sw #57 demonstrates that it can be pulled and build the seven packages. That is useful integration evidence, but #57's subsequent test failure remains open; the successful build does not make its full gate pass.

The remaining H-CI-1 evidence is still:

  • a successful run of the automated GHCR publication path, with the resulting digest;
  • an actual VS Code devcontainer startup using that pinned image;
  • the complete passing cold gate with its measured duration against the agreed under-10-minute target.

Please attach those run/startup records and keep the PR description aligned with the evidence available. The S3 sllidar integration remains a separate follow-up as documented.

No new blocking source finding in this image-build delta. This follow-up acknowledges the progress; the existing H-CI-1 acceptance review remains incomplete until the outstanding evidence is supplied.

ChatGPT-assisted source and hosted-evidence review; no local devcontainer startup or hardware execution.

@BotshareAI BotshareAI left a comment

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.

Good: digest-pinned base, actions pinned by SHA, a PR build without push, legacy rplidar package removed. Before merge:

Split the jobs: a build job with contents: read for pull_request, and a publish job with packages: write only for push to main or workflow_dispatch.
The publish condition hardcodes refs/heads/h-ci-1-baseline-image. That branch disappears after merge. Allow dispatch from main only.
Add ros-jazzy-twist-mux (command arbitration, ui #31). Remove ros-jazzy-camera-ros unless a package depends on it; the base camera is the Gemini 336L on the Orbbec driver.
Keep rmw_cyclonedds_cpp as default; it will be recorded as the project RMW in the register.
Provenance: the digest pinned in manifest #13 and platform-sw #57 (sha256:1653d4…) was published from the feature branch. After merge, publish from main, record the run ID and digest, then update #13 and #57 to it.

Devcontainer start-up and the 10-minute cold gate stay with platform-sw #57 and do not block this image PR. The branch is also 8 commits behind main.

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.

3 participants