-
Notifications
You must be signed in to change notification settings - Fork 135
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use latest stable Rust CI + Fix Test Errors (#420)
* Use latest stable Rust CI Signed-off-by: Michael X. Grey <[email protected]> * Fix quotation in doc Signed-off-by: Michael X. Grey <[email protected]> * Fix serde feature for vendored messages Signed-off-by: Michael X. Grey <[email protected]> * Fix formatting of lists in docs Signed-off-by: Michael X. Grey <[email protected]> * Update minimum supported Rust version based on the currently used language features Signed-off-by: Michael X. Grey <[email protected]> * Conform to clippy style guide Signed-off-by: Michael X. Grey <[email protected]> * Add rust toolchain as a matrix dimension Signed-off-by: Michael X. Grey <[email protected]> * Bump declaration of minimum supported rust version Signed-off-by: Michael X. Grey <[email protected]> * Limit the scheduled runs to once a week Signed-off-by: Michael X. Grey <[email protected]> * Define separate stable and minimal workflows because matrix does not work with reusable actions Signed-off-by: Michael X. Grey <[email protected]> * Reduce minimum version to 1.75 to target Noble Signed-off-by: Michael X. Grey <[email protected]> --------- Signed-off-by: Michael X. Grey <[email protected]> Signed-off-by: Michael X. Grey <[email protected]>
- Loading branch information
Showing
8 changed files
with
178 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
name: Rust Stable | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
schedule: | ||
# Run the CI at 02:22 UTC every Tuesday | ||
# We pick an arbitrary time outside of most of the world's work hours | ||
# to minimize the likelihood of running alongside a heavy workload. | ||
- cron: '22 2 * * 2' | ||
|
||
env: | ||
CARGO_TERM_COLOR: always | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
ros_distribution: | ||
- humble | ||
- iron | ||
- rolling | ||
include: | ||
# Humble Hawksbill (May 2022 - May 2027) | ||
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-humble-ros-base-latest | ||
ros_distribution: humble | ||
ros_version: 2 | ||
# Iron Irwini (May 2023 - November 2024) | ||
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-iron-ros-base-latest | ||
ros_distribution: iron | ||
ros_version: 2 | ||
# Rolling Ridley (June 2020 - Present) | ||
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-rolling-ros-base-latest | ||
ros_distribution: rolling | ||
ros_version: 2 | ||
runs-on: ubuntu-latest | ||
continue-on-error: ${{ matrix.ros_distribution == 'rolling' }} | ||
container: | ||
image: ${{ matrix.docker_image }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Search packages in this repository | ||
id: list_packages | ||
run: | | ||
echo ::set-output name=package_list::$(colcon list --names-only) | ||
- name: Setup ROS environment | ||
uses: ros-tooling/[email protected] | ||
with: | ||
required-ros-distributions: ${{ matrix.ros_distribution }} | ||
use-ros2-testing: ${{ matrix.ros_distribution == 'rolling' }} | ||
|
||
- name: Setup Rust | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
components: clippy, rustfmt | ||
|
||
- name: Install colcon-cargo and colcon-ros-cargo | ||
run: | | ||
sudo pip3 install git+https://github.com/colcon/colcon-cargo.git | ||
sudo pip3 install git+https://github.com/colcon/colcon-ros-cargo.git | ||
- name: Check formatting of Rust packages | ||
run: | | ||
for path in $(colcon list | awk '$3 == "(ament_cargo)" { print $2 }'); do | ||
cd $path | ||
rustup toolchain install nightly | ||
cargo +nightly fmt -- --check | ||
cd - | ||
done | ||
- name: Install cargo-ament-build | ||
run: | | ||
cargo install --debug cargo-ament-build | ||
- name: Build and test | ||
id: build | ||
uses: ros-tooling/[email protected] | ||
with: | ||
package-name: ${{ steps.list_packages.outputs.package_list }} | ||
target-ros2-distro: ${{ matrix.ros_distribution }} | ||
vcs-repo-file-url: ros2_rust_${{ matrix.ros_distribution }}.repos | ||
|
||
- name: Run clippy on Rust packages | ||
run: | | ||
cd ${{ steps.build.outputs.ros-workspace-directory-name }} | ||
. /opt/ros/${{ matrix.ros_distribution }}/setup.sh | ||
for path in $(colcon list | awk '$3 == "(ament_cargo)" { print $2 }'); do | ||
cd $path | ||
echo "Running clippy in $path" | ||
# Run clippy for all features except generate_docs (needed for docs.rs) | ||
if [ "$(basename $path)" = "rclrs" ]; then | ||
cargo clippy --all-targets -F default,dyn_msg -- -D warnings | ||
else | ||
cargo clippy --all-targets --all-features -- -D warnings | ||
fi | ||
cd - | ||
done | ||
- name: Run cargo test on Rust packages | ||
run: | | ||
cd ${{ steps.build.outputs.ros-workspace-directory-name }} | ||
. install/setup.sh | ||
for path in $(colcon list | awk '$3 == "(ament_cargo)" && $1 != "examples_rclrs_minimal_pub_sub" && $1 != "examples_rclrs_minimal_client_service" && $1 != "rust_pubsub" { print $2 }'); do | ||
cd $path | ||
echo "Running cargo test in $path" | ||
# Run cargo test for all features except generate_docs (needed for docs.rs) | ||
if [ "$(basename $path)" = "rclrs" ]; then | ||
cargo test -F default,dyn_msg | ||
elif [ "$(basename $path)" = "rosidl_runtime_rs" ]; then | ||
cargo test -F default | ||
else | ||
cargo test --all-features | ||
fi | ||
cd - | ||
done | ||
- name: Rustdoc check | ||
run: | | ||
cd ${{ steps.build.outputs.ros-workspace-directory-name }} | ||
. /opt/ros/${{ matrix.ros_distribution }}/setup.sh | ||
for path in $(colcon list | awk '$3 == "(ament_cargo)" && $1 != "examples_rclrs_minimal_pub_sub" && $1 != "examples_rclrs_minimal_client_service" && $1 != "rust_pubsub" { print $2 }'); do | ||
cd $path | ||
echo "Running rustdoc check in $path" | ||
cargo rustdoc -- -D warnings | ||
cd - | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,7 @@ authors = ["Esteve Fernandez <[email protected]>", "Nikolai Morin <nnmmgit@gmail | |
edition = "2021" | ||
license = "Apache-2.0" | ||
description = "A ROS 2 client library for developing robotics applications in Rust" | ||
rust-version = "1.63" | ||
rust-version = "1.75" | ||
|
||
[lib] | ||
path = "src/lib.rs" | ||
|
@@ -29,6 +29,10 @@ libloading = { version = "0.8", optional = true } | |
# Needed for the Message trait, among others | ||
rosidl_runtime_rs = "0.4" | ||
|
||
# Needed for serliazation and deserialization of vendored messages | ||
serde = { version = "1", optional = true, features = ["derive"] } | ||
serde-big-array = { version = "0.5.1", optional = true } | ||
|
||
[dev-dependencies] | ||
# Needed for e.g. writing yaml files in tests | ||
tempfile = "3.3.0" | ||
|
@@ -46,6 +50,7 @@ cfg-if = "1.0.0" | |
[features] | ||
default = [] | ||
dyn_msg = ["ament_rs", "libloading"] | ||
serde = ["dep:serde", "dep:serde-big-array", "rosidl_runtime_rs/serde"] | ||
# This feature is solely for the purpose of being able to generate documetation without a ROS installation | ||
# The only intended usage of this feature is for docs.rs builders to work, and is not intended to be used by end users | ||
generate_docs = ["rosidl_runtime_rs/generate_docs"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters