Skip to content

Commit

Permalink
Support Iron and transition Rolling to Noble (#10)
Browse files Browse the repository at this point in the history
* Include iron in distirbution matrix

Signed-off-by: Yadunund <[email protected]>

* Cleanup

Signed-off-by: Yadunund <[email protected]>

* Use ccache for builds

Signed-off-by: Yadunund <[email protected]>

* rolling on noble

Signed-off-by: Yadunund <[email protected]>

* Reusable asan invokes reusable build with asan mixin

Signed-off-by: Yadunund <[email protected]>

* Add noble - jazzy combination

Signed-off-by: Luca Della Vedova <[email protected]>

* TEST, change image to desktop

Signed-off-by: Luca Della Vedova <[email protected]>

* TEST: Use ros core image instead

Signed-off-by: Luca Della Vedova <[email protected]>

* Remove Jazzy action

Signed-off-by: Luca Della Vedova <[email protected]>

* TEST, remove lld from asan build

Signed-off-by: Luca Della Vedova <[email protected]>

* Remove clang and blacklist

Signed-off-by: Luca Della Vedova <[email protected]>

* Avoid rmf_fleet_adapter_python in asan build

Signed-off-by: Luca Della Vedova <[email protected]>

* Readd lld

Signed-off-by: Luca Della Vedova <[email protected]>

* Restore clang, use testing branch for action-ros

Signed-off-by: Luca Della Vedova <[email protected]>

* Back to desktop-full image after rolling sync

Signed-off-by: Luca Della Vedova <[email protected]>

* Try using cyclonedds

Signed-off-by: Luca Della Vedova <[email protected]>

* setup-ros released, add comments for dds vendor

Signed-off-by: Luca Della Vedova <[email protected]>

* Remove extra flags from asan and tsan actions

Signed-off-by: Luca Della Vedova <[email protected]>

---------

Signed-off-by: Yadunund <[email protected]>
Signed-off-by: Luca Della Vedova <[email protected]>
Co-authored-by: Luca Della Vedova <[email protected]>
  • Loading branch information
Yadunund and luca-della-vedova authored May 29, 2024
1 parent 74e19b2 commit 6343040
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 89 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/asan.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: asan
on:
pull_request:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:

jobs:
build_and_test_asan:
name: test_ci_asan
uses: ./.github/workflows/reusable_asan.yaml
with:
# NOTE: Avoid adding comments in the packages lines, this can break some of the called scripts in github actions
# NOTE: Build upto rmf_fleet_adapter and rmf_visualization to cover all core open-rmf packages.
# # rmf_fleet_adapter_python causes spurious asan failures because of leaks in the Python side
packages: |
rmf_fleet_adapter
rmf_visualization
7 changes: 4 additions & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ on:

jobs:
build_and_test:
name: rmf_traffic_editor
name: test_ci
uses: ./.github/workflows/reusable_build.yaml
with:
# NOTE: Avoid adding comments in the packages lines, this can break some of the called scripts in github actions
# NOTE: Using rmf_utils just for workflow testing porposes
# NOTE: Build upto rmf_fleet_adapter_python and rmf_visualization to cover all core open-rmf packages.
packages: |
rmf_utils
rmf_fleet_adapter_python
rmf_visualization
80 changes: 11 additions & 69 deletions .github/workflows/reusable_asan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,75 +11,17 @@ on:
required: false
type: string
default: |
[{"ros_distribution": "foxy",
"ubuntu_distribution": "focal"}]
defaults:
run:
shell: bash
concurrency:
group: ${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
[{"ros_distribution": "humble",
"ubuntu_distribution": "jammy"},
{"ros_distribution": "iron",
"ubuntu_distribution": "jammy"},
{"ros_distribution": "rolling",
"ubuntu_distribution": "noble"}]
jobs:
asan:
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(inputs.dist-matrix) }}
name: asan
runs-on: ubuntu-20.04
container:
image: osrf/ros:${{ matrix.ros_distribution }}-desktop-${{ matrix.ubuntu_distribution }}
steps:
- name: install_clang_and_tools
run: sudo apt update && sudo apt install -y clang clang-tools lld wget python3-pip python3-colcon-coveragepy-result python3-colcon-lcov-result lcov
# TODO: fix for cryptography>2.8 failing in galactic https://github.com/open-rmf/rmf/pull/202#pullrequestreview-1100045417
- name: fix cryptography==2.8 # https://github.com/open-rmf/rmf/pull/202#pullrequestreview-1100045417
run: pip3 install cryptography==2.8
if: ${{ matrix.ros_distribution == 'galactic' || matrix.ros_distribution == 'foxy' }}
# TODO: remove this when uncrustify 0.72 is fixed https://github.com/uncrustify/uncrustify/issues/3191
- name: hack for uncrustify 0.72 problems
run: wget http://mirrors.kernel.org/ubuntu/pool/universe/u/uncrustify/uncrustify_0.69.0+dfsg1-1build1_amd64.deb && dpkg -i uncrustify_0.69.0+dfsg1-1build1_amd64.deb && apt install -f -y
if: ${{ matrix.ubuntu_distribution == 'jammy'}}
# TODO: Remove this step when the incompatibility between libunwind14 and libundind dissapears https://github.com/open-rmf/rmf_traffic_editor/issues/439
- name: Horrible hack for libceres
run: |
apt-get remove -y --purge libc++-dev || true
apt-get remove -y --purge libc++abi-dev || true
apt-get remove -y --purge libunwind-14-dev || true
apt-get remove -y --purge libunwind-14-dev || true
apt-get remove -y --purge libunwind-dev || true
apt -y autoremove
if: ${{ matrix.ubuntu_distribution == 'jammy'}}
- name: create_blacklist
run: |
mkdir -p ${{ github.workspace }}/
touch ${{ github.workspace }}/blacklist.txt
echo "fun:*Eigen*" > ${{ github.workspace }}/blacklist.txt
- name: asan_build_and_test
uses: ros-tooling/[email protected]
env:
LANG: en_US.UTF-8
CC: clang -fsanitize-blacklist=${{ github.workspace }}/blacklist.txt
CXX: clang++ -fsanitize-blacklist=${{ github.workspace }}/blacklist.txt
QT_QPA_PLATFORM: offscreen
with:
target-ros2-distro: ${{ matrix.ros_distribution }}
# build all packages listed in the meta package
package-name: ${{ inputs.packages }}
vcs-repo-file-url: |
https://raw.githubusercontent.com/open-rmf/rmf/${{ matrix.ros_distribution }}/rmf.repos
colcon-defaults: |
{
"build": {
"mixin": ["asan-gcc", "lld"],
"cmake-args": ["-DCMAKE_BUILD_TYPE=Debug"],
"executor": "sequential"
}
}
colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
- name: upload_test_stream
uses: actions/upload-artifact@v2
with:
name: colcon-asan-logs
path: ${{ steps.build_and_test.outputs.ros-workspace-directory-name }}/log
if: always()
uses: ./.github/workflows/reusable_build.yaml
with:
dist-matrix: ${{inputs.dist-matrix}}
packages: ${{inputs.packages}}
mixin: asan
33 changes: 16 additions & 17 deletions .github/workflows/reusable_build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ on:
default: |
[{"ros_distribution": "humble",
"ubuntu_distribution": "jammy"},
{"ros_distribution": "iron",
"ubuntu_distribution": "jammy"},
{"ros_distribution": "rolling",
"ubuntu_distribution": "jammy"}]
"ubuntu_distribution": "noble"}]
defaults:
run:
shell: bash
Expand All @@ -31,52 +33,49 @@ jobs:
fail-fast: false
matrix:
include: ${{ fromJson(inputs.dist-matrix) }}

