@@ -70,16 +70,38 @@ jobs:
7070 strategy :
7171 fail-fast : false
7272 matrix :
73+ cxx_compiler :
74+ - g++-12
75+ - g++-14
76+ - clang-14
77+ - clang-16
78+ - clang-18
7379 ros_distro : ${{ fromJson(needs.get_ros_distros.outputs.series) }}
7480 include :
75- ${{ fromJson(needs.get_ros_distros.outputs.matrix) }}
81+ - ${{ fromJson(needs.get_ros_distros.outputs.matrix) }}
82+ - cxx_compiler : g++-12
83+ cc_compiler : gcc-12
84+ - cxx_compiler : g++-14
85+ cc_compiler : gcc-14
86+ - cxx_compiler : clang-14
87+ cc_compiler : clang-14
88+ - cxx_compiler : clang-16
89+ cc_compiler : clang-16
90+ - cxx_compiler : clang-18
91+ cc_compiler : clang-18
92+ exclude :
93+ - { ros_distro: humble, cxx_compiler: g++-14 }
94+ - { ros_distro: humble, cxx_compiler: clang-16 }
95+ - { ros_distro: humble, cxx_compiler: clang-18 }
96+
7697 container :
7798 image : rostooling/setup-ros-docker:${{ matrix.docker_image }}
7899 steps :
79100 - name : Install dependencies
80101 run : |
81102 sudo apt-get update
82103 sudo apt-get -y install policykit-1 libgtk2.0-common screen uml-utilities libc6-dev libicu-dev gcc python3 python3-pip
104+ sudo apt-get -y install ${{ matrix.cc_compiler }} ${{ matrix.cxx_compiler }}
83105 mkdir renode_portable
84106 wget https://builds.renode.io/renode-latest.linux-portable.tar.gz
85107 tar xf renode-latest.linux-portable.tar.gz -C renode_portable --strip-components=1
@@ -96,15 +118,15 @@ jobs:
96118 package-name : usb_cam
97119 target-ros2-distro : ${{ matrix.ros_distro }}
98120 vcs-repo-file-url : " "
99- colcon-defaults : |
100- {
101- "build": {
102- "mixin": ["coverage-gcc"]
103- }
104- }
105- # If possible, pin the repository in the workflow to a specific commit to avoid
106- # changes in colcon-mixin-repository from breaking your tests.
107- colcon-mixin-repository : https://raw.githubusercontent.com/colcon/colcon-mixin-repository/1ddb69bedfd1f04c2f000e95452f7c24a4d6176b /index.yaml
121+ extra-cmake-args : -DCMAKE_C_COMPILER=${{ matrix.cc_compiler }} -DCMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }} # -DLLVM_ENABLE_RUNTIMES=compiler-rt
122+ # TODO(flynneva): re-enable once code coverage works with differet compilers
123+ # colcon-defaults: |
124+ # {
125+ # "build": {
126+ # "mixin": ["coverage-gcc"]
127+ # }
128+ # }
129+ # colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/b8436aa16c0bdbc01081b12caa253cbf16e0fb82 /index.yaml
108130 # Compile again, this time enabling integration tests
109131 - name : Build integration tests
110132 shell : bash
@@ -118,13 +140,14 @@ jobs:
118140 renode_portable/renode --disable-gui --version
119141 - uses : actions/upload-artifact@v4
120142 with :
121- name : colcon-logs-${{ matrix.ros_distro }}
143+ name : colcon-logs-${{ matrix.ros_distro }}-${{ matrix.cxx_compiler }}
122144 path : ${{ steps.build_and_test_step.outputs.ros-workspace-directory-name }}/log
123145 if : always()
124146 continue-on-error : true
125- - uses : actions/upload-artifact@v4
126- with :
127- name : lcov-logs-${{ matrix.ros_distro }}
128- path : ${{ steps.build_and_test_step.outputs.ros-workspace-directory-name }}/lcov
129- if : always()
130- continue-on-error : true
147+ # TODO(flynneva): re-enable once code coverage works with differet compilers
148+ # - uses: actions/upload-artifact@v4
149+ # with:
150+ # name: lcov-logs-${{ matrix.ros_distro }}-${{ matrix.cxx_compiler }}
151+ # path: ${{ steps.build_and_test_step.outputs.ros-workspace-directory-name }}/lcov
152+ # if: always()
153+ # continue-on-error: true
0 commit comments