Skip to content

Snap packaging - #17

Open
Guillaumebeuzeboc wants to merge 26 commits into
PlotJuggler:mainfrom
MirkoFerrati:mirko/snap_packaging
Open

Guillaumebeuzeboc wants to merge 26 commits into
PlotJuggler:mainfrom
MirkoFerrati:mirko/snap_packaging

Conversation

@Guillaumebeuzeboc

@Guillaumebeuzeboc Guillaumebeuzeboc commented Oct 19, 2026 •

Copy link
Copy Markdown

Hello,
this PR adds snap packaging for pj-bridge, allowing users to install it with a single command:

sudo snap install pj-bridge --beta

and then run it with:

pj-bridge.pj-bridge-ros2

A beta version is already available on the Snap Store. Ownership of the snap can be transferred to your preferred publisher account.

This PR includes:

  • A snapcraft.yaml definition to build and run pj-bridge as a strictly confined application.
  • Multiple RMW implementations and a broad selection of ROS 2 message and interface packages.
  • A default Fast DDS configuration that disables shared-memory transport to avoid permission issues.
  • CI to build and test the snap for both amd64 and arm64 using GitHub-hosted runners.

I have also requested additional tracks so we can extend the CI to publish snaps for multiple ROS 2 distributions in the future.

Merging this PR will require to add the SNAPSTORE_LOGIN secret generated from an account associated with the snap.

MirkoFerrati and others added 26 commits July 7, 2026 17:57
Replace the hardcoded version: 0.5.0 with version: git + adopt-info so a
pushed tag (e.g. v0.5.0) drives the published snap version. The pj_bridge
part computes the version from git describe and sets grade=stable on a
clean tag / grade=devel when ahead of a tag.
…ssions

- Add integration-test job that installs the snap and runs the end-to-end
  suite (host ROS 2 publisher -> bridge -> ws_reader), restoring the coverage
  that was inline before the PlotJuggler alignment.
- Gate release and publish behind integration-test (needs: [snap, integration-test])
  so a failing test blocks tag-driven releases.
- Remove the redundant workflow-level 'permissions: contents: write'; keep it
  scoped to the release job that actually needs it.
- Update the header comment to describe the current pipeline.
DOWNLOAD_EXTRACT_TIMESTAMP requires CMake >= 3.24, but Ubuntu 22.04 ships
CMake 3.22, where the unknown option fails configuration.
The integration test only needs a host-side ROS 2 publisher (rclpy +
std_msgs). Replace ros-tooling/setup-ros@v0.7 -- which installs the full
ros-base metapackage plus colcon/rosdep/vcstool dev tooling -- with a
direct apt install of ros-jazzy-rclpy, ros-jazzy-std-msgs and
ros-jazzy-rmw-fastrtps-cpp (--no-install-recommends).
The app forces UDP-only DDS via FASTRTPS_DEFAULT_PROFILES_FILE
(fastrtps_no_shm.xml), so the Fast DDS shared-memory transport is never
used and the shared-memory plug is unnecessary.
The ros2-jazzy extension plus the colcon plugin's rosdep resolution of
package.xml now provide the ROS packages.
Remove them from the manual build-packages/stage-packages
lists.
Keep only git (override-pull git describe) and libssl-dev/zlib1g-dev
(IXWebSocket TLS/zlib, pulled via FetchContent, not declared in package.xml).
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jeremie Deray <deray.jeremie@gmail.com>
…y/stable

Replace the GitHub Release job with a Snap Store publish to jazzy/candidate
on tag pushes, and add a manual workflow_dispatch promote job that moves the
current candidate revision to jazzy/stable. Scope top-level permissions to
contents: read since store auth uses SNAPCRAFT_STORE_CREDENTIALS.
…n-build

Aligns the build action with the canonical/action-publish action already used
downstream. Same 'snap' output, so the artifact path wiring is unchanged.
address PR review: reusable snap workflows, ros2cli test, trim comments
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