MicroOVN Release Process

Release Strategy

MicroOVN feature development takes place on the “main” branch.

The main branch has snapcraft.yaml set up to use the base for the next core version, and a build-base set to ‘devel’, which sources stage packages from the most recent Ubuntu development release. The test suite will automatically handle installing the base from the ‘edge’ channel when required.

Stable MicroOVN releases follow the Ubuntu release cycle, and a new stable version is made shortly after each new Ubuntu LTS release.

The stable branches are named “branch-YY.MM”, where the numbers come from the corresponding upstream OVN version string, for example: “branch-24.03”.

Release Numbering

The main component of the MicroOVN snap is OVN, consequently the main component of the snap version string come from the upstream version string of the OVN binary embedded in the snap.

The binaries in the snap are sourced from the deb package in the Ubuntu version corresponding to the Ubuntu Core build base, typically the most recent Ubuntu LTS release.

Our build pipeline is configured in Launchpad, and the MicroOVN snap recipes are configured to automatically build and publish the snap for supported channels. Builds are triggered whenever relevant packages in the source Ubuntu release change, or when the relevant branch in the MicroOVN GitHub repository changes.

To allow quick identification of the snap artefact in use, an abbreviated commit hash from the microovn Git repository, is appended to the version string.

The full package version string for all embedded packages can be retrieved by issuing the microovn --version command on a system with the snap installed.

Stable Branches

We go out of our way to embed logic in the product itself, its test suite and CI pipeline to avoid manual effort on each new release.

Steps to cut a stable branch:

  1. Create a PR named “Prepare for YY.MM” that contains two (or more) commits.

    • First commit

      • Set base to a stable version of core and remove any build-base statements.

      • Pin any parts with source-type git to the most recent stable version available.

    • Second commit

      • Set base back to a edge version of core (when available), and add a build-base statement with ‘devel’ as value.

      • Unpin any parts with source-type git.

  2. Review and merge as separate commits.

  3. Create branch branch-YY.mm using the first commit from step 1 as base.

Build pipeline

Steps to set up a build pipeline:

  1. Go to Launchpad MicroOVN code repository and ensure required branches have been imported.

  2. Create new MicroOVN snap package recipe make sure to populate fields:

    • Owner: ubuntu-ovn-eng.

    • Git repository and branch.

    • Processors: amd64, arm64, ppc64el, riscv64, s390x.

    • Automatically build when branch changes.

    • Automatically upload to store.

      • Track that corresponds with branch.

      • Risk: edge.