Skip to content

Iterate over IntraProcessBuffer instead of creating a vector #16

Iterate over IntraProcessBuffer instead of creating a vector

Iterate over IntraProcessBuffer instead of creating a vector #16

Workflow file for this run

# This workflow checks ABI compatibility of the shared libraries built from
# this repository on every PR:
#
# - librclcpp.so (rclcpp)
# - librclcpp_action.so (rclcpp_action)
# - libcomponent_manager.so (rclcpp_components)
# - librclcpp_lifecycle.so (rclcpp_lifecycle)
#
# It uses the reusable ros2-abi-action workflow, which:
# 1. resolves the ROS 2 distro from the PR's target branch (rolling/lyrical/kilted/jazzy/humble),
# 2. builds all listed packages twice (once against the target branch, once
# against the PR head) with -g -Og so DWARF debug info is present; a single
# colcon invocation builds the union of the dependency closures exactly once,
# 3. with build-mode: source, imports the distro's ros2.repos and builds
# against today's source tree instead of the released binaries; this is
# required for core repositories like rclcpp, whose dependencies (rcl,
# rmw, ...) are usually ahead of the released Debian packages. The
# incremental strategy starts from the nightly source-built underlay
# image (ros-abi:<distro>-source) and recompiles only what moved since,
# 4. expands the soname glob and delegates the binary ABI diff to
# fujitatomoya/libabigail-action (abidiff), one job per library,
# 5. applies REP-0009 policy automatically: released distros (humble/jazzy/kilted/lyrical)
# fail on an incompatible ABI break, rolling is advisory only,
# 6. surfaces per-library verdicts as sticky PR comments, labels, and a pass/fail check.
#
# Paired changes in other repositories (e.g. an rcl PR this PR depends on) are
# declared by the PR author in the PR description and applied to the PR side
# of the build:
#
# Depends-On: ros2/rcl#1234
#
# See https://github.com/fujitatomoya/ros2-abi-action for details.
name: abi
on:
pull_request:
branches: [ "rolling", "lyrical", "kilted", "jazzy", "humble" ]
# Allows you to run this workflow manually from the Actions tab.
workflow_dispatch:
jobs:
abi:
permissions:
contents: read
pull-requests: write
issues: write
uses: fujitatomoya/ros2-abi-action/.github/workflows/check.yml@main
with:
# Colcon package names to build (whitespace-separated); no single package
# depends on all the others, so list every package in this repository.
package: rclcpp rclcpp_action rclcpp_components rclcpp_lifecycle
# Shared libraries produced by the packages above. The glob matches all
# libraries in the install tree; tests are not built (BUILD_TESTING=OFF),
# so no test-only libraries are picked up.
soname: "lib*.so"
# rclcpp is a ROS 2 core repository: its dependencies are developed on
# source branches ahead of the released binaries, so build against the
# distro's ros2.repos source tree (nightly-cached, incremental) instead
# of the binary underlay.
build-mode: source
# auto -> distro derived from the PR target branch.
distro: auto
# auto -> REP-0009: strict on released distros, advisory on rolling.
policy: auto