From eb3988a045dec52fce4a95f37ca44cd7b19e9a2a Mon Sep 17 00:00:00 2001 From: Alistair English Date: Mon, 6 Apr 2026 09:03:50 +1000 Subject: [PATCH] change to inline distro support model Signed-off-by: Alistair English --- .github/workflows/ci.yml | 24 ++---------------------- README.md | 22 ++++++---------------- 2 files changed, 8 insertions(+), 38 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c876fc9..be63557 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,34 +3,14 @@ name: ci on: pull_request: push: - branches: [main, humble, jazzy, kilted] + branches: [main] jobs: - setup: - runs-on: ubuntu-latest - outputs: - distros: ${{ steps.set-distros.outputs.distros }} - steps: - - id: set-distros - run: | - # For PRs, use the target branch; for pushes, use the branch name - BRANCH="${{ github.base_ref || github.ref_name }}" - if [[ "$BRANCH" == "humble" ]]; then - echo 'distros=["humble"]' >> "$GITHUB_OUTPUT" - elif [[ "$BRANCH" == "jazzy" ]]; then - echo 'distros=["jazzy"]' >> "$GITHUB_OUTPUT" - elif [[ "$BRANCH" == "kilted" ]]; then - echo 'distros=["kilted"]' >> "$GITHUB_OUTPUT" - else - echo 'distros=["jazzy","kilted"]' >> "$GITHUB_OUTPUT" - fi - build-and-test: - needs: setup runs-on: ubuntu-latest strategy: matrix: - ros_distro: ${{ fromJson(needs.setup.outputs.distros) }} + ros_distro: [humble, jazzy, kilted] fail-fast: false name: build (${{ matrix.ros_distro }}) steps: diff --git a/README.md b/README.md index 5436416..0688cc0 100644 --- a/README.md +++ b/README.md @@ -1586,27 +1586,17 @@ All pull requests are checked for DCO sign-off via CI. Commits without a `Signed ### Branching Strategy -Development happens on `main`. Each supported ROS distro has a dedicated branch (e.g., `humble`, `jazzy`) that is **continuously rebased** onto `main`. +All supported ROS distros build from a single `main` branch. There are no per-distro branches. Distro differences are expressed inline in the code (C++ `#if` on rclcpp version macros, Python `try/except ImportError`, CMake version checks, `package.xml` format-3 `condition` attributes) and distro support is exercised as a CI matrix over `{humble, jazzy, kilted}`. -``` -main: A --- B --- C --- D - \ -humble: D --- H1 --- H2 (distro-specific patches) -jazzy: D --- J1 (distro-specific patches) -``` - -**How it works:** +Releases are ordinary tags on `main` (e.g. `v0.4.0`), consumed by bloom and conda as a matrix over distros from the same tag. -- All new features and bug fixes are developed against `main` via pull requests. -- Distro branches carry a small number of distro-specific patches (e.g., API compatibility shims, version pins) as commits on top of `main`. -- After `main` advances, distro branches are rebased onto it, keeping the patches at the tip. -- Distro branches are **force-pushed** after each rebase. +For the full rationale, design, and migration notes, see [`docs/branching-and-releases.md`](docs/branching-and-releases.md). **Guidelines for contributors:** -- For general features and fixes, base your branch on `main` and open your PR against `main`. -- For distro-specific fixes, base your branch on the target distro branch and open your PR directly against it. Distro PRs are **squash-merged** to keep the patch stack clean for rebasing. -- Do not merge distro branches into `main` or vice versa — the relationship is always rebase, never merge. +- Base your branch on `main` and open your PR against `main`. +- PR CI runs the build+test pipeline per distro. `jazzy` and `kilted` are required checks; `humble` currently runs non-blocking while we work through its remaining failures. +- If your change needs a distro-specific accommodation, add it inline at the point of difference rather than in a separate branch. ## License