diff --git a/.ci.prepare_codecov b/.ci.prepare_codecov new file mode 100755 index 0000000..91119f5 --- /dev/null +++ b/.ci.prepare_codecov @@ -0,0 +1,21 @@ +#!/bin/bash +pushd $BASEDIR + +BLUE='\033[0;34m' +NOCOLOR='\033[0m' + +apt-get install -qq lcov + +echo -e "${BLUE}Capture coverage info${NOCOLOR}" +lcov --capture --directory target_ws --output-file coverage.info + +echo -e "${BLUE}Extract repository files${NOCOLOR}" +lcov --extract coverage.info "$BASEDIR/target_ws/src/$TARGET_REPO_NAME/*" --output-file coverage.info + +echo -e "${BLUE}Filter out test files${NOCOLOR}" +lcov --remove coverage.info '*/test/*' --output-file coverage.info + +echo -e "${BLUE}Output coverage data for debugging${NOCOLOR}" +lcov --list coverage.info + +popd diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 28fbd3b..3d92e0e 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -1,72 +1,105 @@ +# CI overview -ROS2 Distro | Branch | Build status | Documentation | Released packages -:---------: | :----: | :----------: | :-----------: | :---------------: -**Rolling** | [`rolling`](https://github.com/PickNikRobotics/picknik_controllers/tree/rolling) | [![Rolling Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-binary-build-main.yml?branch=main)
[![Rolling Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-binary-build-testing.yml?branch=main)
[![Rolling Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-semi-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-semi-binary-build-main.yml?branch=main)
[![Rolling Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-semi-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-semi-binary-build-testing.yml?branch=main)
[![Rolling Source Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-source-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/rolling-source-build.yml?branch=main) | [![Doxygen Doc Deployment](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml/badge.svg)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml)
[Generated Doc](https://PickNikRobotics.github.io/picknik_controllers_Documentation/rolling/html/index.html) | [picknik_controllers](https://index.ros.org/p/picknik_controllers/#rolling) +| Workflow | Trigger | Blocking | What it covers | +|---|---|---|---| +| [`build_and_test.yaml`](build_and_test.yaml) | PR to `main`, push to `main`, manual | see below | Build + test on every distro `main` is released to | +| [`ci-format.yml`](ci-format.yml) | PR, manual | yes | `pre-commit` across all files | +| [`ci-ros-lint.yml`](ci-ros-lint.yml) | PR to `main`, manual | yes | `ament_copyright`, `ament_lint_cmake`, `ament_cpplint` on **lyrical** | +| [`jazzy-abi-compatibility.yml`](jazzy-abi-compatibility.yml) | PR to `main` | yes | ABI diff vs. the base branch | +| [`kilted-abi-compatibility.yml`](kilted-abi-compatibility.yml) | PR to `main` | yes | ABI diff vs. the base branch | +| [`rolling-abi-compatibility.yml`](rolling-abi-compatibility.yml) | PR to `main` | no | ABI diff vs. the base branch | +| [`prerelease-check.yml`](prerelease-check.yml) | manual | n/a | `industrial_ci` `PRERELEASE: true` — buildfarm dry-run before tagging | -## Build status +## The three build tiers +`build_and_test.yaml` keeps the escalating-lookahead ladder from the original +stogl-robotics layout — each tier looks further into the future than the last — +but as one matrix instead of 20 files. -### Explanation of different build types +### Tier 1 — binary: released debs (`main` apt) -**NOTE**: There are three build stages checking current and future compatibility of the package. +*"Can a user build this today?"* **These are the only jobs that gate merges.** -[Detailed build status](.github/workflows/README.md) +| Job | Base OS | +|---|---| +| `jazzy-main` | noble | +| `kilted-main + ccov` | noble | +| **`lyrical-main`** | **resolute** | -1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that direct local build is possible. +`lyrical` is the Resolute gate. It is a released distro, so its `main` apt is +populated, and every dependency this repo has is available there — +`ros2_control` 6.8.0, `realtime_tools` 5.2.0. This is the job that would have +caught the break that got us un-released from rolling. - Uses repos file: `$NAME$-not-released..repos` +### Tier 2 — binary against `testing` apt -1. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source. - Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build. +*"What breaks at the next sync?"* `jazzy-testing`, `kilted-testing`, +`lyrical-testing`, `rolling-testing`. All non-blocking. - Uses repos file: `$NAME$.repos` +Rolling appears only at this tier, because Rolling's `main` apt has no Resolute +packages yet. -1. Source build - also core ROS packages are build from source. It shows potential issues in the mid future. +Non-blocking is deliberate: an upstream regression staged for release is +something we want to *see*, not something that should block an unrelated PR. +This repo has already been through one "7 PRs blocked on an ecosystem break" +episode. -ROS2 Distro | Branch | Build status | Documentation | Released packages -:---------: | :----: | :----------: | :-----------: | :---------------: -**Humble** | [`humble`](https://github.com/PickNikRobotics/picknik_controllers/tree/humble) | [![Humble Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-binary-build-main.yml?branch=main)
[![Humble Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-binary-build-testing.yml?branch=main)
[![Humble Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-semi-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-semi-binary-build-main.yml?branch=main)
[![Humble Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-semi-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-semi-binary-build-testing.yml?branch=main)
[![Humble Source Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-source-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/humble-source-build.yml?branch=main) | [![Doxygen Doc Deployment](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml/badge.svg)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml)
[Generated Doc](https://PickNikRobotics.github.io/picknik_controllers_Documentation/humble/html/index.html) | [picknik_controllers](https://index.ros.org/p/picknik_controllers/#humble) +### Tier 3 — semi-binary: immediate dependencies from source -## Build status +*"What breaks in the mid future?"* `rolling-testing + upstream-source`. +Non-blocking. +Core ROS still comes from debs, but our immediate dependencies — `ros2_control` +and `realtime_tools` — are built from their development branches, listed in +[`picknik_controllers.rolling.repos`](../../picknik_controllers.rolling.repos). +This fails weeks before a breaking upstream change reaches any apt repo. -### Explanation of different build types +**This tier previously reported green without testing anything.** Its `.repos` +file was an entirely commented-out placeholder, which made the semi-binary job +byte-identical to the binary job. Wiring it up is what makes the ladder real. +It is the tier that would have caught +`LoanedCommandInterface::get_value()` being removed, months before it surfaced +as a buildfarm release failure. -**NOTE**: There are three build stages checking current and future compatibility of the package. +Adding the same lookahead for another distro is one more matrix entry plus a +`picknik_controllers..repos`. -[Detailed build status](.github/workflows/README.md) +### What was dropped -1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that direct local build is possible. +The old **source-build** tier (core ROS itself from source, via +`ros-tooling/action-ros-ci`) is gone. It was permanently red regardless of +tier value: it fetched its `.repos` with the deprecated `?token=` URL syntax +and got an HTTP 404 on every run. Rebuilding all of core ROS to test two +controllers is also poor value — tier 3 already covers the dependencies that +can realistically break us. - Uses repos file: `$NAME$-not-released..repos` +## Coverage -1. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source. - Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build. +Runs on `kilted` (tier 1), not on rolling. Coverage attached to a non-blocking +job silently stops reporting whenever that job breaks, and rolling breakage is +precisely what this repo keeps hitting. - Uses repos file: `$NAME$.repos` +## Branches -1. Source build - also core ROS packages are build from source. It shows potential issues in the mid future. +`main` currently serves jazzy, kilted, lyrical and rolling. humble is served by +the [`humble`](https://github.com/PickNikRobotics/picknik_controllers/tree/humble) +branch, which carries its own copy of these workflows. -ROS2 Distro | Branch | Build status | Documentation | Released packages -:---------: | :----: | :----------: | :-----------: | :---------------: -**Iron** | [`iron`](https://github.com/PickNikRobotics/picknik_controllers/tree/iron) | [![Iron Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-binary-build-main.yml?branch=main)
[![Iron Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-binary-build-testing.yml?branch=main)
[![Iron Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-semi-binary-build-main.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-semi-binary-build-main.yml?branch=main)
[![Iron Semi-Binary Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-semi-binary-build-testing.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-semi-binary-build-testing.yml?branch=main)
[![Iron Source Build](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-source-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/iron-source-build.yml?branch=main) | [![Doxygen Doc Deployment](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml/badge.svg)](https://github.com/PickNikRobotics/picknik_controllers/actions/workflows/doxygen-deploy.yml)
[Generated Doc](https://PickNikRobotics.github.io/picknik_controllers_Documentation/iron/html/index.html) | [picknik_controllers](https://index.ros.org/p/picknik_controllers/#iron) +The intent is for `main` to serve **all** active distros using the source-level +compatibility guards described in +[moveit2#3751](https://github.com/moveit/moveit2/pull/3751). When that lands, +re-adding humble here is a single matrix entry — no new workflow files. -## Build status +## No `schedule:` triggers +Deliberate. GitHub auto-disables cron-triggered workflows after 60 days of repo +inactivity, and it disables the **whole** workflow, not just the cron trigger. +That is what silently took all 20 of this repo's previous build workflows offline +between 2026-03 and 2026-08 — every workflow with a `schedule:` was disabled, and +every workflow without one survived. -### Explanation of different build types - -**NOTE**: There are three build stages checking current and future compatibility of the package. - -[Detailed build status](.github/workflows/README.md) - -1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that direct local build is possible. - - Uses repos file: `$NAME$-not-released..repos` - -1. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source. - Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build. - - Uses repos file: `$NAME$.repos` - -1. Source build - also core ROS packages are build from source. It shows potential issues in the mid future. +This does cost nightly dependency-rot detection, which is what the cron was for. +The tiers above still catch the same breakages, just on PR and push rather than +on a timer. If a timer is wanted back, it should live somewhere that cannot +disable the PR gate with it — a separate repository-dispatch or a scheduled +workflow that only runs the non-blocking tiers. diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml new file mode 100644 index 0000000..8f7deb9 --- /dev/null +++ b/.github/workflows/build_and_test.yaml @@ -0,0 +1,176 @@ +# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git). +# For troubleshooting, see readme (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst) +# +# Replaces 20 per-distro workflow files and 2 reusable workflows with one matrix. +# +# Deliberately has NO `schedule:` trigger. GitHub auto-disables cron-triggered +# workflows after 60 days of repo inactivity, and it disables the whole workflow, +# not just the cron -- which is what silently took every build job in this repo +# offline between 2026-03 and 2026-08. +# +# The three-tier lookahead from the original stogl-robotics layout is preserved +# and, for the first time, actually functional. See .github/workflows/README.md. + +name: Build and Test + +on: + workflow_dispatch: + pull_request: + branches: + - main + push: + branches: + - main + +jobs: + industrial_ci: + strategy: + # Without this, one failing job cancels its siblings before they report, + # so a job broken by the environment discards results that were still good. + fail-fast: false + matrix: + env: + # --------------------------------------------------------------- + # Tier 1 -- binary: build against released debs in `main` apt. + # "Can a user build this today?" These are the jobs that gate merges. + # --------------------------------------------------------------- + # + # humble is NOT built here. `main` dropped humble support in 49a5270 + # after the ros2_control API break -- humble's hardware_interface has + # no `get_optional()`. humble is served by the `humble` branch and its + # own workflow. + # + # This is meant to be temporary. Once `main` carries source-level + # compatibility guards per moveit2#3751, humble comes back as one more + # entry in this list and the `humble` branch retires. The matrix is + # shaped so that is a one-line change, not a restructure. + - ROS_DISTRO: jazzy + ROS_REPO: main + - ROS_DISTRO: kilted + ROS_REPO: main + CCOV: true + # lyrical is Ubuntu Resolute AND released, so its `main` apt is + # populated -- ros2_control 6.8.0 and realtime_tools 5.2.0 are both + # there. Every dependency this repo has is available, so this is a + # BLOCKING Resolute gate. That is the job that would have caught the + # break which got us un-released from rolling. + - ROS_DISTRO: lyrical + ROS_REPO: main + OS_CODE_NAME: resolute + + # --------------------------------------------------------------- + # Tier 2 -- binary against `testing` apt: what breaks at the NEXT + # sync. Non-blocking on purpose: an upstream regression staged for + # release is something we want to see, not something that should + # block an unrelated PR. This repo has already been through a + # "7 PRs blocked on an ecosystem break" episode. + # --------------------------------------------------------------- + - ROS_DISTRO: jazzy + ROS_REPO: testing + NONBLOCKING: true + - ROS_DISTRO: kilted + ROS_REPO: testing + NONBLOCKING: true + - ROS_DISTRO: lyrical + ROS_REPO: testing + OS_CODE_NAME: resolute + NONBLOCKING: true + # Rolling's `main` apt has no Resolute packages yet, so rolling only + # exists at this tier. Pin OS_CODE_NAME rather than trusting + # industrial_ci's default, which has moved once already. + - ROS_DISTRO: rolling + ROS_REPO: testing + OS_CODE_NAME: resolute + NONBLOCKING: true + + # --------------------------------------------------------------- + # Tier 3 -- semi-binary: core ROS from debs, but our *immediate* + # dependencies (ros2_control, realtime_tools) built from their + # development branches. This is the mid-future signal: it fails weeks + # before a breaking upstream change reaches any apt repo. + # + # This is the tier that would have caught the removal of + # LoanedCommandInterface::get_value() ahead of time instead of at + # buildfarm-release time. + # --------------------------------------------------------------- + - ROS_DISTRO: rolling + ROS_REPO: testing + OS_CODE_NAME: resolute + UPSTREAM_WORKSPACE: picknik_controllers.rolling.repos + NONBLOCKING: true + + env: + AFTER_RUN_TARGET_TEST: ${{ matrix.env.CCOV && './.ci.prepare_codecov' || '' }} + TARGET_CMAKE_ARGS: > + -DCMAKE_BUILD_TYPE=${{ matrix.env.CCOV && 'Debug' || 'Release'}} + ${{ matrix.env.CCOV && '-DCMAKE_CXX_FLAGS="--coverage" --no-warn-unused-cli' || '' }} + # Only meaningful for the tier-3 job. `upstream_ws` is restored from cache + # with different ownership than the container user, so vcs trips git's + # dubious-ownership check. Written directly rather than via `git config` + # because git is not installed yet at AFTER_INIT on a bare OS image. + AFTER_INIT: printf '[safe]\n\tdirectory = *\n' >> ~/.gitconfig + # Refresh the cached upstream checkout. Drift is desirable here -- tracking + # the upstream development branches is the entire point of tier 3. + AFTER_SETUP_UPSTREAM_WORKSPACE: ${{ matrix.env.UPSTREAM_WORKSPACE && 'vcs pull $BASEDIR/upstream_ws/src' || '' }} + CCACHE_DIR: ${{ github.workspace }}/.ccache + BASEDIR: ${{ github.workspace }}/.work + CACHE_PREFIX: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}${{ matrix.env.UPSTREAM_WORKSPACE && '-upstream' || '' }}${{ matrix.env.CCOV && '-ccov' || '' }} + + name: "${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}${{ matrix.env.UPSTREAM_WORKSPACE && ' + upstream-source' || '' }}${{ matrix.env.CCOV && ' + ccov' || ''}}" + runs-on: ubuntu-latest + # Valid here because this is a step-based job. It is silently ignored on a + # job that calls a reusable workflow via `uses:` -- the trap that broke + # ros2_robotiq_gripper's workflow file until #129. + continue-on-error: ${{ matrix.env.NONBLOCKING || false }} + steps: + - uses: actions/checkout@v4 + - name: cache upstream_ws + if: ${{ matrix.env.UPSTREAM_WORKSPACE }} + uses: actions/cache@v4 + with: + save-always: true + path: ${{ env.BASEDIR }}/upstream_ws + key: upstream_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles(matrix.env.UPSTREAM_WORKSPACE) }}-${{ github.run_id }} + restore-keys: | + upstream_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles(matrix.env.UPSTREAM_WORKSPACE) }} + # The target directory cache doesn't include the source directory because + # that comes from the checkout. See "prepare target_ws for cache" below. + - name: cache target_ws + if: ${{ ! matrix.env.CCOV }} + uses: actions/cache@v4 + with: + save-always: true + path: ${{ env.BASEDIR }}/target_ws + key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} + restore-keys: | + target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} + - name: cache ccache + uses: actions/cache@v4 + with: + save-always: true + path: ${{ env.CCACHE_DIR }} + key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} + restore-keys: | + ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} + ccache-${{ env.CACHE_PREFIX }} + - name: industrial_ci + uses: ros-industrial/industrial_ci@master + env: ${{ matrix.env }} + - name: upload test artifacts (on failure) + uses: actions/upload-artifact@v4 + if: failure() + with: + name: test-results-${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}${{ matrix.env.UPSTREAM_WORKSPACE && '-upstream' || '' }} + path: ${{ env.BASEDIR }}/target_ws/**/test_results/**/*.xml + - name: upload codecov report + uses: codecov/codecov-action@v4 + if: ${{ matrix.env.CCOV }} + with: + files: ${{ env.BASEDIR }}/coverage.info + - name: prepare target_ws for cache + if: ${{ always() && ! matrix.env.CCOV }} + run: | + du -sh ${{ env.BASEDIR }}/target_ws + sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete + sudo rm -rf ${{ env.BASEDIR }}/target_ws/src + du -sh ${{ env.BASEDIR }}/target_ws diff --git a/.github/workflows/ci-coverage-build.yml b/.github/workflows/ci-coverage-build.yml deleted file mode 100644 index ec9bf50..0000000 --- a/.github/workflows/ci-coverage-build.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Coverage Build -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - -jobs: - coverage: - name: coverage build - runs-on: ubuntu-24.04 - # Non-blocking while Rolling completes its Noble → Resolute base-OS transition. - # - # Observed 2026-07 on Ubuntu 24.04 (noble) runners: rosdep can't resolve - # `realtime_tools` for noble, so `apt-get install` skips ros2_control's runtime - # deps; the subsequent `colcon build` then fails at - # `find_package(controller_interface REQUIRED)` in CMakeLists.txt. Upstream root - # cause is that Rolling has migrated to Resolute and its dep chain no longer - # resolves against noble apt. Not fixable at the workflow level here. - # - # Revisit when either (a) `ros-tooling/action-ros-ci` releases a version that - # switches its runner base to Resolute, or (b) we wrap this workflow in - # `industrial_ci` with `OS_CODE_NAME: resolute` (matching moveit2's approach). - continue-on-error: true - strategy: - fail-fast: false - env: - ROS_DISTRO: rolling - steps: - - uses: ros-tooling/setup-ros@v0.7 - with: - required-ros-distributions: ${{ env.ROS_DISTRO }} - - uses: actions/checkout@v7 - - uses: ros-tooling/action-ros-ci@v0.4 - with: - target-ros2-distro: ${{ env.ROS_DISTRO }} - import-token: ${{ secrets.GITHUB_TOKEN }} - # build all packages listed in the meta package - package-name: - picknik_reset_fault_controller - - vcs-repo-file-url: | - https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/picknik_controllers-not-released.${{ env.ROS_DISTRO }}.repos - colcon-defaults: | - { - "build": { - "mixin": ["coverage-gcc"] - } - } - colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: codecov/codecov-action@v7.0.0 - with: - file: ros_ws/lcov/total_coverage.info - flags: unittests - name: codecov-umbrella - - uses: actions/upload-artifact@v7 - with: - name: colcon-logs-coverage-rolling - path: ros_ws/log diff --git a/.github/workflows/ci-ros-lint.yml b/.github/workflows/ci-ros-lint.yml index 85c0f47..3aeab6b 100644 --- a/.github/workflows/ci-ros-lint.yml +++ b/.github/workflows/ci-ros-lint.yml @@ -1,41 +1,50 @@ name: ROS Lint + on: + workflow_dispatch: pull_request: + branches: + - main jobs: ament_lint: name: ament_${{ matrix.linter }} - runs-on: ubuntu-24.04 - strategy: - fail-fast: false - matrix: - linter: [copyright, lint_cmake] - steps: - - uses: actions/checkout@v7 - - uses: ros-tooling/setup-ros@v0.7 - - uses: ros-tooling/action-ros-lint@v0.1 - with: - distribution: rolling - linter: ${{ matrix.linter }} - package-name: - picknik_reset_fault_controller - - - ament_lint_100: - name: ament_${{ matrix.linter }} - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest + # Pinned to lyrical: it is the newest distro whose build job in + # build_and_test.yaml is BLOCKING, so the linters match the toolchain that + # actually gates merges. rolling is newer but non-blocking, and linting + # against a distro we do not gate on would put lint failures on a job nobody + # is obliged to fix. + # + # Runs in a container rather than on the runner because lyrical is Ubuntu + # Resolute and GitHub has no 26.04 runner yet. ros-tooling/setup-ros on a + # noble runner cannot install lyrical -- that exact mismatch is what broke + # the old coverage job, and this avoids repeating it. + container: ros:lyrical-ros-base strategy: fail-fast: false matrix: - linter: [cpplint] + include: + - linter: copyright + apt: ament-copyright + args: "" + - linter: lint_cmake + apt: ament-lint-cmake + args: "" + - linter: cpplint + apt: ament-cpplint + args: "--linelength=100 --filter=-whitespace/newline" steps: - - uses: actions/checkout@v7 - - uses: ros-tooling/setup-ros@v0.7 - - uses: ros-tooling/action-ros-lint@v0.1 - with: - distribution: rolling - linter: cpplint - arguments: "--linelength=100 --filter=-whitespace/newline" - package-name: - picknik_reset_fault_controller - picknik_controllers + - uses: actions/checkout@v4 + - name: install ament_${{ matrix.linter }} + run: | + apt-get update -qq + apt-get install -y -qq ros-lyrical-${{ matrix.apt }} + # Lints the repository root rather than a package list. The previous config + # named `picknik_controllers`, which is not a package in this repo, and + # never linted picknik_twist_controller at all. + - name: ament_${{ matrix.linter }} + shell: bash + run: | + source /opt/ros/lyrical/setup.bash + ament_${{ matrix.linter }} ${{ matrix.args }} . diff --git a/.github/workflows/humble-abi-compatibility.yml b/.github/workflows/humble-abi-compatibility.yml deleted file mode 100644 index 3c7244a..0000000 --- a/.github/workflows/humble-abi-compatibility.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Humble - ABI Compatibility Check -on: - workflow_dispatch: - branches: - - humble - pull_request: - branches: - - humble - -jobs: - abi_check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - - uses: ros-industrial/industrial_ci@master - env: - ROS_DISTRO: humble - ROS_REPO: main - ABICHECK_URL: github:${{ github.repository }}#${{ github.base_ref }} - NOT_TEST_BUILD: true diff --git a/.github/workflows/humble-binary-build-main.yml b/.github/workflows/humble-binary-build-main.yml deleted file mode 100644 index 793ddcd..0000000 --- a/.github/workflows/humble-binary-build-main.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Humble Binary Build - humble -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - humble - pull_request: - branches: - - humble - push: - branches: - - humble - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: humble - ros_repo: main - upstream_workspace: picknik_controllers-not-released.humble.repos - ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-binary-build-testing.yml b/.github/workflows/humble-binary-build-testing.yml deleted file mode 100644 index 17f1b70..0000000 --- a/.github/workflows/humble-binary-build-testing.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Humble Binary Build - testing -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - humble - pull_request: - branches: - - humble - push: - branches: - - humble - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: humble - ros_repo: testing - upstream_workspace: picknik_controllers-not-released.humble.repos - ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-semi-binary-build-main.yml b/.github/workflows/humble-semi-binary-build-main.yml deleted file mode 100644 index dd3f73f..0000000 --- a/.github/workflows/humble-semi-binary-build-main.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Humble Semi-Binary Build - humble -# description: 'Build & test that compiles the humble dependencies from source.' - -on: - workflow_dispatch: - branches: - - humble - pull_request: - branches: - - humble - push: - branches: - - humble - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: humble - ros_repo: main - upstream_workspace: picknik_controllers.humble.repos - ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-semi-binary-build-testing.yml b/.github/workflows/humble-semi-binary-build-testing.yml deleted file mode 100644 index 6346bb2..0000000 --- a/.github/workflows/humble-semi-binary-build-testing.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Humble Semi-Binary Build - testing -# description: 'Build & test that compiles the humble dependencies from source.' - -on: - workflow_dispatch: - branches: - - humble - pull_request: - branches: - - humble - push: - branches: - - humble - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: humble - ros_repo: testing - upstream_workspace: picknik_controllers.humble.repos - ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-source-build.yml b/.github/workflows/humble-source-build.yml deleted file mode 100644 index ff0fd62..0000000 --- a/.github/workflows/humble-source-build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Humble Source Build -on: - workflow_dispatch: - branches: - - humble - push: - branches: - - humble - schedule: - # Run every day to detect flakiness and broken dependencies - - cron: '03 3 * * *' - -jobs: - source: - uses: ./.github/workflows/reusable-ros-tooling-source-build.yml - with: - ros_distro: humble - ref: humble - ros2_repo_branch: humble diff --git a/.github/workflows/jazzy-abi-compatibility.yml b/.github/workflows/jazzy-abi-compatibility.yml index 9f05516..55280be 100644 --- a/.github/workflows/jazzy-abi-compatibility.yml +++ b/.github/workflows/jazzy-abi-compatibility.yml @@ -9,6 +9,7 @@ on: jobs: abi_check: + name: jazzy-abi runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/jazzy-binary-build-main.yml b/.github/workflows/jazzy-binary-build-main.yml deleted file mode 100644 index e7efd00..0000000 --- a/.github/workflows/jazzy-binary-build-main.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Jazzy Binary Build - main -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: jazzy - ros_repo: main - upstream_workspace: picknik_controllers-not-released.jazzy.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-binary-build-testing.yml b/.github/workflows/jazzy-binary-build-testing.yml deleted file mode 100644 index 72e6706..0000000 --- a/.github/workflows/jazzy-binary-build-testing.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Jazzy Binary Build - testing -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: jazzy - ros_repo: testing - upstream_workspace: picknik_controllers-not-released.jazzy.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-semi-binary-build-main.yml b/.github/workflows/jazzy-semi-binary-build-main.yml deleted file mode 100644 index 1f64272..0000000 --- a/.github/workflows/jazzy-semi-binary-build-main.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Jazzy Semi-Binary Build - main -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: jazzy - ros_repo: main - upstream_workspace: picknik_controllers.jazzy.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-semi-binary-build-testing.yml b/.github/workflows/jazzy-semi-binary-build-testing.yml deleted file mode 100644 index 018e753..0000000 --- a/.github/workflows/jazzy-semi-binary-build-testing.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Jazzy Semi-Binary Build - testing -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: jazzy - ros_repo: testing - upstream_workspace: picknik_controllers.jazzy.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-source-build.yml b/.github/workflows/jazzy-source-build.yml deleted file mode 100644 index d651912..0000000 --- a/.github/workflows/jazzy-source-build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Jazzy Source Build -on: - workflow_dispatch: - branches: - - main - push: - branches: - - main - schedule: - # Run every day to detect flakiness and broken dependencies - - cron: '03 3 * * *' - -jobs: - source: - uses: ./.github/workflows/reusable-ros-tooling-source-build.yml - with: - ros_distro: jazzy - ref: main - ros2_repo_branch: jazzy diff --git a/.github/workflows/kilted-abi-compatibility.yml b/.github/workflows/kilted-abi-compatibility.yml index 7107e13..1d1f496 100644 --- a/.github/workflows/kilted-abi-compatibility.yml +++ b/.github/workflows/kilted-abi-compatibility.yml @@ -9,6 +9,7 @@ on: jobs: abi_check: + name: kilted-abi runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/kilted-binary-build-main.yml b/.github/workflows/kilted-binary-build-main.yml deleted file mode 100644 index 2bb336e..0000000 --- a/.github/workflows/kilted-binary-build-main.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Kilted Binary Build - main -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: kilted - ros_repo: main - upstream_workspace: picknik_controllers-not-released.kilted.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/kilted-binary-build-testing.yml b/.github/workflows/kilted-binary-build-testing.yml deleted file mode 100644 index 84435a4..0000000 --- a/.github/workflows/kilted-binary-build-testing.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Kilted Binary Build - testing -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: kilted - ros_repo: testing - upstream_workspace: picknik_controllers-not-released.kilted.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/kilted-semi-binary-build-main.yml b/.github/workflows/kilted-semi-binary-build-main.yml deleted file mode 100644 index 044fbca..0000000 --- a/.github/workflows/kilted-semi-binary-build-main.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Kilted Semi-Binary Build - main -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: kilted - ros_repo: main - upstream_workspace: picknik_controllers.kilted.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/kilted-semi-binary-build-testing.yml b/.github/workflows/kilted-semi-binary-build-testing.yml deleted file mode 100644 index bf0c20f..0000000 --- a/.github/workflows/kilted-semi-binary-build-testing.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Kilted Semi-Binary Build - testing -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: kilted - ros_repo: testing - upstream_workspace: picknik_controllers.kilted.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/kilted-source-build.yml b/.github/workflows/kilted-source-build.yml deleted file mode 100644 index 3f019f2..0000000 --- a/.github/workflows/kilted-source-build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Kilted Source Build -on: - workflow_dispatch: - branches: - - main - push: - branches: - - main - schedule: - # Run every day to detect flakiness and broken dependencies - - cron: '03 3 * * *' - -jobs: - source: - uses: ./.github/workflows/reusable-ros-tooling-source-build.yml - with: - ros_distro: kilted - ref: main - ros2_repo_branch: kilted diff --git a/.github/workflows/reusable-industrial-ci-with-cache.yml b/.github/workflows/reusable-industrial-ci-with-cache.yml deleted file mode 100644 index af44c65..0000000 --- a/.github/workflows/reusable-industrial-ci-with-cache.yml +++ /dev/null @@ -1,96 +0,0 @@ -name: Reusable industrial_ci Workflow with Cache -# Reusable action to simplify dealing with ROS/ROS2 industrial_ci builds with cache -# author: Denis Štogl - -on: - workflow_call: - inputs: - ref_for_scheduled_build: - description: 'Reference on which the repo should be checkout for scheduled build. Usually is this name of a branch or a tag.' - default: '' - required: false - type: string - - upstream_workspace: - description: 'UPSTREAM_WORKSPACE variable for industrial_ci. Usually path to local .repos file.' - required: true - type: string - ros_distro: - description: 'ROS_DISTRO variable for industrial_ci' - required: true - type: string - ros_repo: - description: 'ROS_REPO to run for industrial_ci. Possible values: "main", "testing"' - default: 'main' - required: false - type: string - os_code_name: - description: 'OS_CODE_NAME variable for industrial_ci' - default: '' - required: false - type: string - before_install_upstream_dependencies: - description: 'BEFORE_INSTALL_UPSTREAM_DEPENDENCIES variable for industrial_ci' - default: '' - required: false - type: string - - ccache_dir: - description: 'Local path to store cache (from "github.workspace"). For standard industrial_ci configuration do not have to be changed' - default: '.ccache' - required: false - type: string - basedir: - description: 'Local path to workspace base directory to cache (from "github.workspace"). For standard industrial_ci configuration do not have to be changed' - default: '.work' - required: false - type: string - - -jobs: - reusable_industrial_ci_with_cache: - name: ${{ inputs.ros_distro }} ${{ inputs.ros_repo }} ${{ inputs.os_code_name }} - runs-on: ubuntu-latest - env: - CCACHE_DIR: ${{ github.workspace }}/${{ inputs.ccache_dir }} - BASEDIR: ${{ github.workspace }}/${{ inputs.basedir }} - CACHE_PREFIX: ${{ inputs.ros_distro }}-${{ inputs.upstream_workspace }}-${{ inputs.ros_repo }}-${{ github.job }} - steps: - - name: Checkout ${{ inputs.ref }} when build is not scheduled - if: ${{ github.event_name != 'schedule' }} - uses: actions/checkout@v7 - - name: Checkout ${{ inputs.ref }} on scheduled build - if: ${{ github.event_name == 'schedule' }} - uses: actions/checkout@v7 - with: - ref: ${{ inputs.ref_for_scheduled_build }} - - name: cache target_ws - if: ${{ ! matrix.env.CCOV }} - uses: pat-s/always-upload-cache@v3 - with: - path: ${{ env.BASEDIR }}/target_ws - key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} - restore-keys: | - target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} - - name: cache ccache - uses: pat-s/always-upload-cache@v3 - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} - restore-keys: | - ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} - ccache-${{ env.CACHE_PREFIX }} - - uses: 'ros-industrial/industrial_ci@master' - env: - UPSTREAM_WORKSPACE: ${{ inputs.upstream_workspace }} - ROS_DISTRO: ${{ inputs.ros_distro }} - ROS_REPO: ${{ inputs.ros_repo }} - OS_CODE_NAME: ${{ inputs.os_code_name }} - BEFORE_INSTALL_UPSTREAM_DEPENDENCIES: ${{ inputs.before_install_upstream_dependencies }} - - name: prepare target_ws for cache - if: ${{ always() && ! matrix.env.CCOV }} - run: | - du -sh ${{ env.BASEDIR }}/target_ws - sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete - sudo rm -rf ${{ env.BASEDIR }}/target_ws/src - du -sh ${{ env.BASEDIR }}/target_ws diff --git a/.github/workflows/reusable-ros-tooling-source-build.yml b/.github/workflows/reusable-ros-tooling-source-build.yml deleted file mode 100644 index 20c619b..0000000 --- a/.github/workflows/reusable-ros-tooling-source-build.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Reusable industrial_ci Workflow with Cache -# Reusable action to simplify dealing with ROS/ROS2 industrial_ci builds with cache -# author: Denis Štogl - -on: - workflow_call: - inputs: - ros_distro: - description: 'ROS2 distribution name' - required: true - type: string - ref: - description: 'Reference on which the repo should be checkout. Usually is this name of a branch or a tag.' - required: true - type: string - ros2_repo_branch: - description: 'Branch in the ros2/ros2 repository from which ".repos" should be used. Possible values: master (Rolling), humble, jazzy.' - default: 'master' - required: false - type: string - -jobs: - reusable_ros_tooling_source_build: - name: ${{ inputs.ros_distro }} ubuntu-24.04 - runs-on: ubuntu-24.04 - strategy: - fail-fast: false - steps: - - uses: ros-tooling/setup-ros@v0.7 - with: - required-ros-distributions: ${{ inputs.ros_distro }} - - uses: actions/checkout@v7 - with: - ref: ${{ inputs.ref }} - - uses: ros-tooling/action-ros-ci@v0.4 - with: - target-ros2-distro: ${{ inputs.ros_distro }} - # build all packages listed in the meta package - package-name: - picknik_reset_fault_controller - - vcs-repo-file-url: | - https://raw.githubusercontent.com/ros2/ros2/${{ inputs.ros2_repo_branch }}/ros2.repos - https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/picknik_controllers.${{ inputs.ros_distro }}.repos?token=${{ secrets.GITHUB_TOKEN }} - colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: actions/upload-artifact@v7 - with: - name: colcon-logs-ubuntu-24.04 - path: ros_ws/log diff --git a/.github/workflows/rolling-abi-compatibility.yml b/.github/workflows/rolling-abi-compatibility.yml index 6aca22e..e5e918e 100644 --- a/.github/workflows/rolling-abi-compatibility.yml +++ b/.github/workflows/rolling-abi-compatibility.yml @@ -9,6 +9,7 @@ on: jobs: abi_check: + name: rolling-abi runs-on: ubuntu-latest # Non-blocking while Rolling completes its Noble → Resolute base-OS transition. # Some Rolling-on-Resolute packages currently only exist in ros2-testing apt. diff --git a/.github/workflows/rolling-binary-build-main.yml b/.github/workflows/rolling-binary-build-main.yml deleted file mode 100644 index 9d29b60..0000000 --- a/.github/workflows/rolling-binary-build-main.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Rolling Binary Build - main -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: rolling - ros_repo: main - upstream_workspace: picknik_controllers-not-released.rolling.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-binary-build-testing.yml b/.github/workflows/rolling-binary-build-testing.yml deleted file mode 100644 index bf9ace9..0000000 --- a/.github/workflows/rolling-binary-build-testing.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Rolling Binary Build - testing -# author: Denis Štogl -# description: 'Build & test all dependencies from released (binary) packages.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '03 1 * * *' - -jobs: - binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: rolling - ros_repo: testing - upstream_workspace: picknik_controllers-not-released.rolling.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-semi-binary-build-main.yml b/.github/workflows/rolling-semi-binary-build-main.yml deleted file mode 100644 index 7eb34ae..0000000 --- a/.github/workflows/rolling-semi-binary-build-main.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Rolling Semi-Binary Build - main -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: rolling - ros_repo: main - upstream_workspace: picknik_controllers.rolling.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-semi-binary-build-testing.yml b/.github/workflows/rolling-semi-binary-build-testing.yml deleted file mode 100644 index e5754af..0000000 --- a/.github/workflows/rolling-semi-binary-build-testing.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Rolling Semi-Binary Build - testing -# description: 'Build & test that compiles the main dependencies from source.' - -on: - workflow_dispatch: - branches: - - main - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '33 1 * * *' - -jobs: - semi_binary: - uses: ./.github/workflows/reusable-industrial-ci-with-cache.yml - with: - ros_distro: rolling - ros_repo: testing - upstream_workspace: picknik_controllers.rolling.repos - ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-source-build.yml b/.github/workflows/rolling-source-build.yml deleted file mode 100644 index 6306dc6..0000000 --- a/.github/workflows/rolling-source-build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Rolling Source Build -on: - workflow_dispatch: - branches: - - main - push: - branches: - - main - schedule: - # Run every day to detect flakiness and broken dependencies - - cron: '03 3 * * *' - -jobs: - source: - uses: ./.github/workflows/reusable-ros-tooling-source-build.yml - with: - ros_distro: rolling - ref: main - ros2_repo_branch: rolling diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6f63de9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,13 @@ +Any contribution that you make to this repository will +be under the Apache 2 License, as dictated by that +[license](http://www.apache.org/licenses/LICENSE-2.0.html): + +~~~ +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. +~~~ diff --git a/picknik_controllers-not-released.humble.repos b/picknik_controllers-not-released.humble.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers-not-released.humble.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers-not-released.jazzy.repos b/picknik_controllers-not-released.jazzy.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers-not-released.jazzy.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers-not-released.kilted.repos b/picknik_controllers-not-released.kilted.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers-not-released.kilted.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers-not-released.rolling.repos b/picknik_controllers-not-released.rolling.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers-not-released.rolling.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers.humble.repos b/picknik_controllers.humble.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers.humble.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers.jazzy.repos b/picknik_controllers.jazzy.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers.jazzy.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers.kilted.repos b/picknik_controllers.kilted.repos deleted file mode 100644 index 1b3910e..0000000 --- a/picknik_controllers.kilted.repos +++ /dev/null @@ -1,6 +0,0 @@ -repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master diff --git a/picknik_controllers.rolling.repos b/picknik_controllers.rolling.repos index 1b3910e..ca35d4b 100644 --- a/picknik_controllers.rolling.repos +++ b/picknik_controllers.rolling.repos @@ -1,6 +1,19 @@ +# Immediate dependencies of picknik_reset_fault_controller and +# picknik_twist_controller, pulled from their development branches for the +# tier-3 "semi-binary" job in .github/workflows/build_and_test.yaml. +# +# Everything else these packages depend on (rclcpp, geometry_msgs, +# example_interfaces) is core ROS and comes from debs. +# +# This file was previously a commented-out placeholder, which made the +# semi-binary job byte-identical to the binary job -- the middle rung of the +# lookahead ladder reported green without testing anything. repositories: - ## EXAMPLE DEPENDENCY -# : -# type: git -# url: git@github.com:/.git -# version: master + ros2_control: + type: git + url: https://github.com/ros-controls/ros2_control.git + version: master + realtime_tools: + type: git + url: https://github.com/ros-controls/realtime_tools.git + version: master