Skip to content

proposal: Rotary release repos #1446

@azeey

Description

@azeey

Supplemental to #1403

Based on discussion between myself and @scpeters.

Overview

We propose creating {package}-rotary-release repos for each package in a Gazebo collection for the purpose of releasing packages from main branches of each source repo. These release repos will contain debian metadata for unversioned Gazebo packages (e.g. libgz-math-dev) and aliases to these packages with the rotary label (e.g. libgz-rotary-math-dev). packages.apt files in each source repo will use the rotary aliases.

The benefits of this are:

  • The rotary version follows a similar pattern as our other versions that use numbers. Our tooling is likely to handle this with little or no modification
  • When it is time to branch-off and create versioned release repos, it would be easier to fork the *-rotary-release repos and make changes.

Implementation Steps

Initial implementation

  • Remove versions from control files. The packages as well as the Gazebo dependencies will be unversioned.
  • Add rotary aliases pointing to the unversioned packages
  • Remove versions from rules. This may not be trivial as some commands might need versioned directories for destination paths (e.g. https://github.com/gazebo-release/gz-sim11-release/blob/2277953bdfad71f10c39a1dc18a2833b09e0af2e/ubuntu/debian/rules#L35)
  • Make nightly releases from rotary. We'll need to modify ignition_collection.dsl. Simply changing gz_nightly = 'rotary' won't work because the debbuilder names are computed as {package}{major version}-debbuilder.
  • Bump main source branches to new major versions
  • Update package.apt files use rotary packages

At branch-off

  • For each package, fork the {package}-rotary-release repo and modify the control files to include the major version number. See Strategy for major version bumps in new collections #1403 (comment) Phase 3 about deciding which major version to use. We'll need to have a script that automates this process.
  • As we create stable branches in source packages, use the same rotary -> versioned package mapping to update packages in packages.apt. -
  • Update gz-collection.yaml, gazebodistro and homebrew so that the new (about to be released) collection points to the stable branches and each of the corresponding packages depend on versioned packages (not aliases).

Next release cycle

  • No change to {package}-rotary-release repos
  • Bump major version numbers in main, but no change in packages.apt
  • Follow the same steps from branching off as above.

Alternatives Discussed

Do what we normally do, which is create new release repos with bumped version numbers. Create a gz-rotary-release release repo which will contain aliases to all the versioned packages from main branches (e.g. libgz-rotary-math-dev). These will then be used in packages.apt files in source repos. Downsides of this approach:

  • gz-rotary-release will need to be updated every year because it points to versioned packages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions