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:
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 anybuild-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 abuild-base
statement with ‘devel’ as value.Unpin any parts with
source-type
git.
Review and merge as separate commits.
Create branch
branch-YY.mm
using the first commit from step 1 as base.
Build pipeline¶
Steps to set up a build pipeline:
Go to Launchpad MicroOVN code repository and ensure required branches have been imported.
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
.