From aebe9d7c4f02e82726577a2f627deacb3c5b8923 Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 12:34:57 +0200 Subject: [PATCH 1/6] add reusable workflow for checking formatting via pre-commit --- .github/workflows/linters_via_pre_commit.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/linters_via_pre_commit.yaml diff --git a/.github/workflows/linters_via_pre_commit.yaml b/.github/workflows/linters_via_pre_commit.yaml new file mode 100644 index 0000000..eae5a67 --- /dev/null +++ b/.github/workflows/linters_via_pre_commit.yaml @@ -0,0 +1,19 @@ +name: Linters via pre commit + +on: + workflow_call: + +jobs: + linters_via_pre_commit: + name: Linters via pre commit + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.10.6 + - name: Install system hooks + run: sudo apt install -qq ament-cmake-uncrustify + - uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files --hook-stage manual From f5320662686fae2cc178b09ab83485490da2d285 Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 15:49:55 +0200 Subject: [PATCH 2/6] run linters in ubuntu 24.04 --- .github/workflows/linters_via_pre_commit.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linters_via_pre_commit.yaml b/.github/workflows/linters_via_pre_commit.yaml index eae5a67..37c28c0 100644 --- a/.github/workflows/linters_via_pre_commit.yaml +++ b/.github/workflows/linters_via_pre_commit.yaml @@ -6,14 +6,14 @@ on: jobs: linters_via_pre_commit: name: Linters via pre commit - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.10.6 - name: Install system hooks - run: sudo apt install -qq ament-cmake-uncrustify + run: sudo apt install -qq ros-jazzy-ament-uncrustify - uses: pre-commit/action@v3.0.1 with: extra_args: --all-files --hook-stage manual From 1d80936d8a77805ee2e237211c0d69d824f6a068 Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 16:24:30 +0200 Subject: [PATCH 3/6] add ros pkg sources --- .github/workflows/linters_via_pre_commit.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linters_via_pre_commit.yaml b/.github/workflows/linters_via_pre_commit.yaml index 37c28c0..5ac3878 100644 --- a/.github/workflows/linters_via_pre_commit.yaml +++ b/.github/workflows/linters_via_pre_commit.yaml @@ -13,7 +13,11 @@ jobs: with: python-version: 3.10.6 - name: Install system hooks - run: sudo apt install -qq ros-jazzy-ament-uncrustify + run: sudo add-apt-repository universe &&\ + sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg &&\ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null &&\ + sudo apt update &&\ + sudo apt install -qq ros-jazzy-ament-uncrustify\ - uses: pre-commit/action@v3.0.1 with: extra_args: --all-files --hook-stage manual From 48291af6c5bf9ba4532b0ab5a6a3fd94abb294a5 Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 16:32:05 +0200 Subject: [PATCH 4/6] run linters in our ubuntu jazzy container --- .github/workflows/linters_via_pre_commit.yaml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/linters_via_pre_commit.yaml b/.github/workflows/linters_via_pre_commit.yaml index 5ac3878..bfd573b 100644 --- a/.github/workflows/linters_via_pre_commit.yaml +++ b/.github/workflows/linters_via_pre_commit.yaml @@ -6,18 +6,16 @@ on: jobs: linters_via_pre_commit: name: Linters via pre commit - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest + container: + image: ghcr.io/naturerobots/ros2_jazzy_build:latest + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + options: + --user root steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.10.6 - - name: Install system hooks - run: sudo add-apt-repository universe &&\ - sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg &&\ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null &&\ - sudo apt update &&\ - sudo apt install -qq ros-jazzy-ament-uncrustify\ - uses: pre-commit/action@v3.0.1 with: extra_args: --all-files --hook-stage manual From 6c07d2ea781a804e369df5c5b58e41c8f76a575f Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 16:41:34 +0200 Subject: [PATCH 5/6] add ros distro as workflow inputs --- .github/workflows/humble_ci.yaml | 13 +++++++++---- .github/workflows/linters_via_pre_commit.yaml | 7 ++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/humble_ci.yaml b/.github/workflows/humble_ci.yaml index 6ed358a..c3ed943 100644 --- a/.github/workflows/humble_ci.yaml +++ b/.github/workflows/humble_ci.yaml @@ -1,8 +1,13 @@ -name: Humble CI - Build and Test +name: ROS Build and Test on: workflow_call: +inputs: + ros_distro: + required: true + type: string + jobs: build_and_test: runs-on: ubuntu-latest @@ -10,7 +15,7 @@ jobs: contents: read packages: read container: - image: ghcr.io/naturerobots/ros2_humble_build:latest + image: ghcr.io/naturerobots/ros2_${{ inputs.ros_distro }}_build:latest credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} @@ -31,8 +36,8 @@ jobs: - name: Build and test uses: ros-tooling/action-ros-ci@0.3.13 with: - package-name: ${{env.PACKAGES_FOR_CI}} - target-ros2-distro: humble + package-name: ${{ env.PACKAGES_FOR_CI }} + target-ros2-distro: ${{ inputs.ros_distro }} vcs-repo-file-url: $GITHUB_WORKSPACE/source_dependencies.yaml rosdep-check: true import-token: ${{ secrets.ORGANIZATION_PRIVATE_PAT }} diff --git a/.github/workflows/linters_via_pre_commit.yaml b/.github/workflows/linters_via_pre_commit.yaml index bfd573b..540c1f3 100644 --- a/.github/workflows/linters_via_pre_commit.yaml +++ b/.github/workflows/linters_via_pre_commit.yaml @@ -3,12 +3,17 @@ name: Linters via pre commit on: workflow_call: +inputs: + ros_distro: + required: true + type: string + jobs: linters_via_pre_commit: name: Linters via pre commit runs-on: ubuntu-latest container: - image: ghcr.io/naturerobots/ros2_jazzy_build:latest + image: "ghcr.io/naturerobots/ros2_${{ inputs.ros_distro }}_build:latest" credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} From fe331fe8ca8515be397f4238d343af0f196a0e6e Mon Sep 17 00:00:00 2001 From: Matthias Holoch Date: Tue, 20 May 2025 16:41:58 +0200 Subject: [PATCH 6/6] rename workflow file to reflect its generic nature --- .github/workflows/{humble_ci.yaml => ros_ci.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{humble_ci.yaml => ros_ci.yaml} (100%) diff --git a/.github/workflows/humble_ci.yaml b/.github/workflows/ros_ci.yaml similarity index 100% rename from .github/workflows/humble_ci.yaml rename to .github/workflows/ros_ci.yaml