diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83b5fe4..a3c1b7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,9 @@ name: CI micro_ros_utilities on: + push: + branches: + - rolling pull_request: branches: - '**' @@ -20,15 +23,19 @@ jobs: ros_distribution: rolling container: image: ${{ matrix.docker_image }} + steps: - - uses: actions/checkout@v3 - - uses: ros-tooling/setup-ros@0.7.13 + - uses: actions/checkout@v7 + + - uses: ros-tooling/setup-ros@0.7.19 with: required-ros-distributions: ${{ matrix.ros_distribution }} - - uses : ros-tooling/action-ros-ci@0.4.3 + + - uses : ros-tooling/action-ros-ci@0.4.8 with: package-name: "micro_ros_utilities" target-ros2-distro: ${{ matrix.ros_distribution }} + coverage-result: false colcon-defaults: | { "build": { @@ -36,6 +43,33 @@ jobs: } } colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: codecov/codecov-action@v1 + + - name: Coverage results + working-directory: ros_ws + run: | + . /opt/ros/${{ matrix.ros_distribution }}/setup.sh + + colcon lcov-result --initial --lcov-args="--ignore-errors=mismatch" + colcon lcov-result --packages-select micro_ros_utilities --lcov-args="--ignore-errors=mismatch" + test -s lcov/total_coverage.info + + # Headers may have no instrumented code, leaving their pattern unused. + lcov --branch-coverage --ignore-errors unused --extract lcov/total_coverage.info \ + '*/micro_ros_utilities/src/*' \ + '*/micro_ros_utilities/include/*' \ + --output-file lcov/micro_ros_utilities_coverage.info + + test -s lcov/micro_ros_utilities_coverage.info + # --ignore-errors unused means lcov stays quiet if 'src/*' also stops + # matching, so assert both library sources actually survived the extract. + test "$(grep -c '^SF:' lcov/micro_ros_utilities_coverage.info)" -ge 2 + + - run: apt-get update && apt-get install -y gnupg # Needed for codecov action + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 with: - file: ros_ws/lcov/total_coverage.info + files: ros_ws/lcov/micro_ros_utilities_coverage.info + disable_search: true + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 8da5668..3605e2b 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -18,30 +18,26 @@ jobs: include: - docker_image: ubuntu:24.04 ros_distribution: rolling - - docker_image: ubuntu:jammy - ros_distribution: iron - - docker_image: ubuntu:jammy - ros_distribution: humble + - docker_image: ubuntu:26.04 + ros_distribution: lyrical + - docker_image: ubuntu:24.04 + ros_distribution: kilted - docker_image: ubuntu:24.04 ros_distribution: jazzy + - docker_image: ubuntu:jammy + ros_distribution: humble container: image: ${{ matrix.docker_image }} + steps: - - uses: actions/checkout@v3 - - uses: ros-tooling/setup-ros@0.7.13 + - uses: actions/checkout@v7 + + - uses: ros-tooling/setup-ros@0.7.19 with: required-ros-distributions: ${{ matrix.ros_distribution }} - - uses : ros-tooling/action-ros-ci@0.4.3 + + - uses : ros-tooling/action-ros-ci@0.4.8 with: package-name: "micro_ros_utilities" target-ros2-distro: ${{ matrix.ros_distribution }} - colcon-defaults: | - { - "build": { - "mixin": [ "coverage-gcc" ] - } - } - colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: codecov/codecov-action@v1 - with: - file: ros_ws/lcov/total_coverage.info + coverage-result: false