From d91d6aca77ee723afde79e05129f440ec1d06da5 Mon Sep 17 00:00:00 2001 From: Michael Orlov Date: Fri, 9 Aug 2024 12:48:05 -0700 Subject: [PATCH 1/2] Update CI scripts to use Ubuntu Noble distros and bump action scripts to latest versions (#1709) * Use Ubuntu Noble distros for ci jobs on rolling Signed-off-by: Michael Orlov * Bump actions-ros-lint to version 0.1.3 and actions/checkout to v4 Signed-off-by: Michael Orlov * Exclude cppcheck from CI due to known issue that it is very slow See https://github.com/ament/ament_lint/pull/345 for details. Signed-off-by: Michael Orlov * Bump mypy to version 1.9.0-4ubuntu1 to be aligned with Noble - Also add `--break-system-packages` to avoid error during pip uninstall Signed-off-by: Michael Orlov * Remove "sudo pip uninstall -y mypy" since it is not installed with pip Addressing the error message: Found existing installation: mypy 1.9.0 ERROR: Cannot uninstall mypy 1.9.0, RECORD file not found. Hint: The package was installed by debian. Signed-off-by: Michael Orlov * Revert "Bump mypy to version 1.9.0-4ubuntu1 to be aligned with Noble" This reverts commit b5aa0186 Signed-off-by: Michael Orlov * Fixes for new mypy (Ubuntu 24.04) (#1763) * Apply new stubgen changes Signed-off-by: Roman Sokolkov * Update CI script and README.md Signed-off-by: Roman Sokolkov --------- Signed-off-by: Roman Sokolkov * Remove "--break-system-packages" flag from mypy install in README.md - Rationale: On Ubuntu 22.04 is an older version of the pip3 and python version which doesn't have this flag. - Also removed sudo before "pip3 install -U mypy==1.9" in README.md Signed-off-by: Michael Orlov --------- Signed-off-by: Michael Orlov Signed-off-by: Roman Sokolkov Co-authored-by: Roman (cherry picked from commit 27a6b600c2a813ec1f2154145fe77392c88b314b) --- .github/workflows/lint.yml | 28 ++++++++++--------- .github/workflows/test.yml | 5 ++-- rosbag2_py/README.md | 7 ++++- rosbag2_py/rosbag2_py/__init__.pyi | 2 ++ .../rosbag2_py/_compression_options.pyi | 3 -- .../rosbag2_py/_message_definitions.pyi | 4 +-- rosbag2_py/rosbag2_py/_reader.pyi | 14 ++++------ rosbag2_py/rosbag2_py/_storage.pyi | 26 ++++------------- rosbag2_py/rosbag2_py/_transport.pyi | 16 +++++------ rosbag2_py/rosbag2_py/_writer.pyi | 2 +- 10 files changed, 45 insertions(+), 62 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f8b8cb4911..65f35ef734 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,14 +8,14 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-focal-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest strategy: fail-fast: false matrix: linter: [copyright, xmllint] steps: - - uses: actions/checkout@v2 - - uses: ros-tooling/action-ros-lint@v0.1 + - uses: actions/checkout@v4 + - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} distribution: rolling @@ -43,10 +43,11 @@ jobs: strategy: fail-fast: false matrix: - linter: [cppcheck, cpplint, uncrustify] + # We exclude cppcheck due to https://github.com/ament/ament_lint/pull/345 + linter: [cpplint, uncrustify] steps: - - uses: actions/checkout@v2 - - uses: ros-tooling/action-ros-lint@v0.1 + - uses: actions/checkout@v4 + - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} distribution: rolling @@ -67,17 +68,18 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-focal-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest strategy: fail-fast: false matrix: - linter: [cppcheck, cpplint, clang_format] + # We exclude cppcheck due to https://github.com/ament/ament_lint/pull/345 + linter: [cpplint, clang_format] include: - linter: clang_format arguments: "--config rosbag2_storage_mcap/.clang-format" steps: - - uses: actions/checkout@v2 - - uses: ros-tooling/action-ros-lint@v0.1 + - uses: actions/checkout@v4 + - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} arguments: ${{ matrix.arguments }} @@ -88,14 +90,14 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-focal-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest strategy: fail-fast: false matrix: linter: [pep257, flake8] steps: - - uses: actions/checkout@v2 - - uses: ros-tooling/action-ros-lint@v0.1 + - uses: actions/checkout@v4 + - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} distribution: rolling diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fdee05c09c..04dda7dcd9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: build_and_test: runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-jammy-latest + image: rostooling/setup-ros-docker:ubuntu-noble-latest steps: - name: Build and run tests id: action-ros-ci @@ -91,8 +91,7 @@ jobs: - name: Is regeneration of Python stubs required? run: | rosbag2_path=$(colcon list -p --packages-select rosbag2)/.. - sudo pip uninstall -y mypy - sudo apt update && sudo apt -y install mypy=0.942-1ubuntu1 + sudo apt update && sudo apt -y install mypy source install/setup.sh stubgen -p rosbag2_py -o ${rosbag2_path}/rosbag2_py cd ${rosbag2_path} diff --git a/rosbag2_py/README.md b/rosbag2_py/README.md index 9c016db74b..7cd9a414bd 100644 --- a/rosbag2_py/README.md +++ b/rosbag2_py/README.md @@ -14,7 +14,12 @@ source install/setup.sh # Make sure rosbag2_py can be imported python3 -c 'import rosbag2_py' -sudo apt update && sudo apt install mypy=0.942-1ubuntu1 +# Ubuntu 24.04 +sudo apt update && sudo apt install mypy + +# Older Ubuntu +# pip3 install -U mypy==1.9 + cd stubgen -p rosbag2_py -o rosbag2_py ``` diff --git a/rosbag2_py/rosbag2_py/__init__.pyi b/rosbag2_py/rosbag2_py/__init__.pyi index c9a51d1cb0..0449aba3a9 100644 --- a/rosbag2_py/rosbag2_py/__init__.pyi +++ b/rosbag2_py/rosbag2_py/__init__.pyi @@ -6,3 +6,5 @@ from rosbag2_py._reindexer import Reindexer as Reindexer from rosbag2_py._storage import BagMetadata as BagMetadata, ConverterOptions as ConverterOptions, FileInformation as FileInformation, MessageDefinition as MessageDefinition, MetadataIo as MetadataIo, ReadOrder as ReadOrder, ReadOrderSortBy as ReadOrderSortBy, StorageFilter as StorageFilter, StorageOptions as StorageOptions, TopicInformation as TopicInformation, TopicMetadata as TopicMetadata, get_default_storage_id as get_default_storage_id, to_rclcpp_qos_vector as to_rclcpp_qos_vector from rosbag2_py._transport import PlayOptions as PlayOptions, Player as Player, RecordOptions as RecordOptions, Recorder as Recorder, ServiceRequestsSource as ServiceRequestsSource, bag_rewrite as bag_rewrite from rosbag2_py._writer import SequentialCompressionWriter as SequentialCompressionWriter, SequentialWriter as SequentialWriter, get_registered_compressors as get_registered_compressors, get_registered_serializers as get_registered_serializers, get_registered_writers as get_registered_writers + +__all__ = ['bag_rewrite', 'CompressionMode', 'CompressionOptions', 'compression_mode_from_string', 'compression_mode_to_string', 'ConverterOptions', 'FileInformation', 'get_default_storage_id', 'get_registered_readers', 'get_registered_writers', 'get_registered_compressors', 'get_registered_serializers', 'to_rclcpp_qos_vector', 'ReadOrder', 'ReadOrderSortBy', 'Reindexer', 'SequentialCompressionReader', 'SequentialCompressionWriter', 'SequentialReader', 'SequentialWriter', 'StorageFilter', 'StorageOptions', 'TopicMetadata', 'TopicInformation', 'BagMetadata', 'MessageDefinition', 'MetadataIo', 'Info', 'Player', 'PlayOptions', 'ServiceRequestsSource', 'Recorder', 'RecordOptions', 'LocalMessageDefinitionSource'] diff --git a/rosbag2_py/rosbag2_py/_compression_options.pyi b/rosbag2_py/rosbag2_py/_compression_options.pyi index b595168701..485a8a7b26 100644 --- a/rosbag2_py/rosbag2_py/_compression_options.pyi +++ b/rosbag2_py/rosbag2_py/_compression_options.pyi @@ -5,7 +5,6 @@ MESSAGE: CompressionMode NONE: CompressionMode class CompressionMode: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only FILE: ClassVar[CompressionMode] = ... MESSAGE: ClassVar[CompressionMode] = ... @@ -13,12 +12,10 @@ class CompressionMode: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property diff --git a/rosbag2_py/rosbag2_py/_message_definitions.pyi b/rosbag2_py/rosbag2_py/_message_definitions.pyi index e45e831870..2938ed7c4f 100644 --- a/rosbag2_py/rosbag2_py/_message_definitions.pyi +++ b/rosbag2_py/rosbag2_py/_message_definitions.pyi @@ -1,5 +1,3 @@ -from typing import Any - class LocalMessageDefinitionSource: def __init__(self) -> None: ... - def get_full_text(self, *args, **kwargs) -> Any: ... + def get_full_text(self, *args, **kwargs): ... diff --git a/rosbag2_py/rosbag2_py/_reader.pyi b/rosbag2_py/rosbag2_py/_reader.pyi index 3b79b1bf20..f5bef4b270 100644 --- a/rosbag2_py/rosbag2_py/_reader.pyi +++ b/rosbag2_py/rosbag2_py/_reader.pyi @@ -1,10 +1,8 @@ -from typing import Any - class SequentialCompressionReader: def __init__(self) -> None: ... - def get_all_message_definitions(self, *args, **kwargs) -> Any: ... - def get_all_topics_and_types(self, *args, **kwargs) -> Any: ... - def get_metadata(self, *args, **kwargs) -> Any: ... + def get_all_message_definitions(self, *args, **kwargs): ... + def get_all_topics_and_types(self, *args, **kwargs): ... + def get_metadata(self, *args, **kwargs): ... def has_next(self) -> bool: ... def open(self, arg0, arg1) -> None: ... def open_uri(self, arg0: str) -> None: ... @@ -16,9 +14,9 @@ class SequentialCompressionReader: class SequentialReader: def __init__(self) -> None: ... - def get_all_message_definitions(self, *args, **kwargs) -> Any: ... - def get_all_topics_and_types(self, *args, **kwargs) -> Any: ... - def get_metadata(self, *args, **kwargs) -> Any: ... + def get_all_message_definitions(self, *args, **kwargs): ... + def get_all_topics_and_types(self, *args, **kwargs): ... + def get_metadata(self, *args, **kwargs): ... def has_next(self) -> bool: ... def open(self, arg0, arg1) -> None: ... def open_uri(self, arg0: str) -> None: ... diff --git a/rosbag2_py/rosbag2_py/_storage.pyi b/rosbag2_py/rosbag2_py/_storage.pyi index abf846c7ce..d6cfb44d56 100644 --- a/rosbag2_py/rosbag2_py/_storage.pyi +++ b/rosbag2_py/rosbag2_py/_storage.pyi @@ -1,12 +1,11 @@ -from typing import ClassVar, Dict, List - import datetime +from typing import ClassVar, Dict, List class BagMetadata: bag_size: int compression_format: str compression_mode: str - custom_data: Dict[str,str] + custom_data: Dict[str, str] duration: object files: List[FileInformation] message_count: int @@ -16,7 +15,7 @@ class BagMetadata: storage_identifier: str topics_with_message_count: List[TopicInformation] version: int - def __init__(self, version: int = ..., bag_size: int = ..., storage_identifier: str = ..., relative_file_paths: List[str] = ..., files: List[FileInformation] = ..., duration: object = ..., starting_time: object = ..., message_count: int = ..., topics_with_message_count: List[TopicInformation] = ..., compression_format: str = ..., compression_mode: str = ..., custom_data: Dict[str,str] = ..., ros_distro: str = ...) -> None: ... + def __init__(self, version: int = ..., bag_size: int = ..., storage_identifier: str = ..., relative_file_paths: List[str] = ..., files: List[FileInformation] = ..., duration: object = ..., starting_time: object = ..., message_count: int = ..., topics_with_message_count: List[TopicInformation] = ..., compression_format: str = ..., compression_mode: str = ..., custom_data: Dict[str, str] = ..., ros_distro: str = ...) -> None: ... class ConverterOptions: input_serialization_format: str @@ -71,7 +70,6 @@ class ReadOrder: def __init__(self, sort_by: ReadOrderSortBy = ..., reverse: bool = ...) -> None: ... class ReadOrderSortBy: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only File: ClassVar[ReadOrderSortBy] = ... PublishedTimestamp: ClassVar[ReadOrderSortBy] = ... @@ -79,12 +77,10 @@ class ReadOrderSortBy: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property @@ -100,7 +96,7 @@ class StorageFilter: def __init__(self, topics: List[str] = ..., services_events: List[str] = ..., regex: str = ..., exclude_topics: List[str] = ..., exclude_service_events: List[str] = ..., regex_to_exclude: str = ...) -> None: ... class StorageOptions: - custom_data: Dict[str,str] + custom_data: Dict[str, str] end_time_ns: int max_bagfile_duration: int max_bagfile_size: int @@ -111,7 +107,7 @@ class StorageOptions: storage_id: str storage_preset_profile: str uri: str - def __init__(self, uri: str, storage_id: str = ..., max_bagfile_size: int = ..., max_bagfile_duration: int = ..., max_cache_size: int = ..., storage_preset_profile: str = ..., storage_config_uri: str = ..., snapshot_mode: bool = ..., start_time_ns: int = ..., end_time_ns: int = ..., custom_data: Dict[str,str] = ...) -> None: ... + def __init__(self, uri: str, storage_id: str = ..., max_bagfile_size: int = ..., max_bagfile_duration: int = ..., max_cache_size: int = ..., storage_preset_profile: str = ..., storage_config_uri: str = ..., snapshot_mode: bool = ..., start_time_ns: int = ..., end_time_ns: int = ..., custom_data: Dict[str, str] = ...) -> None: ... class TopicInformation: message_count: int @@ -129,7 +125,6 @@ class TopicMetadata: def equals(self, arg0: TopicMetadata) -> bool: ... class rmw_qos_durability_policy_t: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only RMW_QOS_POLICY_DURABILITY_SYSTEM_DEFAULT: ClassVar[rmw_qos_durability_policy_t] = ... RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL: ClassVar[rmw_qos_durability_policy_t] = ... @@ -138,19 +133,16 @@ class rmw_qos_durability_policy_t: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property def value(self) -> int: ... class rmw_qos_history_policy_t: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only RMW_QOS_POLICY_HISTORY_KEEP_ALL: ClassVar[rmw_qos_history_policy_t] = ... RMW_QOS_POLICY_HISTORY_KEEP_LAST: ClassVar[rmw_qos_history_policy_t] = ... @@ -159,19 +151,16 @@ class rmw_qos_history_policy_t: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property def value(self) -> int: ... class rmw_qos_liveliness_policy_t: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only RMW_QOS_POLICY_LIVELINESS_AUTOMATIC: ClassVar[rmw_qos_liveliness_policy_t] = ... RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_TOPIC: ClassVar[rmw_qos_liveliness_policy_t] = ... @@ -180,19 +169,16 @@ class rmw_qos_liveliness_policy_t: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property def value(self) -> int: ... class rmw_qos_reliability_policy_t: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT: ClassVar[rmw_qos_reliability_policy_t] = ... RMW_QOS_POLICY_RELIABILITY_RELIABLE: ClassVar[rmw_qos_reliability_policy_t] = ... @@ -201,12 +187,10 @@ class rmw_qos_reliability_policy_t: __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property diff --git a/rosbag2_py/rosbag2_py/_transport.pyi b/rosbag2_py/rosbag2_py/_transport.pyi index 0b67ca5752..76c6531a67 100644 --- a/rosbag2_py/rosbag2_py/_transport.pyi +++ b/rosbag2_py/rosbag2_py/_transport.pyi @@ -1,8 +1,7 @@ -from typing import Any, ClassVar, List - -from typing import overload import datetime import rosbag2_py._storage +from _typeshed import Incomplete +from typing import ClassVar, List, overload class PlayOptions: clock_publish_frequency: float @@ -22,7 +21,7 @@ class PlayOptions: rate: float read_ahead_queue_size: int regex_to_filter: str - service_requests_source: Any + service_requests_source: Incomplete services_to_filter: List[str] start_offset: float start_paused: bool @@ -38,7 +37,8 @@ class Player: @overload def __init__(self, arg0: str) -> None: ... def burst(self, storage_options: rosbag2_py._storage.StorageOptions, play_options: PlayOptions, num_messages: int) -> None: ... - def cancel(self, *args, **kwargs) -> Any: ... + @staticmethod + def cancel() -> None: ... def play(self, storage_options: rosbag2_py._storage.StorageOptions, play_options: PlayOptions) -> None: ... class RecordOptions: @@ -74,23 +74,21 @@ class Recorder: def __init__(self) -> None: ... @overload def __init__(self, arg0: str) -> None: ... - def cancel(self, *args, **kwargs) -> Any: ... + @staticmethod + def cancel() -> None: ... def record(self, storage_options: rosbag2_py._storage.StorageOptions, record_options: RecordOptions, node_name: str = ...) -> None: ... class ServiceRequestsSource: - __doc__: ClassVar[str] = ... # read-only __members__: ClassVar[dict] = ... # read-only CLIENT_INTROSPECTION: ClassVar[ServiceRequestsSource] = ... SERVICE_INTROSPECTION: ClassVar[ServiceRequestsSource] = ... __entries: ClassVar[dict] = ... def __init__(self, value: int) -> None: ... def __eq__(self, other: object) -> bool: ... - def __getstate__(self) -> int: ... def __hash__(self) -> int: ... def __index__(self) -> int: ... def __int__(self) -> int: ... def __ne__(self, other: object) -> bool: ... - def __setstate__(self, state: int) -> None: ... @property def name(self) -> str: ... @property diff --git a/rosbag2_py/rosbag2_py/_writer.pyi b/rosbag2_py/rosbag2_py/_writer.pyi index ec176c7622..d2c6b45aea 100644 --- a/rosbag2_py/rosbag2_py/_writer.pyi +++ b/rosbag2_py/rosbag2_py/_writer.pyi @@ -1,6 +1,6 @@ -from typing import overload import rosbag2_py._compression_options import rosbag2_py._storage +from typing import overload class SequentialCompressionWriter: def __init__(self, arg0: rosbag2_py._compression_options.CompressionOptions) -> None: ... From 5debb595eaf01118d3c2aab9380894ad4fb7744f Mon Sep 17 00:00:00 2001 From: Michael Orlov Date: Fri, 9 Aug 2024 13:56:00 -0700 Subject: [PATCH 2/2] Update github CI scripts to use jazzy instead of rolling Signed-off-by: Michael Orlov --- .github/workflows/lint.yml | 16 ++++++++-------- .github/workflows/test.yml | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 65f35ef734..65f39bde8f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-jazzy-ros-base-latest strategy: fail-fast: false matrix: @@ -18,7 +18,7 @@ jobs: - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} - distribution: rolling + distribution: jazzy package-name: | ros2bag rosbag2 @@ -39,7 +39,7 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-focal-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-jazzy-ros-base-latest strategy: fail-fast: false matrix: @@ -50,7 +50,7 @@ jobs: - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} - distribution: rolling + distribution: jazzy package-name: | rosbag2_compression rosbag2_compression_zstd @@ -68,7 +68,7 @@ jobs: name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-jazzy-ros-base-latest strategy: fail-fast: false matrix: @@ -83,14 +83,14 @@ jobs: with: linter: ${{ matrix.linter }} arguments: ${{ matrix.arguments }} - distribution: rolling + distribution: jazzy package-name: rosbag2_storage_mcap ament_lint_python: # Linters applicable to Python packages name: ament_${{ matrix.linter }} runs-on: ubuntu-latest container: - image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest + image: rostooling/setup-ros-docker:ubuntu-noble-ros-jazzy-ros-base-latest strategy: fail-fast: false matrix: @@ -100,7 +100,7 @@ jobs: - uses: ros-tooling/action-ros-lint@0.1.3 with: linter: ${{ matrix.linter }} - distribution: rolling + distribution: jazzy package-name: | ros2bag rosbag2_py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 04dda7dcd9..6e027299cc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,7 +3,7 @@ on: pull_request: push: branches: - - rolling + - jazzy schedule: # Run every hour. This helps detect flakiness, # and broken external dependencies. @@ -19,8 +19,8 @@ jobs: id: action-ros-ci uses: ros-tooling/action-ros-ci@v0.3 with: - target-ros2-distro: rolling - vcs-repo-file-url: https://raw.githubusercontent.com/ros2/ros2/rolling/ros2.repos + target-ros2-distro: jazzy + vcs-repo-file-url: https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos colcon-defaults: | { "build": { @@ -85,7 +85,7 @@ jobs: run: | rosbag2_path=$(colcon list -p --packages-select rosbag2)/.. rosbag2_packages=$(colcon list -n --base-paths ${rosbag2_path}) - source /opt/ros/rolling/setup.sh && colcon test --mixin linters-skip --packages-select ${rosbag2_packages} --packages-skip rosbag2_performance_benchmarking --event-handlers console_cohesion+ --return-code-on-test-failure --ctest-args "-L xfail" --pytest-args "-m xfail" + source /opt/ros/jazzy/setup.sh && colcon test --mixin linters-skip --packages-select ${rosbag2_packages} --packages-skip rosbag2_performance_benchmarking --event-handlers console_cohesion+ --return-code-on-test-failure --ctest-args "-L xfail" --pytest-args "-m xfail" working-directory: ${{ steps.action-ros-ci.outputs.ros-workspace-directory-name }} shell: bash - name: Is regeneration of Python stubs required?