name: Build and test
runs-on: ubuntu-latest
container:
# TODO: check if "desktop" is really needed for the builds or tests
image: osrf/ros:${{ matrix.ros_distribution }}-desktop-${{ matrix.ubuntu_distribution }}
steps:
- name: install_clang_and_tools
run: sudo apt update && sudo apt install -y clang clang-tools lld wget python3-pip python3-colcon-coveragepy-result python3-colcon-lcov-result lcov
# TODO: Remove this step when the incompatibility between libunwind14 and libundind dissapears https://github.com/open-rmf/rmf_traffic_editor/issues/439
- name: Horrible hack for libceres
run: |
apt-get remove -y --purge libc++-dev || true
apt-get remove -y --purge libc++abi-dev || true
apt-get remove -y --purge libunwind-14-dev || true
apt-get remove -y --purge libunwind-14-dev || true
apt-get remove -y --purge libunwind-dev || true
apt -y autoremove
if: ${{ matrix.ubuntu_distribution == 'jammy'}}
- name: create_blacklist
run: |
mkdir -p ${{ github.workspace }}/
touch ${{ github.workspace }}/blacklist.txt
if [[ ${{ inputs.mixin }} == "asan" ]]; then
echo "fun:*Eigen*" > ${{ github.workspace }}/blacklist.txt
fi
- name: Setup ROS
uses: ros-tooling/[email protected]
- name: install_tools
run: sudo apt update && sudo apt install -y ccache clang clang-tools lld wget python3-pip python3-colcon-coveragepy-result python3-colcon-lcov-result lcov ros-${{ matrix.ros_distribution }}-rmw-cyclonedds-cpp
- name: set mixins
id: set_mixins
run: |
case ${{ inputs.mixin }} in
asan)
echo 'colcon_defaults={"build":{"mixin":["asan-gcc","lld"],"cmake-args":["-DCMAKE_BUILD_TYPE=Debug"],"executor":"sequential"}}' >> $GITHUB_OUTPUT
echo 'colcon_defaults={"build":{"mixin":["asan-gcc", "lld"]}}' >> $GITHUB_OUTPUT
;;
tsan)
echo 'colcon_defaults={"build":{"mixin":["tsan"],"cmake-args":["-DCMAKE_BUILD_TYPE=Debug"]}}' >> $GITHUB_OUTPUT
echo 'colcon_defaults={"build":{"mixin":["tsan", "lld"]}}' >> $GITHUB_OUTPUT
;;
*)
echo 'colcon_defaults={"build": {"mixin": ["coverage-gcc", "lld" ]}}' >> $GITHUB_OUTPUT
echo 'colcon_defaults={"build": {"mixin": ["ccache", "coverage-gcc", "lld"]}}' >> $GITHUB_OUTPUT
;;
esac
- uses: actions/cache@v3
with:
path: ~/.cache/ccache
key: ccache
- name: build_and_test
uses: ros-tooling/[email protected]
env:
LANG: en_US.UTF-8
CC: clang -fsanitize-blacklist=${{ github.workspace }}/blacklist.txt
CXX: clang++ -fsanitize-blacklist=${{ github.workspace }}/blacklist.txt
# Fastdds causes spurious failures in asan action, default to cyclonedds
RMW_IMPLEMENTATION: rmw_cyclonedds_cpp
QT_QPA_PLATFORM: offscreen
# We have some new_delete_type_mismatch errors that looks like to come from rclcpp
ASAN_OPTIONS: detect_leaks=0:new_delete_type_mismatch=0
Expand Down

0 comments on commit 6343040

Please sign in to comment.