From 9f90814a3f7d0ad5260c3307a94b7443154204e5 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 16:46:22 -0500 Subject: [PATCH 01/29] ignore: Test installing clang-tidy and build for compile_commands.json in CI pipeline --- .clang-tidy | 6 ++++++ .github/workflows/lint-and-format.yml | 7 +++++++ build.sh | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 .clang-tidy diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..ec994417 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,6 @@ +--- +Checks: "clang-analyzer-*, bugprone-*" +WarningsAsErrors: '' +HeaderFilterRegex: '' +FormatStyle: none +--- diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 7856e038..49686edd 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -28,3 +28,10 @@ jobs: -path ./src/third-party -prune -o \ \( -name "*.h" -o -name "*.hpp" -o -name "*.cpp" \) -print \ | xargs clang-format --dry-run --Werror + + # C++ Linting + - name: Install Clang-tidy + run: sudo apt-get install -y clang-tidy + - name: Build for compile_commands.json files + run: + ./build.sh diff --git a/build.sh b/build.sh index 6a62a8bc..b154f9bb 100755 --- a/build.sh +++ b/build.sh @@ -10,4 +10,4 @@ find ./src -path ./src/third-party -prune -o \ rosdep install --from-paths src -i -r -y -colcon build --symlink-install --continue-on-error --cmake-args=-DCMAKE_BUILD_TYPE=Release --parallel-workers $(nproc) \ No newline at end of file +colcon build --symlink-install --continue-on-error --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=On --parallel-workers $(nproc) From 3406f56ea339d4fde1d6e821353136f011ef2585 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:02:59 -0500 Subject: [PATCH 02/29] ignore: Install ROS2 and colcon in C++ linting dependency job --- .github/workflows/lint-and-format.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 49686edd..1671fdce 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -30,8 +30,8 @@ jobs: | xargs clang-format --dry-run --Werror # C++ Linting - - name: Install Clang-tidy - run: sudo apt-get install -y clang-tidy + - name: Install dependencies for C++ linting + run: sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools - name: Build for compile_commands.json files run: ./build.sh From be7499fa8c4dafe2e370e89cc492457c47a2766d Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:15:10 -0500 Subject: [PATCH 03/29] ignore: Add ROS2 repository before installing dependencies --- .github/workflows/lint-and-format.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 1671fdce..856a73df 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -31,7 +31,15 @@ jobs: # C++ Linting - name: Install dependencies for C++ linting - run: sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools + run: | + sudo apt install software-properties-common + sudo add-apt-repository universe + sudo apt update && sudo apt install curl -y + export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') + curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" + sudo dpkg -i /tmp/ros2-apt-source.deb + sudo apt update + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools - name: Build for compile_commands.json files run: ./build.sh From 6d7146aae79271ef25307fa9773828f161c63c75 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:19:08 -0500 Subject: [PATCH 04/29] ignore: Install colcon --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 856a73df..b96a77fc 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools + sudo apt-get install -y clang-tidy python3-rosdep python3-colcon-common-extensions - name: Build for compile_commands.json files run: ./build.sh From a1cb3d696e376ca19235d85d0c11cec2423296c7 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:29:18 -0500 Subject: [PATCH 05/29] ignore: Try installing ROS humble base --- .github/workflows/build-docker.yml | 79 --------------------------- .github/workflows/lint-and-format.yml | 3 +- 2 files changed, 2 insertions(+), 80 deletions(-) delete mode 100644 .github/workflows/build-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml deleted file mode 100644 index 828b5c04..00000000 --- a/.github/workflows/build-docker.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: Docker CI/CD Multi-Arch - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - gstreamer-build: - runs-on: [self-hosted] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker login - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build & push gstreamer - id: gstreamer_build - run: | - echo "Building gstreamer image" - if [ "${{ github.event_name }}" = "push" ]; then - ./gstreamer-config/docker_build.sh --push - else - ./gstreamer-config/docker_build.sh --test - fi - - build-rover-amd64: - runs-on: [self-hosted] - needs: gstreamer-build - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Docker login - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build & optionally push (amd64) - id: build_rover_amd64 - run: | - echo "Building for AMD64" - if [ "${{ github.event_name }}" = "push" ]; then - ./docker_build.sh --arch amd64 --push - else - ./docker_build.sh --arch amd64 - fi - - build-rover-arm64: - runs-on: [self-hosted] - needs: gstreamer-build - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Docker login - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build & optionally push (arm64) - id: build_rover_arm64 - run: | - echo "Building for ARM64" - if [ "${{ github.event_name }}" = "push" ]; then - ./docker_build.sh --arch arm64 --push - else - ./docker_build.sh --arch arm64 - fi diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index b96a77fc..a77b5312 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,8 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep python3-colcon-common-extensions + sudo apt upgrade + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base - name: Build for compile_commands.json files run: ./build.sh From b907c56f0bb4727cce45db9f0ef633b3fa0ec562 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:33:54 -0500 Subject: [PATCH 06/29] ignore: Changed host from ubuntu-latest to ubuntu-22.04 --- .github/workflows/lint-and-format.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index a77b5312..718fd69a 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -7,7 +7,7 @@ on: jobs: lint-and-format: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -39,7 +39,6 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt upgrade sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base - name: Build for compile_commands.json files run: From 6eeb069d757df8f1551c8a713200f1fc568590c8 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:35:57 -0500 Subject: [PATCH 07/29] ignore: Initialize rosdeps --- .github/workflows/lint-and-format.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 718fd69a..e6ae3bf5 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -40,6 +40,10 @@ jobs: sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base + - name: Initialize rosdeps + run: | + sudo rosdep init + rosdep update - name: Build for compile_commands.json files run: ./build.sh From 9f430e19b652fcc5e14aa2a5e85d91299a04c628 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:40:19 -0500 Subject: [PATCH 08/29] ignore: Install colcon manually --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index e6ae3bf5..4cf8eaa9 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base python3-colcon-common-extensions - name: Initialize rosdeps run: | sudo rosdep init From 903f9ef4a75600d9ece5b434649447b3155cb159 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Thu, 8 Jan 2026 17:46:38 -0500 Subject: [PATCH 09/29] ignore: Source ROS2 setup file --- .github/workflows/lint-and-format.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 4cf8eaa9..d825be8f 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,8 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base python3-colcon-common-extensions + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions + source /opt/ros/humble/setup.bash - name: Initialize rosdeps run: | sudo rosdep init From 7a58b01f20a049498898d169a3489275ce72cb71 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sat, 10 Jan 2026 12:59:34 -0500 Subject: [PATCH 10/29] ignore: Install ament cmake manually --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index d825be8f..9ffb46d0 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake source /opt/ros/humble/setup.bash - name: Initialize rosdeps run: | From d824a3ea88fa8ceddbec8894ca4f57fd516cfa74 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sat, 10 Jan 2026 13:12:49 -0500 Subject: [PATCH 11/29] ignore: rosdep install --- .github/workflows/lint-and-format.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 9ffb46d0..d7f02391 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -41,10 +41,15 @@ jobs: sudo apt update sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake source /opt/ros/humble/setup.bash + - name: Test + run: | + pwd + ls - name: Initialize rosdeps run: | sudo rosdep init rosdep update + rosdep install -y --from-paths -s src - name: Build for compile_commands.json files run: ./build.sh From 446c300216cc059c017370f637ba67da45977cde Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sat, 10 Jan 2026 13:21:47 -0500 Subject: [PATCH 12/29] ignore: source setup.bash after using rosdep --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index d7f02391..b5a31923 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -40,7 +40,6 @@ jobs: sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake - source /opt/ros/humble/setup.bash - name: Test run: | pwd @@ -52,4 +51,5 @@ jobs: rosdep install -y --from-paths -s src - name: Build for compile_commands.json files run: + source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." ./build.sh From 84d5079d05d39fff18ecba19cee11f128c808e04 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sat, 10 Jan 2026 13:24:09 -0500 Subject: [PATCH 13/29] ignore: Remove rosdep install line --- .github/workflows/lint-and-format.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index b5a31923..58a4d3a0 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -48,7 +48,6 @@ jobs: run: | sudo rosdep init rosdep update - rosdep install -y --from-paths -s src - name: Build for compile_commands.json files run: source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." From 03d88b5142fb085f340935aa589846fae9ee6ff0 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sat, 10 Jan 2026 13:28:20 -0500 Subject: [PATCH 14/29] ignore: Fix build.sh not running --- .github/workflows/lint-and-format.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 58a4d3a0..8f500686 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -48,7 +48,8 @@ jobs: run: | sudo rosdep init rosdep update + rosdep install --from-paths src --ignore-src -r -y - name: Build for compile_commands.json files - run: + run: | source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." ./build.sh From e312faa188f497fb5a16d1403124061f3aa18b14 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 15:42:15 -0500 Subject: [PATCH 15/29] ignore: Only configure CMake --- .github/workflows/lint-and-format.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 8f500686..858b0103 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -48,8 +48,10 @@ jobs: run: | sudo rosdep init rosdep update - rosdep install --from-paths src --ignore-src -r -y + rosdep install --from-paths src -i -r -y - name: Build for compile_commands.json files run: | source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." - ./build.sh + colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure --parallel-workers $(nproc) + + From 3a65ddd86855fb324a85112da29db46f633c50e6 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 15:54:19 -0500 Subject: [PATCH 16/29] ignore: Install desktop version of ROS2 instead of base --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 858b0103..519c18b5 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-base ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake - name: Test run: | pwd From 067841cc08b669900a128235ca6c7e71f0ff68de Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 15:58:31 -0500 Subject: [PATCH 17/29] ignore: Install correct ROS2 package and upgrade CMake --- .github/workflows/lint-and-format.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 519c18b5..b94f2b52 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -39,7 +39,8 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-ros-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake + sudo apt upgrade cmake -y + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake - name: Test run: | pwd From 901d52fbaaba39450376aa68c3a61e297757c682 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 16:18:07 -0500 Subject: [PATCH 18/29] ignore: Use CPRT Docker image to configure --- .github/workflows/lint-and-format.yml | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index b94f2b52..66548fec 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -8,6 +8,8 @@ on: jobs: lint-and-format: runs-on: ubuntu-22.04 + container: + image: cprtsoftware/rover:amd64 steps: - name: Checkout code uses: actions/checkout@v3 @@ -30,29 +32,8 @@ jobs: | xargs clang-format --dry-run --Werror # C++ Linting - - name: Install dependencies for C++ linting - run: | - sudo apt install software-properties-common - sudo add-apt-repository universe - sudo apt update && sudo apt install curl -y - export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') - curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" - sudo dpkg -i /tmp/ros2-apt-source.deb - sudo apt update - sudo apt upgrade cmake -y - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake - - name: Test - run: | - pwd - ls - - name: Initialize rosdeps - run: | - sudo rosdep init - rosdep update - rosdep install --from-paths src -i -r -y - name: Build for compile_commands.json files run: | - source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure --parallel-workers $(nproc) From 0f9a05cd07a15b679145868d311bd441f448fdc6 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 16:51:13 -0500 Subject: [PATCH 19/29] ignore: Install zed --- .github/workflows/lint-and-format.yml | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 66548fec..4bceb005 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -8,8 +8,6 @@ on: jobs: lint-and-format: runs-on: ubuntu-22.04 - container: - image: cprtsoftware/rover:amd64 steps: - name: Checkout code uses: actions/checkout@v3 @@ -32,8 +30,30 @@ jobs: | xargs clang-format --dry-run --Werror # C++ Linting + - name: Install zed + run: | + cd /tmp + curl -L https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/4.2/ZED_SDK_Tegra_L4T36.4_v4.2.2.zstd.run -o zed_sdk_installer.run + chmod +x zed_sdk_installer.run + ./zed_sdk_installer.run -- silent + - name: Install dependencies for C++ linting + run: | + sudo apt install software-properties-common + sudo add-apt-repository universe + sudo apt update && sudo apt install curl -y + export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') + curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" + sudo dpkg -i /tmp/ros2-apt-source.deb + sudo apt update + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake + - name: Initialize rosdeps + run: | + sudo rosdep init + rosdep update + rosdep install --from-paths src -i -r -y - name: Build for compile_commands.json files run: | - colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure --parallel-workers $(nproc) + source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." + colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure From 2b5851d487174a6ff25423c2de2c64e56f370bd1 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 17:09:57 -0500 Subject: [PATCH 20/29] ignore: Source setup.bash before rosdep --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 4bceb005..5da30b74 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -48,12 +48,12 @@ jobs: sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake - name: Initialize rosdeps run: | + source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." sudo rosdep init rosdep update rosdep install --from-paths src -i -r -y - name: Build for compile_commands.json files run: | - source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure From 607943aee5154aa4d5ec8e09325aff75194d8537 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 17:25:22 -0500 Subject: [PATCH 21/29] ignore: Install rest of missing dependencies --- .github/workflows/lint-and-format.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 5da30b74..1d95e71e 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -30,6 +30,13 @@ jobs: | xargs clang-format --dry-run --Werror # C++ Linting + - name: Install kindr + run: | + git clone https://github.com/ANYbotics/kindr.git + cd kindr && mkdir build && cd build + cmake .. -DUSE_CMAKE=true + make install + rm -rf /kindr - name: Install zed run: | cd /tmp @@ -45,7 +52,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev - name: Initialize rosdeps run: | source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." From 479521bf9e8d0536b466cd0a2f4b2cd9c88ab779 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 17:26:45 -0500 Subject: [PATCH 22/29] ignore: Install eigen3 --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 1d95e71e..5fb42f49 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -52,7 +52,7 @@ jobs: curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev libeigen3-dev - name: Initialize rosdeps run: | source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." From a37badc7c09f375aca1568a9557c9392c62af4c4 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 17:27:48 -0500 Subject: [PATCH 23/29] ignore: Install kindr and zed after smaller dependencies --- .github/workflows/lint-and-format.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 5fb42f49..3cc89a32 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -30,6 +30,16 @@ jobs: | xargs clang-format --dry-run --Werror # C++ Linting + - name: Install dependencies for C++ linting + run: | + sudo apt install software-properties-common + sudo add-apt-repository universe + sudo apt update && sudo apt install curl -y + export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') + curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" + sudo dpkg -i /tmp/ros2-apt-source.deb + sudo apt update + sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev libeigen3-dev - name: Install kindr run: | git clone https://github.com/ANYbotics/kindr.git @@ -43,16 +53,6 @@ jobs: curl -L https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/4.2/ZED_SDK_Tegra_L4T36.4_v4.2.2.zstd.run -o zed_sdk_installer.run chmod +x zed_sdk_installer.run ./zed_sdk_installer.run -- silent - - name: Install dependencies for C++ linting - run: | - sudo apt install software-properties-common - sudo add-apt-repository universe - sudo apt update && sudo apt install curl -y - export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') - curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" - sudo dpkg -i /tmp/ros2-apt-source.deb - sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev libeigen3-dev - name: Initialize rosdeps run: | source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." From 02d49e33312fc867043cc80d07906be9ec9d6d87 Mon Sep 17 00:00:00 2001 From: AriaWong Date: Sun, 11 Jan 2026 17:31:36 -0500 Subject: [PATCH 24/29] ignore: sudo make install in kindr install --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 3cc89a32..74e15606 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -45,7 +45,7 @@ jobs: git clone https://github.com/ANYbotics/kindr.git cd kindr && mkdir build && cd build cmake .. -DUSE_CMAKE=true - make install + sudo make install rm -rf /kindr - name: Install zed run: | From 5c7287e1134ea353214cd9e41ef51f8c5990f377 Mon Sep 17 00:00:00 2001 From: aria-wong Date: Sun, 18 Jan 2026 22:33:36 +0000 Subject: [PATCH 25/29] feat: Script for running clang-tidy on each project --- .clang-tidy | 5 ++-- .github/workflows/lint-and-format.yml | 38 +-------------------------- linting-cpp.sh | 24 +++++++++++++++++ 3 files changed, 27 insertions(+), 40 deletions(-) create mode 100755 linting-cpp.sh diff --git a/.clang-tidy b/.clang-tidy index ec994417..85419d1e 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,5 @@ --- -Checks: "clang-analyzer-*, bugprone-*" +Checks: "clang-analyzer-*" WarningsAsErrors: '' HeaderFilterRegex: '' -FormatStyle: none ---- +FormatStyle: none \ No newline at end of file diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index 74e15606..a0faec7f 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -27,40 +27,4 @@ jobs: find ./src \ -path ./src/third-party -prune -o \ \( -name "*.h" -o -name "*.hpp" -o -name "*.cpp" \) -print \ - | xargs clang-format --dry-run --Werror - - # C++ Linting - - name: Install dependencies for C++ linting - run: | - sudo apt install software-properties-common - sudo add-apt-repository universe - sudo apt update && sudo apt install curl -y - export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') - curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" - sudo dpkg -i /tmp/ros2-apt-source.deb - sudo apt update - sudo apt-get install -y clang-tidy python3-rosdep ros-humble-desktop ros-dev-tools python3-colcon-common-extensions ros-humble-ament-cmake libglib2.0-dev libunwind-dev libeigen3-dev - - name: Install kindr - run: | - git clone https://github.com/ANYbotics/kindr.git - cd kindr && mkdir build && cd build - cmake .. -DUSE_CMAKE=true - sudo make install - rm -rf /kindr - - name: Install zed - run: | - cd /tmp - curl -L https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/4.2/ZED_SDK_Tegra_L4T36.4_v4.2.2.zstd.run -o zed_sdk_installer.run - chmod +x zed_sdk_installer.run - ./zed_sdk_installer.run -- silent - - name: Initialize rosdeps - run: | - source /opt/ros/humble/setup.bash && echo "setup.bash has been sourced." - sudo rosdep init - rosdep update - rosdep install --from-paths src -i -r -y - - name: Build for compile_commands.json files - run: | - colcon build --continue-on-error --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --cmake-force-configure - - + | xargs clang-format --dry-run --Werror \ No newline at end of file diff --git a/linting-cpp.sh b/linting-cpp.sh new file mode 100755 index 00000000..8e0ed0ae --- /dev/null +++ b/linting-cpp.sh @@ -0,0 +1,24 @@ +#!/bin/bash +rootPath=$(pwd) + +# Run build script to generate compile_commands.json for each CMake project +#./build.sh + +# Find all the CMake projects that have compile_commands.json +# After, put into a Bash list using mapfile, so it can be iterated +# Use -o -path to exclude directories +mapfile -t projectPaths < <(find $rootPath \ + \( -path "*/src/third-party" -o -path "*/src/Nav/kindr_ros" -o -path "*/build" \) \ + -prune -o -name "CMakeLists.txt" -printf '%h\n') + +# Perform clang-tidy on each project +for projectPath in "${projectPaths[@]}"; do + echo "Running clang-tidy on: $projectPath" + + currDirectoryName="${projectPath##*/}" + + cd $projectPath + + # Use the build directory as the build path since that directory has the compile_commands.json file + run-clang-tidy -p $rootPath/build/$currDirectoryName +done \ No newline at end of file From a6a5153f2737b8b1424a178858e52789fc03f4d6 Mon Sep 17 00:00:00 2001 From: aria-wong Date: Tue, 20 Jan 2026 03:00:39 +0000 Subject: [PATCH 26/29] feat: Modified linting script to exclude third-party projects --- .clang-tidy | 6 +++--- linting-cpp.sh | 27 +++++++++++++++++---------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 85419d1e..1d2fb755 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,5 @@ --- -Checks: "clang-analyzer-*" +Checks: "clang-analyzer-core-*" WarningsAsErrors: '' -HeaderFilterRegex: '' -FormatStyle: none \ No newline at end of file +FormatStyle: none +HeaderFilterRegex: '^(?!/opt/ros/|/usr/).*' \ No newline at end of file diff --git a/linting-cpp.sh b/linting-cpp.sh index 8e0ed0ae..73be0c2a 100755 --- a/linting-cpp.sh +++ b/linting-cpp.sh @@ -2,23 +2,30 @@ rootPath=$(pwd) # Run build script to generate compile_commands.json for each CMake project -#./build.sh +./build.sh # Find all the CMake projects that have compile_commands.json # After, put into a Bash list using mapfile, so it can be iterated # Use -o -path to exclude directories mapfile -t projectPaths < <(find $rootPath \ - \( -path "*/src/third-party" -o -path "*/src/Nav/kindr_ros" -o -path "*/build" \) \ + \( -path "*/src/third-party" -o -path "*/src/Nav/kindr_ros" -o -path "*/build" -o -path "*/src/Nav/elevation_mapping" -o -path "*/src/interfaces" \) \ -prune -o -name "CMakeLists.txt" -printf '%h\n') -# Perform clang-tidy on each project -for projectPath in "${projectPaths[@]}"; do - echo "Running clang-tidy on: $projectPath" +# List of excluded projects +# TODO: Read these projects from a file +excludedProjects=("third-party" "elevation_mapping" "interfaces" "kindr_msgs" "kindr_ros" "ouster_ros" "ouster_sensor_msgs" "ublox" "ublox_gps" "ublox_msgs" "ublox_serialization" "zed_components" "zed_ros2" "zed_wrapper") +excludedProjectsArgs=() - currDirectoryName="${projectPath##*/}" +# Format the excluded projects into an argument list that is read by find +for excludedProject in "${excludedProjects[@]}"; do + excludedProjectsArgs+=("-not" "-path" "*/$excludedProject/*") +done - cd $projectPath +# Concatenate all compile_commands.json files into one file +find build -name compile_commands.json -exec jq '.[]' {} + \ + | jq -s '.' > build/compile_commands.json - # Use the build directory as the build path since that directory has the compile_commands.json file - run-clang-tidy -p $rootPath/build/$currDirectoryName -done \ No newline at end of file +# Run clang-tidy +# The find command filters the excluded projects out +# All .cpp files in the included projects are linted (header files are also implicitly linted when included in a source file) +run-clang-tidy -p build $(find src -type f -name "*.cpp" "${excludedProjectsArgs[@]}") -extra-arg-before=-std=c++17 -j $(nproc) \ No newline at end of file From e11dbf18eefd9df2748b40266a2cd0a075354b72 Mon Sep 17 00:00:00 2001 From: aria-wong Date: Wed, 21 Jan 2026 13:39:32 +0000 Subject: [PATCH 27/29] minor: Cleaned up linting-cpp.sh --- build.sh | 2 +- linting-cpp.sh | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/build.sh b/build.sh index b154f9bb..bf4368b6 100755 --- a/build.sh +++ b/build.sh @@ -10,4 +10,4 @@ find ./src -path ./src/third-party -prune -o \ rosdep install --from-paths src -i -r -y -colcon build --symlink-install --continue-on-error --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=On --parallel-workers $(nproc) +colcon build --symlink-install --continue-on-error --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --parallel-workers $(nproc) diff --git a/linting-cpp.sh b/linting-cpp.sh index 73be0c2a..d8440d65 100755 --- a/linting-cpp.sh +++ b/linting-cpp.sh @@ -4,13 +4,6 @@ rootPath=$(pwd) # Run build script to generate compile_commands.json for each CMake project ./build.sh -# Find all the CMake projects that have compile_commands.json -# After, put into a Bash list using mapfile, so it can be iterated -# Use -o -path to exclude directories -mapfile -t projectPaths < <(find $rootPath \ - \( -path "*/src/third-party" -o -path "*/src/Nav/kindr_ros" -o -path "*/build" -o -path "*/src/Nav/elevation_mapping" -o -path "*/src/interfaces" \) \ - -prune -o -name "CMakeLists.txt" -printf '%h\n') - # List of excluded projects # TODO: Read these projects from a file excludedProjects=("third-party" "elevation_mapping" "interfaces" "kindr_msgs" "kindr_ros" "ouster_ros" "ouster_sensor_msgs" "ublox" "ublox_gps" "ublox_msgs" "ublox_serialization" "zed_components" "zed_ros2" "zed_wrapper") From 8846405ac4b17c8a11c1db230002de8c12e6b35f Mon Sep 17 00:00:00 2001 From: aria-wong Date: Fri, 23 Jan 2026 17:58:05 +0000 Subject: [PATCH 28/29] minor: Add clang-tidy and jq dependencies, and minor changes to linting-cpp.sh --- .github/workflows/build-docker.yml | 79 ++++++++++++++++++++++++++++++ Dockerfile | 2 +- linting-cpp.sh | 17 +++++-- 3 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 00000000..828b5c04 --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,79 @@ +name: Docker CI/CD Multi-Arch + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + gstreamer-build: + runs-on: [self-hosted] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build & push gstreamer + id: gstreamer_build + run: | + echo "Building gstreamer image" + if [ "${{ github.event_name }}" = "push" ]; then + ./gstreamer-config/docker_build.sh --push + else + ./gstreamer-config/docker_build.sh --test + fi + + build-rover-amd64: + runs-on: [self-hosted] + needs: gstreamer-build + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Docker login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build & optionally push (amd64) + id: build_rover_amd64 + run: | + echo "Building for AMD64" + if [ "${{ github.event_name }}" = "push" ]; then + ./docker_build.sh --arch amd64 --push + else + ./docker_build.sh --arch amd64 + fi + + build-rover-arm64: + runs-on: [self-hosted] + needs: gstreamer-build + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Docker login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build & optionally push (arm64) + id: build_rover_arm64 + run: | + echo "Building for ARM64" + if [ "${{ github.event_name }}" = "push" ]; then + ./docker_build.sh --arch arm64 --push + else + ./docker_build.sh --arch arm64 + fi diff --git a/Dockerfile b/Dockerfile index 45746057..a4580612 100644 --- a/Dockerfile +++ b/Dockerfile @@ -158,7 +158,7 @@ FROM runtime AS dev RUN apt-get update && apt-get install -y --no-install-recommends \ git x11-apps ros-humble-desktop ros-dev-tools black pylint \ ros-humble-ament-cmake python3-colcon-common-extensions \ - python3-colcon-ros clang-format cuda-compiler-12-6 \ + python3-colcon-ros clang-format clang-tidy jq cuda-compiler-12-6 \ cuda-cudart-dev-12-6 cuda-driver-dev-12-6 libpng-dev ccache \ libc6-dev libssl-dev cuda-toolkit-12-6 libnvinfer10 \ libnvinfer-plugin10 libnvonnxparsers10 \ diff --git a/linting-cpp.sh b/linting-cpp.sh index d8440d65..d36e008d 100755 --- a/linting-cpp.sh +++ b/linting-cpp.sh @@ -1,12 +1,23 @@ #!/bin/bash + +# To use this script: +# 1. Add the names of the projects you want to exclude to excludedProjects +# 2. Run the script: ./linting-cpp.sh +# Note: This script must be in the root directory because of build.sh + +# Additional checks can be added to the .clang-tidy file + +# List of excluded projects +excludedProjects=("third-party" "elevation_mapping" "interfaces" "kindr_msgs" + "kindr_ros" "ouster_ros" "ouster_sensor_msgs" "ublox" + "ublox_gps" "ublox_msgs" "ublox_serialization" + "zed_components" "zed_ros2" "zed_wrapper") + rootPath=$(pwd) # Run build script to generate compile_commands.json for each CMake project ./build.sh -# List of excluded projects -# TODO: Read these projects from a file -excludedProjects=("third-party" "elevation_mapping" "interfaces" "kindr_msgs" "kindr_ros" "ouster_ros" "ouster_sensor_msgs" "ublox" "ublox_gps" "ublox_msgs" "ublox_serialization" "zed_components" "zed_ros2" "zed_wrapper") excludedProjectsArgs=() # Format the excluded projects into an argument list that is read by find From 2e2550c38dc55f2d74004482634c08fbac3240d9 Mon Sep 17 00:00:00 2001 From: aria-wong Date: Sat, 24 Jan 2026 00:06:38 +0000 Subject: [PATCH 29/29] minor: Change lint-and-format image back to ubuntu-latest --- .github/workflows/lint-and-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-format.yml b/.github/workflows/lint-and-format.yml index a0faec7f..bd802d29 100644 --- a/.github/workflows/lint-and-format.yml +++ b/.github/workflows/lint-and-format.yml @@ -7,7 +7,7 @@ on: jobs: lint-and-format: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3